diff --git a/test/intl402/NumberFormat/constructor-locales-tooptions.js b/test/intl402/NumberFormat/constructor-locales-tooptions.js new file mode 100644 index 0000000000..1f088b52de --- /dev/null +++ b/test/intl402/NumberFormat/constructor-locales-tooptions.js @@ -0,0 +1,28 @@ +// Copyright (C) 2018 Ujjwal Sharma. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-initializenumberformat +description: > + Tests that Intl.NumberFormat contructor converts the locales argument + to an object using `ToObject` (7.1.13). +info: | + 9.2.1 CanonicalizeLocaleList + + 4.a. Let O be ? ToObject(locales). +---*/ + +const toObjectResults = [[true, new Boolean(true)], [42, new Number(42)]]; + +// Test if ToObject is used to convert primitives to Objects. +toObjectResults.forEach(pair => { + const [value, result] = pair; + assert.sameValue( + new Intl.NumberFormat(value).resolvedOptions(), + new Intl.NumberFormat(result).resolvedOptions() + ); +}); + +// ToObject throws a TypeError for undefined and null, but it's not called +// when locales is undefined. +assert.throws(TypeError, () => new Intl.NumberFormat(null));