js/src/tests/ecma_6/String/normalize-generateddata.js

changeset 0
6474c204b198
     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");

mercurial