// 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: > Call Intl.getCanonicalLocales function with grandfathered language tags. 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 CanonicalizeLanguageTag abstract operation returns the canonical and case-regularized form of the locale argument (which must be a String value that is a structurally valid Unicode BCP 47 Locale Identifier as verified by the IsStructurallyValidLanguageTag abstract operation). A conforming implementation shall take the steps specified in the “BCP 47 Language Tag to Unicode BCP 47 Locale Identifier” algorithm, from Unicode Technical Standard #35 LDML § 3.3.1 BCP 47 Language Tag Conversion. includes: [testIntl.js] ---*/ // Generated from http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry // File-Date: 2017-08-15 var irregularGrandfathered = [ "en-gb-oed", "i-ami", "i-bnn", "i-default", "i-enochian", "i-hak", "i-klingon", "i-lux", "i-mingo", "i-navajo", "i-pwn", "i-tao", "i-tay", "i-tsu", "sgn-be-fr", "sgn-be-nl", "sgn-ch-de", ]; var regularGrandfatheredNonUTS35 = [ "no-bok", "no-nyn", "zh-min", "zh-min-nan", ]; var regularGrandfatheredUTS35 = { "art-lojban": "jbo", "cel-gaulish": "xtg-x-cel-gaulish", "zh-guoyu": "zh", "zh-hakka": "hak", "zh-xiang": "hsn", }; // make sure the data above is correct irregularGrandfathered.forEach(function (tag) { assert.sameValue( isCanonicalizedStructurallyValidLanguageTag(tag), false, "Test data \"" + tag + "\" is not a structurally valid language tag." ); }); regularGrandfatheredNonUTS35.forEach(function (tag) { assert.sameValue( isCanonicalizedStructurallyValidLanguageTag(tag), false, "Test data \"" + tag + "\" is not a structurally valid language tag." ); }); Object.getOwnPropertyNames(regularGrandfatheredUTS35).forEach(function (tag) { var canonicalizedTag = regularGrandfatheredUTS35[tag]; assert( isCanonicalizedStructurallyValidLanguageTag(canonicalizedTag), "Test data \"" + canonicalizedTag + "\" is a canonicalized and structurally valid language tag." ); }); Object.getOwnPropertyNames(regularGrandfatheredUTS35).forEach(function (tag) { var canonicalLocales = Intl.getCanonicalLocales(tag); assert.sameValue(canonicalLocales.length, 1); assert.sameValue(canonicalLocales[0], regularGrandfatheredUTS35[tag]); });