tor-browser

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

transformed-ext-invalid.js (2007B)


      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  A RangeError is thrown when a language tag includes an invalid transformed extension subtag.
      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        ...
     21 
     22 includes: [testIntl.js]
     23 ---*/
     24 
     25 const invalid = [
     26  // empty
     27  "en-t",
     28  "en-t-a",
     29  "en-t-x",
     30  "en-t-0",
     31 
     32  // incomplete
     33  "en-t-",
     34  "en-t-en-",
     35  "en-t-0x-",
     36 
     37  // tlang: unicode_language_subtag must be 2-3 or 5-8 characters and mustn't
     38  // contain extlang subtags.
     39  "en-t-root",
     40  "en-t-abcdefghi",
     41  "en-t-ar-aao",
     42 
     43  // tlang: unicode_script_subtag must be 4 alphabetical characters, can't
     44  // be repeated.
     45  "en-t-en-lat0",
     46  "en-t-en-latn-latn",
     47 
     48  // tlang: unicode_region_subtag must either be 2 alpha characters or a three
     49  // digit code.
     50  "en-t-en-0",
     51  "en-t-en-00",
     52  "en-t-en-0x",
     53  "en-t-en-x0",
     54  "en-t-en-latn-0",
     55  "en-t-en-latn-00",
     56  "en-t-en-latn-xyz",
     57 
     58  // tlang: unicode_variant_subtag is either 5-8 alphanum characters or 4
     59  // characters starting with a digit.
     60  "en-t-en-abcdefghi",
     61  "en-t-en-latn-gb-ab",
     62  "en-t-en-latn-gb-abc",
     63  "en-t-en-latn-gb-abcd",
     64  "en-t-en-latn-gb-abcdefghi",
     65 
     66  // tkey must be followed by tvalue.
     67  "en-t-d0",
     68  "en-t-d0-m0",
     69  "en-t-d0-x-private",
     70 ];
     71 
     72 for (let tag of invalid) {
     73  // Make sure the test data is correct.
     74  assert.sameValue(isCanonicalizedStructurallyValidLanguageTag(tag), false,
     75                   "\"" + tag + "\" isn't a structurally valid language tag.");
     76 
     77  assert.throws(RangeError, () => Intl.getCanonicalLocales(tag), `${tag}`);
     78 }
     79 
     80 reportCompare(0, 0);