1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/ecma_6/String/normalize-generateddata.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,126 @@ 1.4 +// |reftest| skip-if(!xulRuntime.shell||!("normalize"in(String.prototype))) -- uses shell load() function, String.prototype.normalize is not enabled in all builds 1.5 +var BUGNUMBER = 918987; 1.6 +var summary = 'String.prototype.normalize'; 1.7 + 1.8 +print(BUGNUMBER + ": " + summary); 1.9 + 1.10 +/************** 1.11 + * BEGIN TEST * 1.12 + **************/ 1.13 + 1.14 +load('ecma_6/String/normalize-generateddata-input.js'); 1.15 + 1.16 +function codePointsToString(points) { 1.17 + return points.map(x => String.fromCodePoint(x)).join(""); 1.18 +} 1.19 +function stringify(points) { 1.20 + return points.map(x => x.toString(16)).join(); 1.21 +} 1.22 + 1.23 +function runTest(test) { 1.24 + var source = codePointsToString(test.source); 1.25 + var NFC = codePointsToString(test.NFC); 1.26 + var NFD = codePointsToString(test.NFD); 1.27 + var NFKC = codePointsToString(test.NFKC); 1.28 + var NFKD = codePointsToString(test.NFKD); 1.29 + var sourceStr = stringify(test.source); 1.30 + var nfcStr = stringify(test.NFC); 1.31 + var nfdStr = stringify(test.NFD); 1.32 + var nfkcStr = stringify(test.NFKC); 1.33 + var nfkdStr = stringify(test.NFKD); 1.34 + 1.35 + /* NFC */ 1.36 + assertEq(source.normalize(), NFC, "NFC of " + sourceStr); 1.37 + assertEq(NFC.normalize(), NFC, "NFC of " + nfcStr); 1.38 + assertEq(NFD.normalize(), NFC, "NFC of " + nfdStr); 1.39 + assertEq(NFKC.normalize(), NFKC, "NFC of " + nfkcStr); 1.40 + assertEq(NFKD.normalize(), NFKC, "NFC of " + nfkdStr); 1.41 + 1.42 + assertEq(source.normalize(undefined), NFC, "NFC of " + sourceStr); 1.43 + assertEq(NFC.normalize(undefined), NFC, "NFC of " + nfcStr); 1.44 + assertEq(NFD.normalize(undefined), NFC, "NFC of " + nfdStr); 1.45 + assertEq(NFKC.normalize(undefined), NFKC, "NFC of " + nfkcStr); 1.46 + assertEq(NFKD.normalize(undefined), NFKC, "NFC of " + nfkdStr); 1.47 + 1.48 + assertEq(source.normalize("NFC"), NFC, "NFC of " + sourceStr); 1.49 + assertEq(NFC.normalize("NFC"), NFC, "NFC of " + nfcStr); 1.50 + assertEq(NFD.normalize("NFC"), NFC, "NFC of " + nfdStr); 1.51 + assertEq(NFKC.normalize("NFC"), NFKC, "NFC of " + nfkcStr); 1.52 + assertEq(NFKD.normalize("NFC"), NFKC, "NFC of " + nfkdStr); 1.53 + 1.54 + /* NFD */ 1.55 + assertEq(source.normalize("NFD"), NFD, "NFD of " + sourceStr); 1.56 + assertEq(NFC.normalize("NFD"), NFD, "NFD of " + nfcStr); 1.57 + assertEq(NFD.normalize("NFD"), NFD, "NFD of " + nfdStr); 1.58 + assertEq(NFKC.normalize("NFD"), NFKD, "NFD of " + nfkcStr); 1.59 + assertEq(NFKD.normalize("NFD"), NFKD, "NFD of " + nfkdStr); 1.60 + 1.61 + /* NFKC */ 1.62 + assertEq(source.normalize("NFKC"), NFKC, "NFKC of " + sourceStr); 1.63 + assertEq(NFC.normalize("NFKC"), NFKC, "NFKC of " + nfcStr); 1.64 + assertEq(NFD.normalize("NFKC"), NFKC, "NFKC of " + nfdStr); 1.65 + assertEq(NFKC.normalize("NFKC"), NFKC, "NFKC of " + nfkcStr); 1.66 + assertEq(NFKD.normalize("NFKC"), NFKC, "NFKC of " + nfkdStr); 1.67 + 1.68 + /* NFKD */ 1.69 + assertEq(source.normalize("NFKD"), NFKD, "NFKD of " + sourceStr); 1.70 + assertEq(NFC.normalize("NFKD"), NFKD, "NFKD of " + nfcStr); 1.71 + assertEq(NFD.normalize("NFKD"), NFKD, "NFKD of " + nfdStr); 1.72 + assertEq(NFKC.normalize("NFKD"), NFKD, "NFKD of " + nfkcStr); 1.73 + assertEq(NFKD.normalize("NFKD"), NFKD, "NFKD of " + nfkdStr); 1.74 +} 1.75 + 1.76 +for (var test0 of tests_part0) { 1.77 + runTest(test0); 1.78 +} 1.79 +var part1 = new Set(); 1.80 +for (var test1 of tests_part1) { 1.81 + part1.add(test1.source[0]); 1.82 + runTest(test1); 1.83 +} 1.84 +for (var test2 of tests_part2) { 1.85 + runTest(test2); 1.86 +} 1.87 +for (var test3 of tests_part3) { 1.88 + runTest(test3); 1.89 +} 1.90 + 1.91 +/* not listed in Part 1 */ 1.92 +for (var x = 0; x <= 0x2FFFF; x++) { 1.93 + if (part1.has(x)) { 1.94 + continue; 1.95 + } 1.96 + var xstr = x.toString(16); 1.97 + var c = String.fromCodePoint(x); 1.98 + assertEq(c.normalize(), c, "NFC of " + xstr); 1.99 + assertEq(c.normalize(undefined), c, "NFC of " + xstr); 1.100 + assertEq(c.normalize("NFC"), c, "NFC of " + xstr); 1.101 + assertEq(c.normalize("NFD"), c, "NFD of " + xstr); 1.102 + assertEq(c.normalize("NFKC"), c, "NFKC of " + xstr); 1.103 + assertEq(c.normalize("NFKD"), c, "NFKD of " + xstr); 1.104 +} 1.105 + 1.106 +var myobj = {toString : (function () "a\u0301"), normalize : String.prototype.normalize}; 1.107 +assertEq(myobj.normalize(), "\u00E1"); 1.108 + 1.109 +assertThrowsInstanceOf(function() { 1.110 + "abc".normalize("NFE"); 1.111 + }, RangeError, 1.112 + "String.prototype.normalize should raise RangeError on invalid form"); 1.113 + 1.114 +assertEq("".normalize(), ""); 1.115 + 1.116 +/* JSRope test */ 1.117 +var a = ""; 1.118 +var b = ""; 1.119 +for (var i = 0; i < 100; i++) { 1.120 + a += "\u0100"; 1.121 + b += "\u0041\u0304"; 1.122 +} 1.123 +assertEq(a.normalize("NFD"), b); 1.124 + 1.125 +/******************************************************************************/ 1.126 + 1.127 +if (typeof reportCompare === "function") 1.128 + reportCompare(true, true); 1.129 +print("Tests complete");