Skip to content

Commit

Permalink
Temporal: Add coverage for validating offset string syntax vs suitabi…
Browse files Browse the repository at this point in the history
…lity

Syntax is validated first. Only after the property bag is fully converted
into a Calendar Fields Record does the time zone validate whether the UTC
offset is correct for that exact time in the time zone.

See tc39/proposal-temporal#2962
  • Loading branch information
ptomato authored and Ms2ger committed Oct 7, 2024
1 parent bfe3534 commit 35822d6
Showing 1 changed file with 27 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// 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.from
description: Validation of monthCode
features: [Temporal]
---*/

const bag = { year: 2024, monthCode: "M10", day: 3, timeZone: "UTC" };

["garbage", "00:00", "+000:00", "-00:000", "-00:00:000", "+00:00.0", "+00:00:00.0000000000"].forEach((offset) => {
assert.throws(RangeError, () => Temporal.ZonedDateTime.from({ offset, year: 2024, monthCode: "M10", day: 3, timeZone: "UTC" }),
`UTC offset '${offset}' is not well-formed`);
});

assert.throws(
RangeError,
() => Temporal.ZonedDateTime.from({ offset: "--00:00", year: Symbol(), monthCode: "M10", day: 3, timeZone: "UTC" }),
"UTC offset syntax is validated before year type is validated"
);

assert.throws(
TypeError,
() => Temporal.ZonedDateTime.from({ offset: "+04:30", year: Symbol(), monthCode: "M10", day: 3, timeZone: "UTC" }),
"UTC offset matching is validated after year type is validated"
);

0 comments on commit 35822d6

Please sign in to comment.