LibJS: Implement the Temporal.Duration relative-to ZonedDateTime options

This commit is contained in:
Timothy Flynn 2024-11-25 08:40:25 -05:00 committed by Andreas Kling
commit 18f95434bc
Notes: github-actions[bot] 2024-11-26 10:04:10 +00:00
9 changed files with 296 additions and 35 deletions

View file

@ -47,6 +47,26 @@ describe("correct behavior", () => {
});
expect(result).toBe(-1);
});
test("relative to zoned date time", () => {
const oneMonth = new Temporal.Duration(0, 1);
const thirtyDays = new Temporal.Duration(0, 0, 0, 30);
let result = Temporal.Duration.compare(oneMonth, thirtyDays, {
relativeTo: Temporal.ZonedDateTime.from("2018-04-01[UTC]"),
});
expect(result).toBe(0);
result = Temporal.Duration.compare(oneMonth, thirtyDays, {
relativeTo: Temporal.ZonedDateTime.from("2018-03-01[UTC]"),
});
expect(result).toBe(1);
result = Temporal.Duration.compare(oneMonth, thirtyDays, {
relativeTo: Temporal.ZonedDateTime.from("2018-02-01[UTC]"),
});
expect(result).toBe(-1);
});
});
describe("errors", () => {

View file

@ -98,6 +98,20 @@ describe("correct behavior", () => {
expect(result.months).toBe(1);
});
});
test("relative to zoned date time", () => {
const duration = new Temporal.Duration(0, 0, 0, 31);
[
"2000-01-01[UTC]",
"2000-01-01T00:00[UTC]",
"2000-01-01T00:00+00:00[UTC]",
"2000-01-01T00:00+00:00[UTC][u-ca=iso8601]",
].forEach(relativeTo => {
const result = duration.round({ largestUnit: "months", relativeTo });
expect(result.months).toBe(1);
});
});
});
describe("errors", () => {

View file

@ -25,6 +25,20 @@ describe("correct behavior", () => {
expect(result).toBe(1);
});
});
test("relative to zoned date time", () => {
const duration = new Temporal.Duration(0, 0, 0, 31);
[
"2000-01-01[UTC]",
"2000-01-01T00:00[UTC]",
"2000-01-01T00:00+00:00[UTC]",
"2000-01-01T00:00+00:00[UTC][u-ca=iso8601]",
].forEach(relativeTo => {
const result = duration.total({ unit: "months", relativeTo });
expect(result).toBe(1);
});
});
});
describe("errors", () => {