mirror of https://github.com/tc39/test262.git
Add a test for Unicode key-type pairs being canonicalized by Intl.Locale regardless whether they're passed in the input tag, or through the options object.
This commit is contained in:
parent
7a4b88e446
commit
31dabb5618
|
@ -0,0 +1,69 @@
|
|||
// Copyright 2020 Mozilla Corporation. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-resolvelocale
|
||||
description: >
|
||||
Values provided as properties of the options-argument to the Locale
|
||||
constructor are converted to canonical form.
|
||||
info: |
|
||||
ResolveLocale ( availableLocales, requestedLocales, options, relevantExtensionKeys, localeData )
|
||||
|
||||
...
|
||||
9.i.iii.1. Let optionsValue be the string optionsValue after performing the algorithm steps to transform Unicode extension values to canonical syntax per Unicode Technical Standard #35 LDML § 3.2.1 Canonical Unicode Locale Identifiers, treating key as ukey and optionsValue as uvalue productions.
|
||||
9.i.iii.2. Let optionsValue be the string optionsValue after performing the algorithm steps to replace Unicode extension values with their canonical form per Unicode Technical Standard #35 LDML § 3.2.1 Canonical Unicode Locale Identifiers, treating key as ukey and optionsValue as uvalue productions.
|
||||
...
|
||||
|
||||
features: [Intl.Locale]
|
||||
---*/
|
||||
|
||||
const keyValueTests = [
|
||||
{
|
||||
key: "ca",
|
||||
option: "calendar",
|
||||
tests: [
|
||||
["islamicc", "islamic-civil"],
|
||||
["ethiopic-amete-alem", "ethioaa"],
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
for (const { key, option, tests } of keyValueTests) {
|
||||
for (const [noncanonical, canonical] of tests) {
|
||||
let canonicalInLocale =
|
||||
new Intl.Locale(`en-u-${key}-${canonical}`);
|
||||
|
||||
assert.sameValue(
|
||||
canonicalInLocale[option],
|
||||
canonical,
|
||||
`new Intl.Locale("en-u-${key}-${canonical}").${option} returns ${canonical}`
|
||||
);
|
||||
|
||||
let canonicalInOption =
|
||||
new Intl.Locale(`en`, { [option]: canonical });
|
||||
|
||||
assert.sameValue(
|
||||
canonicalInOption[option],
|
||||
canonical,
|
||||
`new Intl.Locale("en", { ${option}: "${canonical}" }).${option} returns ${canonical}`
|
||||
);
|
||||
|
||||
let noncanonicalInLocale =
|
||||
new Intl.Locale(`en-u-${key}-${noncanonical}`);
|
||||
|
||||
assert.sameValue(
|
||||
noncanonicalInLocale[option],
|
||||
canonical,
|
||||
`new Intl.Locale("en-u-${key}-${noncanonical}").${option} returns ${canonical}`
|
||||
);
|
||||
|
||||
let noncanonicalInOption =
|
||||
new Intl.Locale(`en`, { [option]: noncanonical });
|
||||
|
||||
assert.sameValue(
|
||||
noncanonicalInOption[option],
|
||||
canonical,
|
||||
`new Intl.Locale("en", { ${option}: "${noncanonical}" }).${option} returns ${canonical}`
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue