tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

unicode-bcp47-locale-ids-transformed-ext.js (2244B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 
      3 const invalid = [
      4    // empty
      5    "en-t",
      6    "en-t-a",
      7    "en-t-x",
      8    "en-t-0",
      9 
     10    // incomplete
     11    "en-t-",
     12    "en-t-en-",
     13    "en-t-0x-",
     14 
     15    // tlang: unicode_language_subtag must be 2-3 or 5-8 characters and mustn't
     16    // contain extlang subtags.
     17    "en-t-root",
     18    "en-t-abcdefghi",
     19    "en-t-ar-aao",
     20 
     21    // tlang: unicode_script_subtag must be 4 alphabetical characters, can't
     22    // be repeated.
     23    "en-t-en-lat0",
     24    "en-t-en-latn-latn",
     25 
     26    // tlang: unicode_region_subtag must either be 2 alpha characters or a three
     27    // digit code.
     28    "en-t-en-0",
     29    "en-t-en-00",
     30    "en-t-en-0x",
     31    "en-t-en-x0",
     32    "en-t-en-latn-0",
     33    "en-t-en-latn-00",
     34    "en-t-en-latn-xyz",
     35 
     36    // tlang: unicode_variant_subtag is either 5-8 alphanum characters or 4
     37    // characters starting with a digit.
     38    "en-t-en-abcdefghi",
     39    "en-t-en-latn-gb-ab",
     40    "en-t-en-latn-gb-abc",
     41    "en-t-en-latn-gb-abcd",
     42    "en-t-en-latn-gb-abcdefghi",
     43 ];
     44 
     45 // Canonicalisation also applies for the transformation extension. But also
     46 // see <https://github.com/tc39/ecma402/issues/330>.
     47 const valid = [
     48    {locale: "en-t-en", canonical: "en-t-en"},
     49    {locale: "en-t-en-latn", canonical: "en-t-en-latn"},
     50    {locale: "en-t-en-ca", canonical: "en-t-en-ca"},
     51    {locale: "en-t-en-latn-ca", canonical: "en-t-en-latn-ca"},
     52    {locale: "en-t-en-emodeng", canonical: "en-t-en-emodeng"},
     53    {locale: "en-t-en-latn-emodeng", canonical: "en-t-en-latn-emodeng"},
     54    {locale: "en-t-en-latn-ca-emodeng", canonical: "en-t-en-latn-ca-emodeng"},
     55    {locale: "sl-t-sl-rozaj-biske-1994", canonical: "sl-t-sl-1994-biske-rozaj"},
     56    {locale: "DE-T-M0-DIN-K0-QWERTZ", canonical: "de-t-k0-qwertz-m0-din"},
     57    {locale: "en-t-m0-true", canonical: "en-t-m0-true"},
     58    {locale: "en-t-iw", canonical: "en-t-he"},
     59    {locale: "und-Latn-t-und-hani-m0-names", canonical: "und-Latn-t-und-hani-m0-prprname"},
     60 ];
     61 
     62 for (let locale of invalid) {
     63    assertThrowsInstanceOf(() => Intl.getCanonicalLocales(locale), RangeError);
     64 }
     65 
     66 for (let {locale, canonical} of valid) {
     67    assertEq(Intl.getCanonicalLocales(locale)[0], canonical);
     68 }
     69 
     70 if (typeof reportCompare === "function")
     71    reportCompare(true, true);