168 Commits

Author SHA1 Message Date
Philip Chimento
5c9ff876dc Temporal: Add test coverage for sub-minute UTC offsets in strings
Expands and updates (following the normative change in
https://github.com/tc39/proposal-temporal/pull/3107, approved May 2025)
the current coverage with cases where the number of seconds is
incorrect, or rounded.

Adds missing coverage for sub-minute offsets in strings passed to
Temporal.ZonedDateTime.compare.

Adds the unusual test case of Pacific/Niue on October 15, 1952, where
the offset shifted by 20 seconds to a whole-minute boundary.

Fixes a few minor errors in the existing tests such as a missing ] in a
string, and the wrong sign for the offset in Africa/Monrovia in property
bags.
2025-05-31 20:46:32 +02:00
Philip Chimento
8fa9d38753
Temporal: Make gregory week numbers undefined (#4467) 2025-05-14 13:20:36 -04:00
Philip Chimento
118db52dd4
Temporal: Add coverage for getTimeZoneTransition edge cases (#4466)
getTimeZoneTransition return values should always correspond with UTC
offset transitions, not with time zone metadata changes such as making
DST permanent or updating abbreviation strings.

See: https://github.com/tc39/proposal-temporal/issues/3105
2025-05-14 13:04:43 -04:00
Philip Chimento
20d4558f39
Temporal: Add test coverage for close-together time zone transitions (#4471)
Check that implementations correctly detect time zone transitions that
are close together. Additionally, test startOfDay() since the time zone
transitions in Brazil occur at midnight.

See https://github.com/tc39/proposal-temporal/issues/3110
2025-05-14 12:27:19 -04:00
Philip Chimento
ac9ff9bf75 Add coverage for remapping of eras in Temporal dates
See note 2 on eras in CalendarResolveFields:
https://tc39.es/proposal-temporal/#sec-temporal-calendarresolvefields

This behaviour was not yet covered by any test262 tests.

Based on Anba's tests from https://github.com/tc39/test262/pull/4080 but
with different behaviour.
2025-04-29 13:45:50 +02:00
Philip Chimento
c3c318cf11 Temporal: Add coverage for weird PlainMonthDay leap day constrain case
If you have a leap day, such as February 29, and you get input such as
{ monthCode: "M02", day: 30 }, { overflow: "constrain" }, then you want
the day to be constrained to the leap day February 29, not February 28
as the maximum day would be in a common year. Add tests for this case
for each supported calendar.
2025-04-21 10:06:18 -07:00
Philip Chimento
fa0a3081bd Temporal: Increase coverage of dateStyle and timeStyle
Add coverage in particular for dateStyle: undefined and timeStyle:
undefined, and for dateStyle applying to PlainMonthDay/PlainYearMonth
which were not tested.
2025-04-21 10:06:18 -07:00
Philip Chimento
7c4a7999f0 Fix time zone canonicalization behaviour in DateTimeFormat test
As of the Time Zone Canonicalization proposal which is stage 3, the
original time zone name should be preserved in Intl.DateTimeFormat
.prototype.resolvedOptions.

Add a separate test that uses Temporal.ZonedDateTime.prototype.equals
to test the canonicalization behaviour.
2025-04-14 09:31:55 -07:00
André Bargull
c23091151f Prefer "islamic-tbla" over "islamic" for Hijri calendars
"islamic" is underspecified because it doesn't include any information
which location and algorithms should be used to approximate new moon
observations. Instead switch to "islamic-tbla".
2025-03-24 10:39:29 +01:00
André Bargull
4a611cbaca Fix expected value for UTC-like time zone
If `timeZone` should be preserved, then it can't be the same string as
`utcDateTime.timeZoneId`.
2025-03-14 11:39:12 +01:00
Philip Chimento
48bb262183 Update UTC time zone canonicalization to match proposal-canonical-tz
The test for https://github.com/tc39/ecma402/pull/724 (added in
https://github.com/tc39/test262/pull/4328) didn't take the Time Zone
Canonicalization proposal into account; but it should, because that
proposal is stage 3.

As of that proposal, the [[TimeZone]] slot of DateTimeFormat gets the
case-regularized original identifier, no longer the primary identifier. So
the resolvedOptions().timeZone property also no longer returns the primary
identifier.
2025-03-12 17:28:07 -07:00
André Bargull
e8c771e9df Add basic tests for Intl.DurationFormat accepting Temporal.Duration 2025-02-14 09:01:03 -08:00
Brage Hogstad
26db872ca7 Moved generic era and eraYear tests from intl402/Temporal to built-ins/Temporal 2025-02-12 11:36:45 -08:00
André Bargull
75fddbd694 Add feature tag for "Time Zone Canonicalization" 2025-01-09 16:38:01 -08:00
André Bargull
122912d54b Remove invalid test that offset time zone are unsupported
Fixes #4339
2025-01-08 17:18:53 -08:00
André Bargull
d7fa2a1163 Remove "US/Pacific-New" from time zone tests
"US/Pacific-New" was removed in tzdata2020b.
2024-12-16 14:55:12 +01:00
André Bargull
d124e1486c Allow alternative era for Chinese calendar
Year 1 in the Chinese calendar corresponds to 2637 BCE in ICU4X.

See <https://docs.rs/icu/latest/icu/calendar/chinese/struct.Chinese.html#year-and-era-codes>.
2024-12-04 11:26:13 -08:00
Philip Chimento
80c49657d3 Temporal: Fix name of constructor
I mistakenly committed something slightly different in my code review
suggestion than what I had modified locally.
2024-11-08 11:18:43 +01:00
Tim Chevalier
1128b6fcd2 Temporal: Add test case for rounding up to a non-24-hour ZonedDateTime 2024-11-07 14:13:27 -08:00
Tim Chevalier
81df127d54
Temporal: Add test case for rounding Duration relative to a ZonedDateTime (#4306)
This is the test for the change in tc39/proposal-temporal#3036 and is a variation of the test from tc39/proposal-temporal#2814 .
2024-11-07 12:22:28 -08:00
Tim Chevalier
ab69bd4dd8
Temporal: Add test for date with offset transition (#4301)
Co-authored-by: Philip Chimento <philip.chimento@gmail.com>
2024-11-01 13:43:05 -07:00
Tim Chevalier
45f352d37b
Temporal: Add test for setting minimum valid year-month with non-ISO8601 calendar (#2998) (#4300) 2024-11-01 11:14:22 -07:00
Philip Chimento
573234fe7b Temporal: Add tests for toLocaleString with no options
For each Temporal object, add tests for what components are present by
default if no options for date or time components are passed.
2024-10-07 12:02:45 +02:00
Philip Chimento
9e6ab9bb02 Temporal: Add coverage for formatting each Temporal object with only one component
Adds a test for each Temporal object's toLocaleString() method, formatting
them with only one option e.g. { year: 'numeric' } and comparing it with
the corresponding output for legacy Date.

See tc39/proposal-temporal#2796.
2024-10-07 12:02:45 +02:00
Philip Chimento
e46b317b18 Temporal: Add test coverage for canonicalizing era codes in from()
There was a coverage gap for converting calendar fields to a date when the
provided era was an alias.

See https://github.com/tc39/proposal-temporal/pull/2940#discussion_r1767508659
2024-09-20 17:04:19 +02:00
Richard Gibson
de3a117f02 Temporal: Update tests to account for use of year in ToTemporalMonthDay
Ref https://github.com/tc39/proposal-temporal/issues/2863
Normative PR: https://github.com/tc39/proposal-temporal/pull/2940
2024-09-19 11:27:48 -07:00
Philip Chimento
6f8f6b5261 Temporal: Tests for ignoring era and eraYear in calendars without eras
This tests some of the prose requirements of CalendarResolveFields.

See https://github.com/tc39/proposal-temporal/issues/2870
2024-09-10 09:28:24 -07:00
Philip Chimento
d9b10790bc Temporal: Tests for corner case in TZDB involving DST transition in 1919
These tests add coverage for a corner case in the TZDB. In spring 1919,
the America/Toronto time zone switched to DST at 23:30 on March 30th,
skipping an hour ahead to 00:30 on March 31st. This meant that both March
30th and March 31st were 23.5-hour days.

See: https://github.com/tc39/proposal-temporal/issues/2910
2024-09-05 15:19:17 -07:00
Philip Chimento
ea11e0e787 Temporal: Further coverage and tweaks for removing Calendar/TimeZone objs
Tweak some tests to provide coverage of new execution paths in the spec,
such as calling GetOptionsObject inside ToTemporal___; add a few new tests
for things that weren't covered before, such as rounding a PlainDateTime
at the edge of the range; and tweak the tests verifying when the
properties of the options bag are read, which I made a mistake in #4119.

See: https://github.com/tc39/proposal-temporal/pull/2925
2024-08-22 14:00:43 -07:00
André Bargull
dcaed0523c Allow implementation-defined behaviour for constraining leap months 2024-07-25 11:46:15 -07:00
André Bargull
16322d384a Allow alternative era names
Temporal doesn't specify concrete era names, so tests shouldn't assert
for example that the era code of the current Gregorian era is `"ce"`. We
still want to validate the era names somehow however, so allow alternative
era names using the era codes from the "Intl era and monthCode" proposal.
2024-07-10 07:59:20 -07:00
Philip Chimento
bbfcfd59b0 Temporal: Port staging tests that require non-ISO calendar or non-UTC time zone
As in the previous commit, without custom calendars and time zones, some
functionality cannot be tested on implementations that don't have any
other calendars and time zones than iso8601 and UTC.

Some of the staging tests fall in this category. We take the opportunity
to port these into proper tests, in the intl402/ folder.
2024-07-05 10:43:53 +02:00
Philip Chimento
efc7424844 Temporal: Don't use getISOFields() in other tests
Previously getISOFields() was used to get the exact value of the
[[Calendar]] and [[TimeZone]] internal slots, as well as to get the
reference ISO year for PlainMonthDay and reference ISO day for
PlainYearMonth.

Use calendarId and timeZoneId for the former and toString() for the
latter.
2024-07-05 10:43:53 +02:00
Philip Chimento
e5ef51ba7e Temporal: Move tests into intl402/ that require non-ISO calendar or non-UTC time zone
Without custom calendars and time zones there are actually a bunch of
things that we now can't test on implementations that don't have non-ISO
calendars or non-UTC time zones. (Alternatively, we can say that these are
functionalities that those implementations don't have to implement.)
2024-07-05 10:43:53 +02:00
Philip Chimento
9671c4a613 Temporal: Test adjustments for removing calendar and time zone objects 2024-07-05 10:43:53 +02:00
Philip Chimento
0a1cb1307f Temporal: Edit test descriptions that refer to Calendar and TimeZone objects 2024-07-05 10:43:53 +02:00
Philip Chimento
7d970fbe4e Temporal: Remove fake West Coast and Samoa time zones from TemporalHelpers
It's no longer possible to fake built-in time zones using custom objects.
So testing DST shifts will have to use real built-in time zones. Replace
TemporalHelpers.springForwardFallBackTimeZone with America/Vancouver (it
was modelled on the DST transitions in 2000) and
TemporalHelpers.crossDateLineTimeZone with Pacific/Apia (it was modelled
on the 2011 switch to the other side of the international date line.)

These tests have to move to the intl402/ folder since non-Intl-aware
implementations are allowed (but not required) to support any built-in
time zones other than UTC.
2024-07-05 10:43:53 +02:00
Philip Chimento
c728e6d89e Temporal: Fix tests that unnecessarily create TimeZone or Calendar instances
In many cases we created a TimeZone or Calendar instance from a built-in
time zone or calendar. These tests can be trivially adapted to just use
the string ID.
2024-07-05 10:43:53 +02:00
Philip Chimento
ea2268aa43 Temporal: Remove tests directly relating to custom calendar and time zones
These are tests that just won't apply anymore without custom calendars and
time zones.
2024-07-05 10:43:53 +02:00
Philip Chimento
6595838b3d Temporal: Remove TimeZone.p.equals method
Some of the tests can be removed altogether since they deal with what
forms of input can be passed to ToTemporalTimeZoneSlotValue. Those are
tested on every method that takes a TimeZone as input.

Other tests are still relevant, but need to move to ZonedDateTime.p.equals
where the various quirks of time zone equality can still be tested. (Some
of these still will be removed in a following commit because they use
time zone objects.)

See: #2826
2024-07-05 10:43:53 +02:00
Philip Chimento
1213ab17ec Temporal: Remove getCalendar and getTimeZone methods
Temporarily replace them with getISOFields().calendar/timeZone just to
keep the tests running until we remove Calendar and TimeZone objects
altogether.

See: tc39/proposal-temporal#2826
2024-07-05 10:43:53 +02:00
Philip Chimento
c22fbc7b45 Temporal: Port staging tests that use next/previousTransition
See: tc39/proposal-temporal#2826
2024-07-05 10:43:53 +02:00
Philip Chimento
71877cde79 Temporal: Move tests for getNext/PreviousTransition into ZonedDateTime
See: tc39/proposal-temporal#2826
2024-07-05 10:43:53 +02:00
Philip Chimento
3f805a1383 Temporal: Test calendar canonicalization in Temporal
Following the upstream ECMA-402 change tested in the previous commit, add
test coverage for the corresponding functionality in Temporal. Fix one
test that was erroneous.
2024-07-04 11:14:16 +02:00
Philip Chimento
6626b60df6 Temporal: Make U+2212 MINUS SIGN invalid in ISO strings
These are the test adjustments corresponding to the normative PR
https://github.com/tc39/ecma262/pull/3334 which reached consensus at the
June 2024 TC39 meeting.
2024-07-03 08:50:57 -07:00
Philip Chimento
58df8fb22a Temporal: Remove methods with ISO-named pairs
See tc39/proposal-temporal#2846
2024-06-13 22:04:16 +02:00
Philip Chimento
7184313667 Temporal: Remove PlainTime.toPlainDateTime/toZonedDateTime methods
See tc39/proposal-temporal#2848
2024-06-13 22:04:16 +02:00
Philip Chimento
a9c223c60e Temporal: Remove withPlainDate() methods
See tc39/proposal-temporal#2847.
2024-06-13 22:04:16 +02:00
Philip Chimento
ea4945c66f Temporal: Remove tests using relativeTo in Duration.p.add/subtract
See tc39/proposal-temporal#2825. This is a mass removal of tests that use
this functionality, in a separate commit for ease of review. Further
adjustments will be made in the following commit.
2024-06-13 13:54:46 +02:00
André Bargull
57b9f154a6 Allow alternative implementations for Chinese lunar calendar 2024-05-29 10:47:09 +02:00