js/src/tests/Intl/Collator/compare.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(!this.hasOwnProperty("Intl"))
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 // Tests the compare function with a diverse set of locales and options.
     8 var input = [
     9     "Argentina",
    10     "Oerlikon",
    11     "Offenbach",
    12     "Sverige",
    13     "Vaticano",
    14     "Zimbabwe",
    15     "la France",
    16     "¡viva España!",
    17     "Österreich",
    18     "中国",
    19     "日本",
    20     "한국",
    21 ];
    23 var collator, expected;
    25 function assertEqualArray(actual, expected, collator) {
    26     var description = JSON.stringify(collator.resolvedOptions());
    27     assertEq(actual.length, expected.length, "array length, " + description);
    28     for (var i = 0; i < actual.length; i++) {
    29         assertEq(actual[i], expected[i], "element " + i + ", " + description);
    30     }
    31 }
    34 // Locale en-US; default options.
    35 collator = new Intl.Collator("en-US");
    36 expected = [
    37     "¡viva España!",
    38     "Argentina",
    39     "la France",
    40     "Oerlikon",
    41     "Offenbach",
    42     "Österreich",
    43     "Sverige",
    44     "Vaticano",
    45     "Zimbabwe",
    46     "한국",
    47     "中国",
    48     "日本",
    49 ];
    50 assertEqualArray(input.sort(collator.compare), expected, collator);
    52 // Locale sv-SE; default options.
    53 // Swedish treats "Ö" as a separate character, which sorts after "Z".
    54 collator = new Intl.Collator("sv-SE");
    55 expected = [
    56     "¡viva España!",
    57     "Argentina",
    58     "la France",
    59     "Oerlikon",
    60     "Offenbach",
    61     "Sverige",
    62     "Vaticano",
    63     "Zimbabwe",
    64     "Österreich",
    65     "한국",
    66     "中国",
    67     "日本",
    68 ];
    69 assertEqualArray(input.sort(collator.compare), expected, collator);
    71 // Locale sv-SE; ignore punctuation.
    72 collator = new Intl.Collator("sv-SE", {ignorePunctuation: true});
    73 expected = [
    74     "Argentina",
    75     "la France",
    76     "Oerlikon",
    77     "Offenbach",
    78     "Sverige",
    79     "Vaticano",
    80     "¡viva España!",
    81     "Zimbabwe",
    82     "Österreich",
    83     "한국",
    84     "中国",
    85     "日本",
    86 ];
    87 assertEqualArray(input.sort(collator.compare), expected, collator);
    89 // Locale de-DE; default options.
    90 // In German standard sorting, umlauted characters are treated as variants
    91 // of their base characters: ä ≅ a, ö ≅ o, ü ≅ u.
    92 collator = new Intl.Collator("de-DE");
    93 expected = [
    94     "¡viva España!",
    95     "Argentina",
    96     "la France",
    97     "Oerlikon",
    98     "Offenbach",
    99     "Österreich",
   100     "Sverige",
   101     "Vaticano",
   102     "Zimbabwe",
   103     "한국",
   104     "中国",
   105     "日本",
   106 ];
   107 assertEqualArray(input.sort(collator.compare), expected, collator);
   109 // Locale de-DE; phonebook sort order.
   110 // In German phonebook sorting, umlauted characters are expanded to two-vowel
   111 // sequences: ä → ae, ö → oe, ü → ue.
   112 collator = new Intl.Collator("de-DE-u-co-phonebk");
   113 expected = [
   114     "¡viva España!",
   115     "Argentina",
   116     "la France",
   117     "Oerlikon",
   118     "Österreich",
   119     "Offenbach",
   120     "Sverige",
   121     "Vaticano",
   122     "Zimbabwe",
   123     "한국",
   124     "中国",
   125     "日本",
   126 ];
   127 assertEqualArray(input.sort(collator.compare), expected, collator);
   129 reportCompare(0, 0, 'ok');

mercurial