mirror of https://github.com/tc39/test262.git
79 lines
2.1 KiB
JavaScript
79 lines
2.1 KiB
JavaScript
// Copyright (C) 2020 André Bargull. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-intl.getcanonicallocales
|
|
description: >
|
|
No RangeError is thrown when a language tag includes a valid transformed extension subtag.
|
|
info: |
|
|
8.2.1 Intl.getCanonicalLocales (locales)
|
|
1. Let ll be ? CanonicalizeLocaleList(locales).
|
|
2. Return CreateArrayFromList(ll).
|
|
|
|
9.2.1 CanonicalizeLocaleList (locales)
|
|
...
|
|
7. Repeat, while k < len
|
|
...
|
|
c. If kPresent is true, then
|
|
...
|
|
v. If IsStructurallyValidLanguageTag(tag) is false, throw a RangeError exception.
|
|
vi. Let canonicalizedTag be CanonicalizeUnicodeLocaleId(tag).
|
|
...
|
|
|
|
includes: [testIntl.js]
|
|
---*/
|
|
|
|
const valid = [
|
|
// tlang with unicode_language_subtag.
|
|
"en-t-en",
|
|
|
|
// tlang with unicode_script_subtag.
|
|
"en-t-en-latn",
|
|
|
|
// tlang with unicode_region_subtag.
|
|
"en-t-en-ca",
|
|
|
|
// tlang with unicode_script_subtag and unicode_region_subtag.
|
|
"en-t-en-latn-ca",
|
|
|
|
// tlang with unicode_variant_subtag.
|
|
"en-t-en-emodeng",
|
|
|
|
// tlang with unicode_script_subtag and unicode_variant_subtag.
|
|
"en-t-en-latn-emodeng",
|
|
|
|
// tlang with unicode_script_subtag and unicode_variant_subtag.
|
|
"en-t-en-ca-emodeng",
|
|
|
|
// tlang with unicode_script_subtag, unicode_region_subtag, and unicode_variant_subtag.
|
|
"en-t-en-latn-ca-emodeng",
|
|
|
|
// No tlang. (Must contain at least one tfield.)
|
|
"en-t-d0-ascii",
|
|
];
|
|
|
|
const extraFields = [
|
|
// No extra tfield
|
|
"",
|
|
|
|
// tfield with a tvalue consisting of a single subtag.
|
|
"-i0-handwrit",
|
|
|
|
// tfield with a tvalue consisting of two subtags.
|
|
"-s0-accents-publish",
|
|
];
|
|
|
|
for (let tag of valid) {
|
|
for (let extra of extraFields) {
|
|
let actualTag = tag + extra;
|
|
|
|
// Make sure the test data is correct.
|
|
assert(isCanonicalizedStructurallyValidLanguageTag(actualTag),
|
|
"\"" + actualTag + "\" is a canonical and structurally valid language tag.");
|
|
|
|
let result = Intl.getCanonicalLocales(actualTag);
|
|
assert.sameValue(result.length, 1);
|
|
assert.sameValue(result[0], actualTag);
|
|
}
|
|
}
|