tor-browser

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

transformed-ext-canonical.js (1822B)


      1 // Copyright (C) 2020 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-intl.getcanonicallocales
      6 description: >
      7  Test canonicalisation within transformed extension subtags.
      8 info: |
      9  8.2.1 Intl.getCanonicalLocales (locales)
     10    1. Let ll be ? CanonicalizeLocaleList(locales).
     11    2. Return CreateArrayFromList(ll).
     12 
     13  9.2.1 CanonicalizeLocaleList (locales)
     14    ...
     15    7. Repeat, while k < len
     16      ...
     17      c. If kPresent is true, then
     18        ...
     19        v. If IsStructurallyValidLanguageTag(tag) is false, throw a RangeError exception.
     20        vi. Let canonicalizedTag be CanonicalizeUnicodeLocaleId(tag).
     21        ...
     22 
     23 includes: [testIntl.js]
     24 ---*/
     25 
     26 const testData = {
     27  // Variant subtags are alphabetically ordered.
     28  "sl-t-sl-rozaj-biske-1994": "sl-t-sl-1994-biske-rozaj",
     29 
     30  // tfield subtags are alphabetically ordered.
     31  // (Also tests subtag case normalisation.)
     32  "DE-T-M0-DIN-K0-QWERTZ": "de-t-k0-qwertz-m0-din",
     33 
     34  // "true" tvalue subtags aren't removed.
     35  // (UTS 35 version 36, §3.2.1 claims otherwise, but tkey must be followed by
     36  // tvalue, so that's likely a spec bug in UTS 35.)
     37  "en-t-m0-true": "en-t-m0-true",
     38 
     39  // tlang subtags are canonicalised.
     40  "en-t-iw": "en-t-he",
     41 
     42  // Deprecated tvalue subtags are replaced by their preferred value.
     43  "und-Latn-t-und-hani-m0-names": "und-Latn-t-und-hani-m0-prprname",
     44 };
     45 
     46 for (let [tag, canonical] of Object.entries(testData)) {
     47  // Make sure the test data is correct.
     48  assert(isCanonicalizedStructurallyValidLanguageTag(canonical),
     49         "\"" + canonical + "\" is a canonical and structurally valid language tag.");
     50 
     51  let result = Intl.getCanonicalLocales(tag);
     52  assert.sameValue(result.length, 1);
     53  assert.sameValue(result[0], canonical);
     54 }
     55 
     56 reportCompare(0, 0);