toLowerCase-toUpperCase.js (1691B)
1 function testToLowerCase() { 2 var s1 = "abcdefgABCDEFGH 123456"; 3 assertEq(isLatin1(s1), true); 4 5 // Latin1 6 var s2 = s1.toLowerCase(); 7 assertEq(isLatin1(s2), true); 8 assertEq(s2, "abcdefgabcdefgh 123456"); 9 10 s2 = s1.toLocaleLowerCase(); 11 assertEq(isLatin1(s2), true); 12 assertEq(s2, "abcdefgabcdefgh 123456"); 13 14 // TwoByte 15 s2 = "abcdefg\u1200ABCDEFGH 123456\u04AC".toLowerCase(); 16 assertEq(s2, "abcdefg\u1200abcdefgh 123456\u04AD"); 17 18 s2 = "abcdefg\u1200ABCDEFGH 123456\u04AC".toLocaleLowerCase(); 19 assertEq(s2, "abcdefg\u1200abcdefgh 123456\u04AD"); 20 21 // For toLowerCase, every Latin1 character maps to a Latin1 character. 22 for (var i=0; i <= 0xff; i++) { 23 var s = "\u1200\u11AA" + String.fromCharCode(i); 24 assertEq(s.toLowerCase().charCodeAt(2) <= 0xff, true); 25 } 26 } 27 testToLowerCase(); 28 29 function testToUpperCase() { 30 var s1 = "abcdefgABCDEFGH 12345"; 31 assertEq(isLatin1(s1), true); 32 33 // Latin1 34 var s2 = s1.toUpperCase(); 35 assertEq(isLatin1(s2), true); 36 assertEq(s2, "ABCDEFGABCDEFGH 12345"); 37 38 s2 = s1.toLocaleUpperCase(); 39 assertEq(isLatin1(s2), true); 40 assertEq(s2, "ABCDEFGABCDEFGH 12345"); 41 42 // TwoByte 43 s2 = "abcdefg\u1200ABCDEFGH 12345\u1E0F".toUpperCase(); 44 assertEq(s2, "ABCDEFG\u1200ABCDEFGH 12345\u1E0E"); 45 46 s2 = "abcdefg\u1200ABCDEFGH 12345\u1E0F".toLocaleUpperCase(); 47 assertEq(s2, "ABCDEFG\u1200ABCDEFGH 12345\u1E0E"); 48 49 // Tricky case: Latin1 character \u00FF maps to \u0178, a 50 // non-Latin1 character. 51 s1 = "ABC\u00FF"; 52 assertEq(isLatin1(s1), true); 53 s2 = s1.toUpperCase(); 54 assertEq(isLatin1(s2), false); 55 assertEq(s2, "ABC\u0178"); 56 } 57 testToUpperCase();