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

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 // |reftest| skip-if(!xulRuntime.shell||!("normalize"in(String.prototype))) -- uses shell load() function, String.prototype.normalize is not enabled in all builds
     2 var BUGNUMBER = 918987;
     3 var summary = 'String.prototype.normalize';
     5 print(BUGNUMBER + ": " + summary);
     7 /**************
     8  * BEGIN TEST *
     9  **************/
    11 load('ecma_6/String/normalize-generateddata-input.js');
    13 function codePointsToString(points) {
    14   return points.map(x => String.fromCodePoint(x)).join("");
    15 }
    16 function stringify(points) {
    17   return points.map(x => x.toString(16)).join();
    18 }
    20 function runTest(test) {
    21   var source = codePointsToString(test.source);
    22   var NFC = codePointsToString(test.NFC);
    23   var NFD = codePointsToString(test.NFD);
    24   var NFKC = codePointsToString(test.NFKC);
    25   var NFKD = codePointsToString(test.NFKD);
    26   var sourceStr = stringify(test.source);
    27   var nfcStr = stringify(test.NFC);
    28   var nfdStr = stringify(test.NFD);
    29   var nfkcStr = stringify(test.NFKC);
    30   var nfkdStr = stringify(test.NFKD);
    32   /* NFC */
    33   assertEq(source.normalize(), NFC, "NFC of " + sourceStr);
    34   assertEq(NFC.normalize(), NFC, "NFC of " + nfcStr);
    35   assertEq(NFD.normalize(), NFC, "NFC of " + nfdStr);
    36   assertEq(NFKC.normalize(), NFKC, "NFC of " + nfkcStr);
    37   assertEq(NFKD.normalize(), NFKC, "NFC of " + nfkdStr);
    39   assertEq(source.normalize(undefined), NFC, "NFC of " + sourceStr);
    40   assertEq(NFC.normalize(undefined), NFC, "NFC of " + nfcStr);
    41   assertEq(NFD.normalize(undefined), NFC, "NFC of " + nfdStr);
    42   assertEq(NFKC.normalize(undefined), NFKC, "NFC of " + nfkcStr);
    43   assertEq(NFKD.normalize(undefined), NFKC, "NFC of " + nfkdStr);
    45   assertEq(source.normalize("NFC"), NFC, "NFC of " + sourceStr);
    46   assertEq(NFC.normalize("NFC"), NFC, "NFC of " + nfcStr);
    47   assertEq(NFD.normalize("NFC"), NFC, "NFC of " + nfdStr);
    48   assertEq(NFKC.normalize("NFC"), NFKC, "NFC of " + nfkcStr);
    49   assertEq(NFKD.normalize("NFC"), NFKC, "NFC of " + nfkdStr);
    51   /* NFD */
    52   assertEq(source.normalize("NFD"), NFD, "NFD of " + sourceStr);
    53   assertEq(NFC.normalize("NFD"), NFD, "NFD of " + nfcStr);
    54   assertEq(NFD.normalize("NFD"), NFD, "NFD of " + nfdStr);
    55   assertEq(NFKC.normalize("NFD"), NFKD, "NFD of " + nfkcStr);
    56   assertEq(NFKD.normalize("NFD"), NFKD, "NFD of " + nfkdStr);
    58   /* NFKC */
    59   assertEq(source.normalize("NFKC"), NFKC, "NFKC of " + sourceStr);
    60   assertEq(NFC.normalize("NFKC"), NFKC, "NFKC of " + nfcStr);
    61   assertEq(NFD.normalize("NFKC"), NFKC, "NFKC of " + nfdStr);
    62   assertEq(NFKC.normalize("NFKC"), NFKC, "NFKC of " + nfkcStr);
    63   assertEq(NFKD.normalize("NFKC"), NFKC, "NFKC of " + nfkdStr);
    65   /* NFKD */
    66   assertEq(source.normalize("NFKD"), NFKD, "NFKD of " + sourceStr);
    67   assertEq(NFC.normalize("NFKD"), NFKD, "NFKD of " + nfcStr);
    68   assertEq(NFD.normalize("NFKD"), NFKD, "NFKD of " + nfdStr);
    69   assertEq(NFKC.normalize("NFKD"), NFKD, "NFKD of " + nfkcStr);
    70   assertEq(NFKD.normalize("NFKD"), NFKD, "NFKD of " + nfkdStr);
    71 }
    73 for (var test0 of tests_part0) {
    74   runTest(test0);
    75 }
    76 var part1 = new Set();
    77 for (var test1 of tests_part1) {
    78   part1.add(test1.source[0]);
    79   runTest(test1);
    80 }
    81 for (var test2 of tests_part2) {
    82   runTest(test2);
    83 }
    84 for (var test3 of tests_part3) {
    85   runTest(test3);
    86 }
    88 /* not listed in Part 1 */
    89 for (var x = 0; x <= 0x2FFFF; x++) {
    90   if (part1.has(x)) {
    91     continue;
    92   }
    93   var xstr = x.toString(16);
    94   var c = String.fromCodePoint(x);
    95   assertEq(c.normalize(), c, "NFC of " + xstr);
    96   assertEq(c.normalize(undefined), c, "NFC of " + xstr);
    97   assertEq(c.normalize("NFC"), c, "NFC of " + xstr);
    98   assertEq(c.normalize("NFD"), c, "NFD of " + xstr);
    99   assertEq(c.normalize("NFKC"), c, "NFKC of " + xstr);
   100   assertEq(c.normalize("NFKD"), c, "NFKD of " + xstr);
   101 }
   103 var myobj = {toString : (function () "a\u0301"), normalize : String.prototype.normalize};
   104 assertEq(myobj.normalize(), "\u00E1");
   106 assertThrowsInstanceOf(function() {
   107                          "abc".normalize("NFE");
   108                        }, RangeError,
   109                        "String.prototype.normalize should raise RangeError on invalid form");
   111 assertEq("".normalize(), "");
   113 /* JSRope test */
   114 var a = "";
   115 var b = "";
   116 for (var i = 0; i < 100; i++) {
   117   a += "\u0100";
   118   b += "\u0041\u0304";
   119 }
   120 assertEq(a.normalize("NFD"), b);
   122 /******************************************************************************/
   124 if (typeof reportCompare === "function")
   125   reportCompare(true, true);
   126 print("Tests complete");

mercurial