From 1e3d8cbb37476cd957a6a5c7295004901f30b2c4 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Fri, 29 Mar 2024 18:04:06 -0700 Subject: [PATCH] Add extra tests for newly fixed bug --- .../prototype/since/dst-month-day-boundary.js | 26 +++++++++++++++++++ .../prototype/until/dst-month-day-boundary.js | 26 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js new file mode 100644 index 0000000000..ce9aad31d3 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.since +description: > + Difference with the endpoint being the end of a skipped hour, chooses the + smaller of two possible durations +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// Based on a test case by Adam Shaw + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +const d1 = new Temporal.ZonedDateTime(957258000_000_000_000n /* = 2000-05-02T02:00-07:00 */, timeZone); +const d2 = new Temporal.ZonedDateTime(954669600_000_000_000n /* = 2000-04-02T03:00-07:00 */, timeZone); +// NOTE: nonexistent hour just before d2 + +const result = d1.since(d2, { largestUnit: "months" }); + +TemporalHelpers.assertDuration( + result, 0, 0, 0, 29, 23, 0, 0, 0, 0, 0, + "Result should not balance up to months, but pick the smaller of two possible durations" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js new file mode 100644 index 0000000000..dcb2d20c34 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: > + Difference with the endpoint being the end of a skipped hour, chooses the + smaller of two possible durations +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// Based on a test case by Adam Shaw + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +const d1 = new Temporal.ZonedDateTime(957258000_000_000_000n /* = 2000-05-02T02:00-07:00 */, timeZone); +const d2 = new Temporal.ZonedDateTime(954669600_000_000_000n /* = 2000-04-02T03:00-07:00 */, timeZone); +// NOTE: nonexistent hour just before d2 + +const result = d1.until(d2, { largestUnit: "months" }); + +TemporalHelpers.assertDuration( + result, 0, 0, 0, -29, -23, 0, 0, 0, 0, 0, + "Result should not balance up to months, but pick the smaller of two possible durations" +);