mirror of https://github.com/tc39/test262.git
40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
// Copyright (C) 2017 André Bargull. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-intl.getcanonicallocales
|
|
description: >
|
|
Implementations are allowed to canonicalize extension subtag sequences.
|
|
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. Let canonicalizedTag be CanonicalizeLanguageTag(tag).
|
|
...
|
|
|
|
6.2.3 CanonicalizeLanguageTag (locale)
|
|
The specifications for extensions to BCP 47 language tags, such as
|
|
RFC 6067, may include canonicalization rules for the extension subtag
|
|
sequences they define that go beyond the canonicalization rules of
|
|
RFC 5646 section 4.5. Implementations are allowed, but not required,
|
|
to apply these additional rules.
|
|
---*/
|
|
|
|
var locale = "it-u-nu-latn-ca-gregory";
|
|
|
|
// RFC 6067: The canonical order of keywords is in US-ASCII order by key.
|
|
var sorted = "it-u-ca-gregory-nu-latn";
|
|
|
|
var canonicalLocales = Intl.getCanonicalLocales(locale);
|
|
assert.sameValue(canonicalLocales.length, 1);
|
|
|
|
var canonicalLocale = canonicalLocales[0];
|
|
assert((canonicalLocale === locale) || (canonicalLocale === sorted));
|