summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Intl/unicode-bcp47-locale-ids-grandfathered.js
blob: 028127f1105583d6ecb6b176efb4ae4c4f761769 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// |reftest| skip-if(!this.hasOwnProperty("Intl"))

// Unicode BCP 47 locale identifiers don't support irregular grandfathered tags.
var irregularGrandfathered = [
    "en-gb-oed",
    "i-ami",
    "i-bnn",
    "i-default",
    "i-enochian",
    "i-hak",
    "i-klingon",
    "i-lux",
    "i-mingo",
    "i-navajo",
    "i-pwn",
    "i-tao",
    "i-tay",
    "i-tsu",
    "sgn-be-fr",
    "sgn-be-nl",
    "sgn-ch-de",
];

// Unicode BCP 47 locale identifiers don't support regular grandfathered tags
// which contain an extlang-like subtag.
var regularGrandfatheredWithExtlangLike = [
    "no-bok",
    "no-nyn",
    "zh-min",
    "zh-min-nan",
];

// Unicode BCP 47 locale identifiers do support regular grandfathered tags
// which contain a variant-like subtag.
var regularGrandfatheredWithVariantLike = {
    "art-lojban": "jbo",
    "cel-gaulish": "xtg-x-cel-gaulish",
    "zh-guoyu": "zh",
    "zh-hakka": "hak",
    "zh-xiang": "hsn",
};

for (let locale of [...irregularGrandfathered, ...regularGrandfatheredWithExtlangLike]) {
    assertThrowsInstanceOf(() => Intl.getCanonicalLocales(locale), RangeError);
}

for (let [locale, canonical] of Object.entries(regularGrandfatheredWithVariantLike)) {
    assertEq(Intl.getCanonicalLocales(locale)[0], canonical);
}

if (typeof reportCompare === "function")
    reportCompare(true, true);