diff options
Diffstat (limited to 'js/src/tests/test262/intl402/NumberFormat/constructor-option-read-order.js')
-rw-r--r-- | js/src/tests/test262/intl402/NumberFormat/constructor-option-read-order.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/NumberFormat/constructor-option-read-order.js b/js/src/tests/test262/intl402/NumberFormat/constructor-option-read-order.js new file mode 100644 index 0000000000..b7e29dd8cd --- /dev/null +++ b/js/src/tests/test262/intl402/NumberFormat/constructor-option-read-order.js @@ -0,0 +1,57 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-initializenumberformat +description: Checks the order of option read. +features: [Intl.NumberFormat-v3] +includes: [compareArray.js] +---*/ + +let optionKeys = [ + // Inside InitializeNumberFormat + "localeMatcher", + "numberingSystem", + // Inside SetNumberFormatUnitOptions + "style", + "currency", + "currencyDisplay", + "currencySign", + "unit", + "unitDisplay", + // End of SetNumberFormatUnitOptions + // Back to InitializeNumberFormat + "notation", + // Inside SetNumberFormatDigitOptions + "minimumIntegerDigits", + "minimumFractionDigits", + "maximumFractionDigits", + "minimumSignificantDigits", + "maximumSignificantDigits", + "roundingIncrement", + "roundingMode", + "roundingPriority", + "trailingZeroDisplay", + // End of SetNumberFormatDigitOptions + // Back to InitializeNumberFormat + "compactDisplay", + "useGrouping", + "signDisplay" +]; + +// Use getters to track the order of reading known properties. +// TODO: Should we use a Proxy to detect *unexpected* property reads? +let reads = new Array(); +let options = {}; +optionKeys.forEach((key) => { + Object.defineProperty(options, key, { + get() { + reads.push(key); + return undefined; + }, + }); +}); +new Intl.NumberFormat(undefined, options); +assert.compareArray(reads, optionKeys, "Intl.NumberFormat options read order"); + +reportCompare(0, 0); |