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
This commit is contained in:
Philip Chimento 2024-09-19 18:37:40 -07:00 committed by Ms2ger
parent 18ae34d8f2
commit e46b317b18
4 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,39 @@
// 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.plaindate.from
description: Calendar era code is canonicalized
includes: [temporalHelpers.js]
features: [Temporal]
---*/
const date1 = Temporal.PlainDate.from({
calendar: "gregory",
era: "ce",
eraYear: 2024,
year: 2024,
month: 1,
day: 1
});
TemporalHelpers.assertPlainDate(
date1,
2024, 1, "M01", 1,
"'ce' is accepted as alias for 'gregory'",
"gregory", 2024
);
const date2 = Temporal.PlainDate.from({
calendar: "gregory",
era: "bce",
eraYear: 44,
year: -43,
month: 3,
day: 15
});
TemporalHelpers.assertPlainDate(
date2,
-43, 3, "M03", 15,
"'bce' is accepted as alias for 'gregory-inverse'",
"gregory-inverse", 44
);

View File

@ -0,0 +1,39 @@
// 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.plaindatetime.from
description: Calendar era code is canonicalized
includes: [temporalHelpers.js]
features: [Temporal]
---*/
const date1 = Temporal.PlainDateTime.from({
calendar: "gregory",
era: "ce",
eraYear: 2024,
year: 2024,
month: 1,
day: 1
});
TemporalHelpers.assertPlainDateTime(
date1,
2024, 1, "M01", 1, 0, 0, 0, 0, 0, 0,
"'ce' is accepted as alias for 'gregory'",
"gregory", 2024
);
const date2 = Temporal.PlainDateTime.from({
calendar: "gregory",
era: "bce",
eraYear: 44,
year: -43,
month: 3,
day: 15
});
TemporalHelpers.assertPlainDateTime(
date2,
-43, 3, "M03", 15, 0, 0, 0, 0, 0, 0,
"'bce' is accepted as alias for 'gregory-inverse'",
"gregory-inverse", 44
);

View File

@ -0,0 +1,37 @@
// 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.plainyearmonth.from
description: Calendar era code is canonicalized
includes: [temporalHelpers.js]
features: [Temporal]
---*/
const date1 = Temporal.PlainYearMonth.from({
calendar: "gregory",
era: "ce",
eraYear: 2024,
year: 2024,
month: 1,
});
TemporalHelpers.assertPlainYearMonth(
date1,
2024, 1, "M01",
"'ce' is accepted as alias for 'gregory'",
"gregory", 2024
);
const date2 = Temporal.PlainYearMonth.from({
calendar: "gregory",
era: "bce",
eraYear: 44,
year: -43,
month: 3,
});
TemporalHelpers.assertPlainYearMonth(
date2,
-43, 3, "M03",
"'bce' is accepted as alias for 'gregory-inverse'",
"gregory-inverse", 44
);

View File

@ -0,0 +1,30 @@
// 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: Calendar era code is canonicalized
features: [Temporal]
---*/
const date1 = Temporal.ZonedDateTime.from({
calendar: "gregory",
era: "ce",
eraYear: 2024,
year: 2024,
month: 1,
day: 1,
timeZone: "UTC",
});
assert.sameValue(date1.era, "gregory", "'ce' is accepted as alias for 'gregory'");
const date2 = Temporal.ZonedDateTime.from({
calendar: "gregory",
era: "bce",
eraYear: 44,
year: -43,
month: 3,
day: 15,
timeZone: "Europe/Rome",
});
assert.sameValue(date2.era, "gregory-inverse", "'bce' is accepted as alias for 'gregory-inverse'");