From f39faeef8715522bd14fb6d8cb32bf268832a83d Mon Sep 17 00:00:00 2001 From: Frank Yung-Fong Tang <41213225+FrankYFTang@users.noreply.github.com> Date: Thu, 24 Jan 2019 09:28:25 -0800 Subject: [PATCH] Add test for 2.1 CanonicalizeLocaleList ( locales ) (#2040) See https://tc39.github.io/proposal-intl-locale/#sec-canonicalizelocalelist --- .../canonicalize-locale-list-take-locale.js | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 test/intl402/Locale/canonicalize-locale-list-take-locale.js diff --git a/test/intl402/Locale/canonicalize-locale-list-take-locale.js b/test/intl402/Locale/canonicalize-locale-list-take-locale.js new file mode 100644 index 0000000000..4d47197843 --- /dev/null +++ b/test/intl402/Locale/canonicalize-locale-list-take-locale.js @@ -0,0 +1,53 @@ +// Copyright 2019 Google Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-intl.locale +description: > + Verifies CanonicalizeLocaleList will take Intl.Locale as locales. +info: | + CanonicalizeLocaleList ( locales ) + 3. If Type(locales) is String or locales has an [[InitializedLocale]] internal slot, then + a. Let O be CreateArrayFromList(« locales »). + + c. iii. If Type(kValue) is Object and kValue has an [[InitializedLocale]] internal slot, then + 1. Let tag be kValue.[[Locale]]. + iv. Else, + 1. Let tag be ? ToString(kValue). +features: [Intl.Locale] +---*/ + +const tag = "ar"; +const tag2 = "fa"; +const tag3 = "zh"; +const loc = new Intl.Locale(tag); + +// Monkey-patching Intl.Locale +class PatchedLocale extends Intl.Locale { + constructor(tag, options) { + super(tag, options); + } + toString() { + // this should NOT get called. + assert(false, "toString should not be called") + } +} +const ploc = new PatchedLocale(tag2); + +// Test Intl.Locale as the only argument +let res = Intl.getCanonicalLocales(loc); +assert.sameValue(res.length, 1); +assert.sameValue(res[0], tag); + +// Test Monkey-patched Intl.Locale as the only argument +res = Intl.getCanonicalLocales(ploc); +assert.sameValue(res.length, 1); +assert.sameValue(res[0], tag2); + +// Test Intl.Locale and the Monkey-patched one are in +// array. +res = Intl.getCanonicalLocales([loc, tag3, ploc]); +assert.sameValue(res.length, 3); +assert.sameValue(res[0], tag); +assert.sameValue(res[1], tag3); +assert.sameValue(res[2], tag2); -- GitLab