latin1.js (2851B)
1 function assertLatin1(s) { 2 assertEq(isLatin1(s), true, "String: " + s); 3 } 4 5 // string literals 6 assertLatin1(""); 7 assertLatin1("x"); 8 assertLatin1("xy"); 9 assertLatin1("while"); 10 assertLatin1("xyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\u00ff."); 11 assertLatin1("-1"); 12 assertLatin1("50"); 13 assertLatin1("873939"); 14 assertLatin1("12.34"); 15 assertLatin1("NaN"); 16 17 // int32 18 assertLatin1(String(1)); 19 assertLatin1("" + 40); 20 assertLatin1(String(873939)); 21 assertLatin1(String(-1)); 22 assertLatin1((-12983).toString()); 23 assertLatin1(20..toString(16)); 24 assertLatin1((-20).toString(12)); 25 assertLatin1(12121..toString(16)); 26 assertLatin1(12144..toString(2)); 27 28 // doubles 29 assertLatin1(String(12.34)); 30 assertLatin1(45.6.toString(16)); 31 assertLatin1(String(-0)); 32 assertLatin1(NaN.toString()); 33 assertLatin1("" + -Infinity); 34 assertLatin1("a" + 85899345929); 35 36 // other types 37 assertLatin1(true.toString()); 38 assertLatin1(String(false)); 39 assertLatin1(String(null)); 40 assertLatin1(String(undefined)); 41 42 // objects 43 assertLatin1(Math.toString()); 44 assertLatin1(({x:1}).toString()); 45 if (Object.prototype.toSource) { 46 assertLatin1(({x:"foo"}).toSource()); 47 } 48 assertLatin1([1, "bar"].toString()); 49 50 // typeof 51 assertLatin1(typeof "foo"); 52 assertLatin1(typeof assertEq); 53 54 // join 55 assertLatin1([1, "foo", null, true].join()); 56 assertLatin1([1, "foo", null, true].join(":")); 57 58 // JSON 59 assertLatin1(JSON.stringify({x:1,y:"bar",z:[null],1281298:Math.PI})); 60 assertLatin1(JSON.stringify([1, 2, 3], null, "foo")); 61 assertLatin1(JSON.stringify({x:1,y:"bar"}, function(k, v) { 62 assertLatin1(k); 63 return v; 64 })); 65 var arr = [1, 2, 3]; arr.length = 300; 66 assertLatin1(JSON.stringify(arr, function(k, v) { 67 assertLatin1(k); 68 return v; 69 })); 70 71 // Date 72 assertLatin1(new Date().toString()); 73 assertLatin1(new Date().toISOString()); 74 assertLatin1(Date()); 75 76 // native functions 77 assertLatin1(Math.abs.toString()); 78 assertLatin1(Object.getOwnPropertyNames.name); 79 80 // scripted functions 81 function fun1(a, b) { return ["foo\xAA"]; } 82 assertLatin1(fun1.toString()); 83 assertLatin1(fun1.name); 84 85 // fromCharCode 86 assertLatin1(String.fromCharCode(99)); 87 assertLatin1(String.fromCharCode(99, 0xff, 1)); 88 89 // charAt 90 assertLatin1("foo\u00ff\u1200".charAt(3)); 91 92 // RegExps 93 var re = /a\.*b[cC]+/g; 94 assertLatin1(re.source); 95 assertLatin1(re.toString()); 96 97 // For-in 98 var o = {x: 1, y: 2, z\u00ff: 3, 987654: 4, 22: 5}; 99 for (var prop in o) 100 assertLatin1(prop); 101 102 // Object.keys 103 assertLatin1(Object.keys(o)[2]); 104 105 // Error 106 (function foo() { 107 var err; 108 try { this(); } catch(e) { err = e; } 109 assertEq(err.name, "TypeError"); 110 assertLatin1(err.name); 111 assertLatin1(err.message); 112 assertLatin1(err.stack); 113 assertLatin1(err.toString()); 114 115 try { throw new Error("foo"); } catch(e) { err = e; } 116 assertLatin1(err.name); 117 assertLatin1(err.message); 118 assertLatin1(err.stack); 119 assertLatin1(err.toString()); 120 })();