23 lines
1.4 KiB
JavaScript
23 lines
1.4 KiB
JavaScript
function shouldBe(actual, expected) {
|
|
if (actual !== expected)
|
|
throw new Error(`expected ${expected} but got ${actual}`);
|
|
}
|
|
|
|
// Actual default should always be a string
|
|
shouldBe(typeof new Intl.DateTimeFormat().resolvedOptions().locale, 'string');
|
|
shouldBe(typeof new Intl.NumberFormat().resolvedOptions().locale, 'string');
|
|
shouldBe(typeof new Intl.Collator().resolvedOptions().locale, 'string');
|
|
|
|
// Actual default should always be canonicalized
|
|
shouldBe(Intl.getCanonicalLocales(new Intl.DateTimeFormat().resolvedOptions().locale)[0], new Intl.DateTimeFormat().resolvedOptions().locale);
|
|
shouldBe(Intl.getCanonicalLocales(new Intl.NumberFormat().resolvedOptions().locale)[0], new Intl.NumberFormat().resolvedOptions().locale);
|
|
shouldBe(Intl.getCanonicalLocales(new Intl.Collator().resolvedOptions().locale)[0], new Intl.NumberFormat().resolvedOptions().locale);
|
|
|
|
// Any language name with less than two characters is considered invalid, so we use "a" here.
|
|
// "i-klingon" is grandfathered, and is canonicalized "tlh".
|
|
// It should not be part of any available locale sets, so we know it came from here.
|
|
$vm.setUserPreferredLanguages([ "a", "*", "en_US.utf8", "i-klingon", "en-US" ]);
|
|
shouldBe(new Intl.DateTimeFormat().resolvedOptions().locale, 'tlh');
|
|
shouldBe(new Intl.NumberFormat().resolvedOptions().locale, 'tlh');
|
|
shouldBe(new Intl.Collator().resolvedOptions().locale, 'tlh');
|