mirror of https://github.com/tc39/test262.git
55 lines
1.8 KiB
JavaScript
55 lines
1.8 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: >
|
|
Test canonicalisation within transformed extension subtags.
|
|
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 testData = {
|
|
// Variant subtags are alphabetically ordered.
|
|
"sl-t-sl-rozaj-biske-1994": "sl-t-sl-1994-biske-rozaj",
|
|
|
|
// tfield subtags are alphabetically ordered.
|
|
// (Also tests subtag case normalisation.)
|
|
"DE-T-M0-DIN-K0-QWERTZ": "de-t-k0-qwertz-m0-din",
|
|
|
|
// "true" tvalue subtags aren't removed.
|
|
// (UTS 35 version 36, §3.2.1 claims otherwise, but tkey must be followed by
|
|
// tvalue, so that's likely a spec bug in UTS 35.)
|
|
"en-t-m0-true": "en-t-m0-true",
|
|
|
|
// tlang subtags are canonicalised.
|
|
"en-t-iw": "en-t-he",
|
|
|
|
// Deprecated tvalue subtags are replaced by their preferred value.
|
|
"und-Latn-t-und-hani-m0-names": "und-Latn-t-und-hani-m0-prprname",
|
|
};
|
|
|
|
for (let [tag, canonical] of Object.entries(testData)) {
|
|
// Make sure the test data is correct.
|
|
assert(isCanonicalizedStructurallyValidLanguageTag(canonical),
|
|
"\"" + canonical + "\" is a canonical and structurally valid language tag.");
|
|
|
|
let result = Intl.getCanonicalLocales(tag);
|
|
assert.sameValue(result.length, 1);
|
|
assert.sameValue(result[0], canonical);
|
|
}
|