diff options
Diffstat (limited to 'js/src/tests/test262/intl402/PluralRules/constructor-option-read-order.js')
-rw-r--r-- | js/src/tests/test262/intl402/PluralRules/constructor-option-read-order.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/PluralRules/constructor-option-read-order.js b/js/src/tests/test262/intl402/PluralRules/constructor-option-read-order.js new file mode 100644 index 0000000000..0fc3569e60 --- /dev/null +++ b/js/src/tests/test262/intl402/PluralRules/constructor-option-read-order.js @@ -0,0 +1,43 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-initializepluralrules +description: Checks the order of option read. +features: [Intl.NumberFormat-v3] +includes: [compareArray.js] +---*/ + +let optionKeys = [ + // Inside InitializePluralRules + "localeMatcher", + "type", + // Inside SetNumberFormatDigitOptions + "minimumIntegerDigits", + "minimumFractionDigits", + "maximumFractionDigits", + "minimumSignificantDigits", + "maximumSignificantDigits", + "roundingIncrement", + "roundingMode", + "roundingPriority", + "trailingZeroDisplay", + // End of SetNumberFormatDigitOptions +]; + +// 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.PluralRules(undefined, options); +assert.compareArray(reads, optionKeys, "Intl.PluralRules options read order"); + +reportCompare(0, 0); |