mirror of
https://github.com/tc39/test262.git
synced 2025-08-22 18:38:33 +02:00
Adds tests for conversion of a Number whose corresponding toString() value is a valid ISO string. For some Temporal types this is possible, with a number like 20220418. Especially for Temporal.Calendar, we have to take into account the case where the number is provided as the value for the 'calendar' property in a property bag, and the case of up to one level of nested property bag as well. Regularizes and expands existing tests for this case.
57 lines
2.2 KiB
JavaScript
57 lines
2.2 KiB
JavaScript
// Copyright (C) 2022 Igalia, S.L. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-temporal.zoneddatetime.compare
|
|
description: A number as calendar in a property bag is converted to a string, then to a calendar
|
|
features: [Temporal]
|
|
---*/
|
|
|
|
const calendar = 19970327;
|
|
|
|
const timeZone = new Temporal.TimeZone("UTC");
|
|
const datetime = new Temporal.ZonedDateTime(0n, timeZone);
|
|
|
|
let arg = { year: 1970, monthCode: "M01", day: 1, calendar, timeZone };
|
|
const result1 = Temporal.ZonedDateTime.compare(arg, datetime);
|
|
assert.sameValue(result1, 0, "19970327 is a valid ISO string for calendar (first argument)");
|
|
const result2 = Temporal.ZonedDateTime.compare(datetime, arg);
|
|
assert.sameValue(result2, 0, "19970327 is a valid ISO string for calendar (second argument)");
|
|
|
|
arg = { year: 1970, monthCode: "M01", day: 1, calendar: { calendar }, timeZone };
|
|
const result3 = Temporal.ZonedDateTime.compare(arg, datetime);
|
|
assert.sameValue(result3, 0, "19970327 is a valid ISO string for calendar (nested property, first argument)");
|
|
const result4 = Temporal.ZonedDateTime.compare(datetime, arg);
|
|
assert.sameValue(result4, 0, "19970327 is a valid ISO string for calendar (nested property, second argument)");
|
|
|
|
const numbers = [
|
|
1,
|
|
-19970327,
|
|
1234567890,
|
|
];
|
|
|
|
for (const calendar of numbers) {
|
|
let arg = { year: 1970, monthCode: "M01", day: 1, calendar, timeZone };
|
|
assert.throws(
|
|
RangeError,
|
|
() => Temporal.ZonedDateTime.compare(arg, datetime),
|
|
`Number ${calendar} does not convert to a valid ISO string for calendar (first argument)`
|
|
);
|
|
assert.throws(
|
|
RangeError,
|
|
() => Temporal.ZonedDateTime.compare(datetime, arg),
|
|
`Number ${calendar} does not convert to a valid ISO string for calendar (second argument)`
|
|
);
|
|
arg = { year: 1970, monthCode: "M01", day: 1, calendar: { calendar }, timeZone };
|
|
assert.throws(
|
|
RangeError,
|
|
() => Temporal.ZonedDateTime.compare(arg, datetime),
|
|
`Number ${calendar} does not convert to a valid ISO string for calendar (nested property, first argument)`
|
|
);
|
|
assert.throws(
|
|
RangeError,
|
|
() => Temporal.ZonedDateTime.compare(datetime, arg),
|
|
`Number ${calendar} does not convert to a valid ISO string for calendar (nested property, second argument)`
|
|
);
|
|
}
|