From c3eb263c5b88ea22fca3130660000ac18e9ccd61 Mon Sep 17 00:00:00 2001 From: Frank Yung-Fong Tang Date: Thu, 9 Sep 2021 02:47:23 -0700 Subject: [PATCH] add more tests for T*.Calendar.p*.fields --- .../Calendar/prototype/fields/reverse.js | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 test/built-ins/Temporal/Calendar/prototype/fields/reverse.js diff --git a/test/built-ins/Temporal/Calendar/prototype/fields/reverse.js b/test/built-ins/Temporal/Calendar/prototype/fields/reverse.js new file mode 100644 index 00000000000..d79fe4ff202 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/fields/reverse.js @@ -0,0 +1,42 @@ +// Copyright (C) 2021 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.fields +description: > + Temporal.Calendar.prototype.fields will take iterable of any size and any string + and return Array of the same content. +info: | + ## 12.4.21 Temporal.Calendar.prototype.fields ( fields ) + 1. Let calendar be the this value. + 2. Perform ? RequireInternalSlot(calendar, [[InitializedTemporalCalendar]]). + 4. Let iteratorRecord be ? Getiterator(fields, sync). + 5. Let fieldNames be a new empty List. + 6. Let next be true. + 7. Repeat, while next is not false, + a. Set next to ? IteratorStep(iteratorRecord). + b. If next is not false, then + i. Let nextValue be ? IteratorValue(next). + iv. If nextValue is not one of "year", "month", "monthCode", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond", then + 1. Let completion be ThrowCompletion(a newly created RangeError object). + 2. Return ? IteratorClose(iteratorRecord, completion). +features: [Symbol, Symbol.iterator, Temporal, computed-property-names, generators] +includes: [compareArray.js] +---*/ +let cal = new Temporal.Calendar("iso8601") +const fields = { + *[Symbol.iterator]() { + yield "nanosecond"; + yield "microsecond"; + yield "millisecond"; + yield "second"; + yield "minute"; + yield "hour"; + yield "day"; + yield "monthCode"; + yield "month"; + yield "year"; + } +} +assert(compareArray(cal.fields(fields), Array.from(fields)), + 'valid fields should return true even if they are in reversed order of the spec');