From ff8b10c448ab0b884deac4e6e5818ed84ab8ecd9 Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Thu, 4 Oct 2018 02:43:57 +0530 Subject: [PATCH] intl: increase coverage for the Intl.NumberFormat constructor Increase coverge for the Intl.NumberFormat constructor by testing that Get(O, P) and ToString(arg) are properly called. --- .../constructor-locales-get-tostring.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/intl402/NumberFormat/constructor-locales-get-tostring.js diff --git a/test/intl402/NumberFormat/constructor-locales-get-tostring.js b/test/intl402/NumberFormat/constructor-locales-get-tostring.js new file mode 100644 index 0000000000..587eb5f042 --- /dev/null +++ b/test/intl402/NumberFormat/constructor-locales-get-tostring.js @@ -0,0 +1,41 @@ +// 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 Get(O, P) and ToString(arg) are properly called within the + constructor for Intl.NumberFormat +info: | + 9.2.1 CanonicalizeLocaleList ( locales ) + + 5. Let len be ? ToLength(? Get(O, "length")). + + 7.a. Let Pk be ToString(k). + + 7.c.i. Let kValue be ? Get(O, Pk). +---*/ + +const locales = { + length: 8, + 1: 'en-US', + 3: 'de-DE', + 5: 'en-IN', + 7: 'en-GB' +}; + +const actualLookups = []; +const expectedLookups = Object.keys(locales); + +const handlers = { + get(obj, prop) { + actualLookups.push(prop); + return Reflect.get(...arguments); + } +}; + +const proxyLocales = new Proxy(locales, handlers); + +const nf = new Intl.NumberFormat(proxyLocales); + +actualLookups.forEach(lookup => assert(expectedLookups.indexOf(lookup) != -1));