diff options
author | Luke Wilde <lukew@serenityos.org> | 2022-07-22 16:08:32 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-07-22 17:10:03 +0100 |
commit | 61847b3cef76b99603467b7b540675cda0b8c9a4 (patch) | |
tree | 721d8e84379ac6b34dbd246e006b524b46a56d89 /Userland/Libraries/LibJS/Tests | |
parent | 114120852de801fb83fc83c7357eff36a0d34ad2 (diff) | |
download | serenity-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.js | 30 |
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" ); }); }); |