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));
|