Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions test/intl402/Temporal/PlainYearMonth/prototype/add/basic-buddhist.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
// Copyright (C) 2025 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-temporal.plainyearmonth.prototype.add
description: >
Check various basic calculations not involving leap years or constraining
(buddhist calendar)
features: [Temporal, Intl.Era-monthcode]
includes: [temporalHelpers.js]
---*/

const calendar = "buddhist";

const years1 = new Temporal.Duration(1);
const years1n = new Temporal.Duration(-1);
const years4 = new Temporal.Duration(4);
const years4n = new Temporal.Duration(-4);

const date256407 = Temporal.PlainYearMonth.from({ year: 2564, monthCode: "M07", calendar });

TemporalHelpers.assertPlainYearMonth(
date256407.add(years1),
2565, 7, "M07", "add 1y",
"be", 2565, null);
TemporalHelpers.assertPlainYearMonth(
date256407.add(years4),
2568, 7, "M07", "add 4y",
"be", 2568, null);

TemporalHelpers.assertPlainYearMonth(
date256407.add(years1n),
2563, 7, "M07", "subtract 1y",
"be", 2563, null);
TemporalHelpers.assertPlainYearMonth(
date256407.add(years4n),
2560, 7, "M07", "subtract 4y",
"be", 2560, null);

// Months

const months5 = new Temporal.Duration(0, 5);
const months5n = new Temporal.Duration(0, -5);
const months6 = new Temporal.Duration(0, 6);
const months6n = new Temporal.Duration(0, -6);
const years1months2 = new Temporal.Duration(1, 2);
const years1months2n = new Temporal.Duration(-1, -2);

const date255512 = Temporal.PlainYearMonth.from({ year: 2555, monthCode: "M12", calendar });

TemporalHelpers.assertPlainYearMonth(
date256407.add(months5),
2564, 12, "M12", "add 5mo with result in the same year",
"be", 2564, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2564, monthCode: "M08", calendar }).add(months5),
2565, 1, "M01", "add 5mo with result in the next year",
"be", 2565, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2562, monthCode: "M10", calendar }).add(months5),
2563, 3, "M03", "add 5mo with result in the next year on day 1 of month",
"be", 2563, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2564, monthCode: "M10", calendar }).add(months5),
2565, 3, "M03", "add 5mo with result in the next year on day 31 of month",
"be", 2565, null);

TemporalHelpers.assertPlainYearMonth(
date256407.add(years1months2),
2565, 9, "M09", "add 1y 2mo",
"be", 2565, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2564, monthCode: "M11", calendar }).add(years1months2),
2566, 1, "M01", "add 1y 2mo with result in the next year",
"be", 2566, null);

TemporalHelpers.assertPlainYearMonth(
date256407.add(months5n),
2564, 2, "M02", "subtract 5mo with result in the same year",
"be", 2564, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2564, monthCode: "M01", calendar }).add(months5n),
2563, 8, "M08", "subtract 5mo with result in the previous year",
"be", 2563, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2562, monthCode: "M02", calendar }).add(months5n),
2561, 9, "M09", "subtract 5mo with result in the previous year on day 1 of month",
"be", 2561, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2564, monthCode: "M03", calendar }).add(months5n),
2563, 10, "M10", "subtract 5mo with result in the previous year on day 31 of month",
"be", 2563, null);

TemporalHelpers.assertPlainYearMonth(
date256407.add(years1months2n),
2563, 5, "M05", "subtract 1y 2mo",
"be", 2563, null);
TemporalHelpers.assertPlainYearMonth(
Temporal.PlainYearMonth.from({ year: 2564, monthCode: "M02", calendar }).add(years1months2n),
2562, 12, "M12", "subtract 1y 2mo with result in the previous year",
"be", 2562, null);

TemporalHelpers.assertPlainYearMonth(
date255512.add(months6),
2556, 6, "M06", "add 6mo",
"be", 2556, null);
const calculatedStart = date255512.add(months6).add(months6n);
TemporalHelpers.assertPlainYearMonth(
calculatedStart,
2555, 12, "M12", "subtract 6mo",
"be", 2555, null);
106 changes: 106 additions & 0 deletions test/intl402/Temporal/PlainYearMonth/prototype/add/basic-chinese.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
// Copyright (C) 2025 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-temporal.plainyearmonth.prototype.add
description: Basic addition and subtraction in the chinese calendar
features: [Temporal, Intl.Era-monthcode]
includes: [temporalHelpers.js]
---*/

const calendar = "chinese";
const options = { overflow: "reject" };

// Years

const years1 = new Temporal.Duration(1);
const years1n = new Temporal.Duration(-1);
const years5 = new Temporal.Duration(5);
const years5n = new Temporal.Duration(-5);

const date201802 = Temporal.PlainYearMonth.from({ year: 2018, monthCode: "M02", calendar }, options);

TemporalHelpers.assertPlainYearMonth(
date201802.add(years1),
2019, 2, "M02", "Adding 1 year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201802.add(years5),
2023, 2, "M02", "Adding 5 years",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201802.add(years1n),
2017, 2, "M02", "Subtracting 1 year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201802.add(years5n),
2013, 2, "M02", "Subtracting 5 years",
undefined, undefined, null);

// Months

const months1 = new Temporal.Duration(0, 1);
const months1n = new Temporal.Duration(0, -1);
const months4 = new Temporal.Duration(0, 4);
const months4n = new Temporal.Duration(0, -4);
const months6 = new Temporal.Duration(0, 6);
const months6n = new Temporal.Duration(0, -6);

