// Copyright 2018 Igalia, S.L. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-initializedatetimeformat description: Checks the order of getting options for the DateTimeFormat constructor. includes: [compareArray.js] features: [Intl.DateTimeFormat-datetimestyle] ---*/ // To be merged into constructor-options-order.js when the feature is removed. const expected = [ // ToDateTimeOptions step 4. "weekday", "year", "month", "day", // ToDateTimeOptions step 5. "hour", "minute", "second", // ToDateTimeOptions step 6. "dateStyle", // ToDateTimeOptions step 7. "timeStyle", // InitializeDateTimeFormat step 4. "localeMatcher", // InitializeDateTimeFormat step 6. "hour12", // InitializeDateTimeFormat step 7. "hourCycle", // InitializeDateTimeFormat step 23. "timeZone", // InitializeDateTimeFormat step 28. "weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName", "formatMatcher", // InitializeDateTimeFormat step 32. "dateStyle", // InitializeDateTimeFormat step 33. "timeStyle", ]; const actual = []; const options = { get dateStyle() { actual.push("dateStyle"); return undefined; }, get day() { actual.push("day"); return "numeric"; }, get era() { actual.push("era"); return "long"; }, get formatMatcher() { actual.push("formatMatcher"); return "best fit"; }, get hour() { actual.push("hour"); return "numeric"; }, get hour12() { actual.push("hour12"); return true; }, get hourCycle() { actual.push("hourCycle"); return "h24"; }, get localeMatcher() { actual.push("localeMatcher"); return "best fit"; }, get minute() { actual.push("minute"); return "numeric"; }, get month() { actual.push("month"); return "numeric"; }, get second() { actual.push("second"); return "numeric"; }, get timeStyle() { actual.push("timeStyle"); return undefined; }, get timeZone() { actual.push("timeZone"); return "UTC"; }, get timeZoneName() { actual.push("timeZoneName"); return "long"; }, get weekday() { actual.push("weekday"); return "long"; }, get year() { actual.push("year"); return "numeric"; }, }; new Intl.DateTimeFormat("en", options); assert.compareArray(actual, expected); reportCompare(0, 0);