diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/tests/non262/Intl/unicode-bcp47-locale-ids-region-mappings-complex.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/non262/Intl/unicode-bcp47-locale-ids-region-mappings-complex.js')
-rw-r--r-- | js/src/tests/non262/Intl/unicode-bcp47-locale-ids-region-mappings-complex.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/js/src/tests/non262/Intl/unicode-bcp47-locale-ids-region-mappings-complex.js b/js/src/tests/non262/Intl/unicode-bcp47-locale-ids-region-mappings-complex.js new file mode 100644 index 0000000000..22dbd17a1d --- /dev/null +++ b/js/src/tests/non262/Intl/unicode-bcp47-locale-ids-region-mappings-complex.js @@ -0,0 +1,57 @@ +// |reftest| skip-if(!this.hasOwnProperty("Intl")) + +// CLDR contains region mappings where the replacement region depends on the +// likely subtags from the language and script subtags. +// +// For example, the breakup of the Soviet Union ("SU") means that the region of +// the Soviet Union ("SU") is replaced by Russia ("RU"), Armenia ("AM"), or +// many others -- depending on the specified (or merely likely) language and +// script subtags: +// +// <territoryAlias type="SU" replacement="RU AM AZ BY EE GE KZ KG LV LT MD TJ TM UA UZ" reason="deprecated"/> +// +// Armenia can be the preferred region when the language is "hy" (Armenian) or +// the script is "Armn" (Armenian). +// +// <likelySubtag from="hy" to="hy_Armn_AM"/> +// <likelySubtag from="und_Armn" to="hy_Armn_AM"/> +assertEq(Intl.getCanonicalLocales("ru-SU")[0], "ru-RU"); +assertEq(Intl.getCanonicalLocales("en-SU")[0], "en-RU"); +assertEq(Intl.getCanonicalLocales("und-SU")[0], "und-RU"); +assertEq(Intl.getCanonicalLocales("und-Latn-SU")[0], "und-Latn-RU"); +assertEq(Intl.getCanonicalLocales("hy-SU")[0], "hy-AM"); +assertEq(Intl.getCanonicalLocales("und-Armn-SU")[0], "und-Armn-AM"); + +// <territoryAlias type="CS" replacement="RS ME" reason="deprecated"/> +// +// The following likely-subtags entries contain "RS" and "ME": +// +// <likelySubtag from="sr" to="sr_Cyrl_RS"/> +// <likelySubtag from="sr_ME" to="sr_Latn_ME"/> +// <likelySubtag from="und_RS" to="sr_Cyrl_RS"/> +// <likelySubtag from="und_ME" to="sr_Latn_ME"/> +// +// In this case there is no language/script combination (without a region +// subtag) where "ME" is ever chosen, so the replacement is always "RS". +assertEq(Intl.getCanonicalLocales("sr-CS")[0], "sr-RS"); +assertEq(Intl.getCanonicalLocales("sr-Latn-CS")[0], "sr-Latn-RS"); +assertEq(Intl.getCanonicalLocales("sr-Cyrl-CS")[0], "sr-Cyrl-RS"); + +// The existing region in the source locale identifier is ignored when selecting +// the likely replacement region. For example take "az-NT", which is Azerbaijani +// spoken in the Neutral Zone. The replacement region for "NT" is either +// "SA" (Saudi-Arabia) or "IQ" (Iraq), and there is also a likely subtags entry +// for "az-IQ". But when only looking at the language subtag in "az-NT", "az" is +// always resolved to "az-Latn-AZ", and because "AZ" is not in the list ["SA", +// "IQ"], the final replacement region is the default for "NT", namely "SA". +// That means "az-NT" will be canonicalised to "az-SA" and not "az-IQ", even +// though the latter may be a more sensible candidate based on the actual usage +// of the target locales. +// +// <territoryAlias type="NT" replacement="SA IQ" reason="deprecated"/> +// <likelySubtag from="az_IQ" to="az_Arab_IQ"/> +// <likelySubtag from="az" to="az_Latn_AZ"/> +assertEq(Intl.getCanonicalLocales("az-NT")[0], "az-SA"); + +if (typeof reportCompare === "function") + reportCompare(true, true); |