const date201901 = Temporal.PlainYearMonth.from({ year: 2019, monthCode: "M01", calendar }, options);
const date201906 = Temporal.PlainYearMonth.from({ year: 2019, monthCode: "M06", calendar }, options);
const date201911 = Temporal.PlainYearMonth.from({ year: 2019, monthCode: "M11", calendar }, options);
const date201912 = Temporal.PlainYearMonth.from({ year: 2019, monthCode: "M12", calendar }, options);
const date200012 = Temporal.PlainYearMonth.from({ year: 2000, monthCode: "M12", calendar }, options);

TemporalHelpers.assertPlainYearMonth(
date201911.add(months1),
2019, 12, "M12", "Adding 1 month, with result in same year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201912.add(months1),
2020, 1, "M01", "Adding 1 month, with result in next year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201906.add(months4),
2019, 10, "M10", "Adding 4 months, with result in same year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201912.add(months4),
2020, 4, "M04", "Adding 4 months, with result in next year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201911.add(months1n),
2019, 10, "M10", "Subtracting 1 month, with result in same year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201901.add(months1n),
2018, 12, "M12", "Subtracting 1 month, with result in previous year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201906.add(months4n),
2019, 2, "M02", "Subtracting 4 months, with result in same year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date201901.add(months4n),
2018, 9, "M09", "Subtracting 4 months, with result in previous year",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date200012.add(months6),
2001, 6, "M05", "Adding 6 months, with result in next year (leap year)",
undefined, undefined, null);

TemporalHelpers.assertPlainYearMonth(
date200012.add(months6n),
2000, 6, "M06", "Subtracting 6 months, with result in same year",
undefined, undefined, null);
106 changes: 106 additions & 0 deletions test/intl402/Temporal/PlainYearMonth/prototype/add/basic-coptic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
// Copyright (C) 2025 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-temporal.plainyearmonth.prototype.add
description: Basic addition and subtraction in the coptic calendar
features: [Temporal, Intl.Era-monthcode]
includes: [temporalHelpers.js]
---*/

const calendar = "coptic";
const options = { overflow: "reject" };

// Years

const years1 = new Temporal.Duration(1);
const years1n = new Temporal.Duration(-1);
const years5 = new Temporal.Duration(5);
const years5n = new Temporal.Duration(-5);

const date174202 = Temporal.PlainYearMonth.from({ year: 1742, monthCode: "M02", calendar }, options);

TemporalHelpers.assertPlainYearMonth(
date174202.add(years1),
1743, 2, "M02", "Adding 1 year", "am", 1743, null
);

TemporalHelpers.assertPlainYearMonth(
date174202.add(years5),
1747, 2, "M02", "Adding 5 years", "am", 1747, null
);

TemporalHelpers.assertPlainYearMonth(
date174202.add(years1n),
1741, 2, "M02", "Subtracting 1 year", "am", 1741, null
);

TemporalHelpers.assertPlainYearMonth(
date174202.add(years5n),
1737, 2, "M02", "Subtracting 5 years", "am", 1737, null
);

// Months

const months1 = new Temporal.Duration(0, 1);
const months1n = new Temporal.Duration(0, -1);
const months4 = new Temporal.Duration(0, 4);
const months4n = new Temporal.Duration(0, -4);
const months6 = new Temporal.Duration(0, 6);
const months6n = new Temporal.Duration(0, -6);

const date171612 = Temporal.PlainYearMonth.from({ year: 1716, monthCode: "M12", calendar }, options);
const date174301 = Temporal.PlainYearMonth.from({ year: 1743, monthCode: "M01", calendar }, options);
const date174306 = Temporal.PlainYearMonth.from({ year: 1743, monthCode: "M06", calendar }, options);
const date174311 = Temporal.PlainYearMonth.from({ year: 1743, monthCode: "M11", calendar }, options);
const date174213 = Temporal.PlainYearMonth.from({ year: 1742, monthCode: "M13", calendar }, options);

TemporalHelpers.assertPlainYearMonth(
date174311.add(months1),
1743, 12, "M12", "Adding 1 month, with result in same year", "am", 1743, null
);

TemporalHelpers.assertPlainYearMonth(
date174213.add(months1),
1743, 1, "M01", "Adding 1 month, with result in next year", "am", 1743, null
);

TemporalHelpers.assertPlainYearMonth(
date174306.add(months4),
1743, 10, "M10", "Adding 4 months, with result in same year", "am", 1743, null
);

TemporalHelpers.assertPlainYearMonth(
date174213.add(months4),
1743, 4, "M04", "Adding 4 months, with result in next year", "am", 1743, null
);

TemporalHelpers.assertPlainYearMonth(
date174311.add(months1n),
1743, 10, "M10", "Subtracting 1 month, with result in same year", "am", 1743, null
);

TemporalHelpers.assertPlainYearMonth(
date174301.add(months1n),
1742, 13, "M13", "Subtracting 1 month, with result in previous year", "am", 1742, null
);

TemporalHelpers.assertPlainYearMonth(
date174306.add(months4n),
1743, 2, "M02", "Subtracting 4 months, with result in same year", "am", 1743, null
);

TemporalHelpers.assertPlainYearMonth(
date174301.add(months4n),
1742, 10, "M10", "Subtracting 4 months, with result in previous year", "am", 1742, null
);

TemporalHelpers.assertPlainYearMonth(
date171612.add(months6),
1717, 5, "M05", "Adding 6 months, with result in next year", "am", 1717, null
);
const calculatedStart = date171612.add(months6).add(months6n);
TemporalHelpers.assertPlainYearMonth(
calculatedStart,
1716, 12, "M12", "Subtracting 6 months, with result in previous year", "am", 1716, null
);
Loading