diff --git a/test/intl402/DurationFormat/constructor-option-read-order.js b/test/intl402/DurationFormat/constructor-option-read-order.js new file mode 100644 index 0000000000..a37cf5ed59 --- /dev/null +++ b/test/intl402/DurationFormat/constructor-option-read-order.js @@ -0,0 +1,47 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-Intl.DurationFormat +description: Checks the order of option read. +features: [Intl.DurationFormat] +includes: [compareArray.js] +---*/ + +let optionKeys = Object.keys((new Intl.DurationFormat()).resolvedOptions()); +let opt = {}; +let readKeys = new Array(); +// For each item returned by resolvedOptions of default, add a getter +// to track the reading order. +optionKeys.forEach((property) => + Object.defineProperty(opt, property, { + get() { + readKeys[readKeys.length] = property; + return undefined; + }, + })); +let p = new Intl.DurationFormat(undefined, opt); +assert.compareArray( + readKeys, + ['numberingSystem', + 'style', + 'years', + 'yearsDisplay', + 'months', + 'monthsDisplay', + 'weeks', + 'weeksDisplay', + 'days', + 'daysDisplay', + 'hours', + 'hoursDisplay', + 'minutes', + 'minutesDisplay', + 'seconds', + 'secondsDisplay', + 'milliseconds', + 'millisecondsDisplay', + 'microseconds', + 'microsecondsDisplay', + 'nanoseconds', + 'nanosecondsDisplay']); diff --git a/test/intl402/DurationFormat/prototype/resolvedOptions/return-keys-order-default.js b/test/intl402/DurationFormat/prototype/resolvedOptions/return-keys-order-default.js new file mode 100644 index 0000000000..a817731948 --- /dev/null +++ b/test/intl402/DurationFormat/prototype/resolvedOptions/return-keys-order-default.js @@ -0,0 +1,34 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-intl.durationformat.prototype.resolvedoptions +description: order of property keys for the object returned by resolvedOptions() +features: [Intl.DurationFormat] +includes: [compareArray.js] +---*/ + +assert.compareArray( + Object.keys((new Intl.DurationFormat()).resolvedOptions()), + ['locale', + 'numberingSystem', + 'style', + 'years', + 'yearsDisplay', + 'months', + 'monthsDisplay', + 'weeks', + 'weeksDisplay', + 'days', + 'daysDisplay', + 'hours', + 'hoursDisplay', + 'minutes', + 'minutesDisplay', + 'seconds', + 'secondsDisplay', + 'milliseconds', + 'millisecondsDisplay', + 'microseconds', + 'microsecondsDisplay', + 'nanoseconds', + 'nanosecondsDisplay']);