Split addition-across-lunisolar-leap-months across calendars

Also remove unnecessary check for out-dated Chinese calendar data.
This commit is contained in:
André Bargull 2025-03-14 10:07:01 +01:00 committed by Ms2ger
parent c12ea5c2d9
commit ce7e72d210
3 changed files with 96 additions and 93 deletions

View File

@ -0,0 +1,49 @@
// Copyright (C) 2018 Bloomberg LP. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal-intl
description: Addition across lunisolar leap months
features: [Temporal]
---*/
const chineseYearOffset = new Temporal.PlainDate(1, 1, 1, "chinese").year;
// Adding years across Chinese leap month
var date = Temporal.PlainDate.from({
year: 2000 + chineseYearOffset,
monthCode: "M08",
day: 2,
calendar: "chinese"
});
var added = date.add({ years: 1 });
assert.sameValue(added.day, date.day);
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
// Adding months across Chinese leap month
var date = Temporal.PlainDate.from({
year: 2000 + chineseYearOffset,
monthCode: "M08",
day: 2,
calendar: "chinese"
});
var added = date.add({ months: 13 });
assert.sameValue(added.day, date.day);
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
// Adding months and years across Chinese leap month
var date = Temporal.PlainDate.from({
year: 2001 + chineseYearOffset,
monthCode: "M08",
day: 2,
calendar: "chinese"
});
var added = date.add({
years: 1,
months: 12
});
assert.sameValue(added.day, date.day);
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 2);

View File

@ -0,0 +1,47 @@
// Copyright (C) 2018 Bloomberg LP. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal-intl
description: Addition across lunisolar leap months
features: [Temporal]
---*/
// Adding years across Hebrew leap month
var date = Temporal.PlainDate.from({
year: 5783,
monthCode: "M08",
day: 2,
calendar: "hebrew"
});
var added = date.add({ years: 1 });
assert.sameValue(added.day, date.day);
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
// Adding months across Hebrew leap month
var date = Temporal.PlainDate.from({
year: 5783,
monthCode: "M08",
day: 2,
calendar: "hebrew"
});
var added = date.add({ months: 13 });
assert.sameValue(added.day, date.day);
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
// Adding months and years across Hebrew leap month
var date = Temporal.PlainDate.from({
year: 5783,
monthCode: "M08",
day: 2,
calendar: "hebrew"
});
var added = date.add({
years: 1,
months: 12
});
assert.sameValue(added.day, date.day);
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 2);

View File

@ -1,93 +0,0 @@
// Copyright (C) 2018 Bloomberg LP. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal-intl
description: Addition across lunisolar leap months
features: [Temporal]
---*/
// Adding years across Hebrew leap month
var date = Temporal.PlainDate.from({
year: 5783,
monthCode: "M08",
day: 2,
calendar: "hebrew"
});
var added = date.add({ years: 1 });
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
// Adding months across Hebrew leap month
var date = Temporal.PlainDate.from({
year: 5783,
monthCode: "M08",
day: 2,
calendar: "hebrew"
});
var added = date.add({ months: 13 });
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
// Adding months and years across Hebrew leap month
var date = Temporal.PlainDate.from({
year: 5783,
monthCode: "M08",
day: 2,
calendar: "hebrew"
});
var added = date.add({
years: 1,
months: 12
});
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 2);
var testChineseData = new Date("2001-02-01T00:00Z").toLocaleString("en-US-u-ca-chinese", {
day: "numeric",
month: "numeric",
year: "numeric",
era: "short",
timeZone: "UTC"
});
var hasOutdatedChineseIcuData = !testChineseData.endsWith("2001");
// Adding years across Chinese leap month"
if(hasOutdatedChineseIcuData) {
var date = Temporal.PlainDate.from({
year: 2000,
monthCode: "M08",
day: 2,
calendar: "chinese"
});
var added = date.add({ years: 1 });
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
}
// Adding months across Chinese leap month
if(hasOutdatedChineseIcuData) {
var date = Temporal.PlainDate.from({
year: 2000,
monthCode: "M08",
day: 2,
calendar: "chinese"
});
var added = date.add({ months: 13 });
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 1);
}
// Adding months and years across Chinese leap month
if(hasOutdatedChineseIcuData) {
var date = Temporal.PlainDate.from({
year: 2001,
monthCode: "M08",
day: 2,
calendar: "chinese"
});
var added = date.add({
years: 1,
months: 12
});
assert.sameValue(added.monthCode, date.monthCode);
assert.sameValue(added.year, date.year + 2);
};