diff options
Diffstat (limited to 'js/src/tests/non262/Date/to-temporal-instant.js')
-rw-r--r-- | js/src/tests/non262/Date/to-temporal-instant.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/js/src/tests/non262/Date/to-temporal-instant.js b/js/src/tests/non262/Date/to-temporal-instant.js new file mode 100644 index 0000000000..341a456725 --- /dev/null +++ b/js/src/tests/non262/Date/to-temporal-instant.js @@ -0,0 +1,62 @@ +// |reftest| skip-if(!this.hasOwnProperty("Temporal")) + +const min = new Date(-8640000000000000).toTemporalInstant(); +const max = new Date(8640000000000000).toTemporalInstant(); +const epoch = new Date(0).toTemporalInstant(); + +const minTemporalInstant = new Temporal.Instant(-8640000000000000000000n) +const maxTemporalInstant = new Temporal.Instant(8640000000000000000000n) +const zeroInstant = new Temporal.Instant(0n) + +let zero = Temporal.Duration.from({nanoseconds: 0}); +let one = Temporal.Duration.from({nanoseconds: 1}); +let minusOne = Temporal.Duration.from({nanoseconds: -1}); + +//Test invalid date +{ + const invalidDate = new Date(NaN); + assertThrowsInstanceOf(() => invalidDate.toTemporalInstant(), RangeError); +} + +//Test Temporal.Instant properties +{ + // epochNanoseconds + assertEq(min.epochNanoseconds, minTemporalInstant.epochNanoseconds); + assertEq(max.epochNanoseconds, maxTemporalInstant.epochNanoseconds); + assertEq(epoch.epochNanoseconds, zeroInstant.epochNanoseconds); + + // toZonedDateTime + assertEq(min.toZonedDateTimeISO('UTC').toString(), minTemporalInstant.toZonedDateTimeISO('UTC').toString()); + assertEq(max.toZonedDateTimeISO('UTC').toString(), maxTemporalInstant.toZonedDateTimeISO('UTC').toString()); + assertEq(epoch.toZonedDateTimeISO('UTC').toString(), zeroInstant.toZonedDateTimeISO('UTC').toString()); +} + +// Test values around the minimum/maximum instant. +{ + // Adding zero to the minimum instant. + assertEq(min.add(zero).epochNanoseconds, min.epochNanoseconds); + assertEq(min.subtract(zero).epochNanoseconds, min.epochNanoseconds); + + // Adding zero to the maximum instant. + assertEq(max.add(zero).epochNanoseconds, max.epochNanoseconds); + assertEq(max.subtract(zero).epochNanoseconds, max.epochNanoseconds); + + // Adding one to the minimum instant. + assertEq(min.add(one).epochNanoseconds, min.epochNanoseconds + 1n); + assertEq(min.subtract(minusOne).epochNanoseconds, min.epochNanoseconds + 1n); + + // Subtracting one from the maximum instant. + assertEq(max.add(minusOne).epochNanoseconds, max.epochNanoseconds - 1n); + assertEq(max.subtract(one).epochNanoseconds, max.epochNanoseconds - 1n); + + // Subtracting one from the minimum instant. + assertThrowsInstanceOf(() => min.add(minusOne), RangeError); + assertThrowsInstanceOf(() => min.subtract(one), RangeError); + + // Adding one to the maximum instant. + assertThrowsInstanceOf(() => max.add(one), RangeError); + assertThrowsInstanceOf(() => max.subtract(minusOne), RangeError); +} + +if (typeof reportCompare === "function") + reportCompare(true, true); |