summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Date/to-temporal-instant.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/non262/Date/to-temporal-instant.js')
-rw-r--r--js/src/tests/non262/Date/to-temporal-instant.js62
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);