summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Tests
diff options
context:
space:
mode:
authorLuke Wilde <lukew@serenityos.org>2022-07-22 16:08:32 +0100
committerLinus Groh <mail@linusgroh.de>2022-07-22 17:10:03 +0100
commit61847b3cef76b99603467b7b540675cda0b8c9a4 (patch)
tree721d8e84379ac6b34dbd246e006b524b46a56d89 /Userland/Libraries/LibJS/Tests
parent114120852de801fb83fc83c7357eff36a0d34ad2 (diff)
downloadserenity-61847b3cef76b99603467b7b540675cda0b8c9a4.zip
LibJS: Disallow negative day lengths in ZonedDateTime.protoype.round
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/6f04074
Diffstat (limited to 'Userland/Libraries/LibJS/Tests')
-rw-r--r--Userland/Libraries/LibJS/Tests/builtins/Temporal/ZonedDateTime/ZonedDateTime.prototype.round.js30
1 files changed, 29 insertions, 1 deletions
diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/ZonedDateTime/ZonedDateTime.prototype.round.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/ZonedDateTime/ZonedDateTime.prototype.round.js
index 80d64e6704..66397b4120 100644
--- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/ZonedDateTime/ZonedDateTime.prototype.round.js
+++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/ZonedDateTime/ZonedDateTime.prototype.round.js
@@ -112,7 +112,35 @@ describe("errors", () => {
zonedDateTime.round({ smallestUnit: "second" });
}).toThrowWithMessage(
RangeError,
- "Cannot round a ZonedDateTime in a calendar that has zero-length days"
+ "Cannot round a ZonedDateTime in a calendar or time zone that has zero or negative length days"
+ );
+ });
+
+ test("time zone with negative length days", () => {
+ class CustomTimeZone extends Temporal.TimeZone {
+ constructor() {
+ super("UTC");
+ this.getPossibleInstantsForCallCount = 0;
+ }
+
+ getPossibleInstantsFor(temporalDateTime) {
+ this.getPossibleInstantsForCallCount++;
+
+ if (this.getPossibleInstantsForCallCount === 2) {
+ return [new Temporal.Instant(-1n)];
+ }
+
+ return super.getPossibleInstantsFor(temporalDateTime);
+ }
+ }
+
+ const zonedDateTime = new Temporal.ZonedDateTime(1n, new CustomTimeZone());
+
+ expect(() => {
+ zonedDateTime.round({ smallestUnit: "second" });
+ }).toThrowWithMessage(
+ RangeError,
+ "Cannot round a ZonedDateTime in a calendar or time zone that has zero or negative length days"
);
});
});