diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Temporal/Calendar/prototype/fields/argument-throws-duplicate-keys.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Temporal/Calendar/prototype/fields/argument-throws-duplicate-keys.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Temporal/Calendar/prototype/fields/argument-throws-duplicate-keys.js b/js/src/tests/test262/built-ins/Temporal/Calendar/prototype/fields/argument-throws-duplicate-keys.js new file mode 100644 index 0000000000..be868d3bf7 --- /dev/null +++ b/js/src/tests/test262/built-ins/Temporal/Calendar/prototype/fields/argument-throws-duplicate-keys.js @@ -0,0 +1,31 @@ +// |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally +// Copyright (C) 2021 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.fields +description: Duplicate fields are not allowed in the argument to Calendar.prototype.fields +info: | + sec-temporal.calendar.prototype.fields step 7.b.iii: + iii. If _fieldNames_ contains _nextValue_, then + 1. Let _completion_ be ThrowCompletion(a newly created *RangeError* object). + 2. Return ? IteratorClose(_iteratorRecord_, _completion_). +features: [Temporal] +---*/ + +const calendar = new Temporal.Calendar("iso8601"); +assert.throws(RangeError, () => calendar.fields(["day", "month", "day"])); +assert.throws(RangeError, () => calendar.fields(["year", "month", "monthCode", "day", "year"])); + +const manyFields = { + count: 0 +}; + +manyFields[Symbol.iterator] = function*() { + while (this.count++ < 100) yield "year"; +}; + +assert.throws(RangeError, () => calendar.fields(manyFields), "Rejected duplicate values"); +assert.sameValue(manyFields.count, 2, "Rejected first duplicate value"); + +reportCompare(0, 0); |