mirror of
https://github.com/tc39/test262.git
synced 2025-07-21 21:14:45 +02:00
Added new tests to reflect the change that daysInMonth is the count of days in a month
This change affects how PlainYearMonth's add and subtract behave. They now ignore daysInMonth reimplementations in the calendar, and they call dateadd() a different number of times. See https://github.com/tc39/proposal-temporal/issues/1315
This commit is contained in:
parent
d7fa398364
commit
72c0c5e163
@ -0,0 +1,18 @@
|
||||
// Copyright (C) 2023 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: Duration addition to PlainYearMonth calls Calendar.dateAdd the right number of times
|
||||
includes: [temporalHelpers.js]
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const calendar = TemporalHelpers.calendarDateAddPlainDateInstance();
|
||||
const instance = new Temporal.PlainYearMonth(1983, 3, calendar);
|
||||
TemporalHelpers.assertPlainYearMonth(instance.add({days: 31}), 1983, 4, 'M04', "Adding 31 days to march in is8601 calendar")
|
||||
assert.sameValue(calendar.dateAddCallCount, 1, "dateAdd called once with positive add");
|
||||
|
||||
calendar.dateAddCallCount = 0;
|
||||
TemporalHelpers.assertPlainYearMonth(instance.add({days: -31}), 1983, 2, 'M02', "Adding -31 days to march in is8601 calendar")
|
||||
assert.sameValue(calendar.dateAddCallCount, 3, "dateAdd called 3 times with negative add");
|
23
test/built-ins/Temporal/PlainYearMonth/prototype/add/custom-daysInMonth-irrelevant.js
vendored
Normal file
23
test/built-ins/Temporal/PlainYearMonth/prototype/add/custom-daysInMonth-irrelevant.js
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
// Copyright (C) 2023 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: Addition of a negative duration to a PlainYearMonth is not influenced by the implementation of daysInMonth()
|
||||
includes: [temporalHelpers.js]
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
class CustomCalendar extends Temporal.Calendar {
|
||||
constructor() {
|
||||
super("iso8601");
|
||||
}
|
||||
daysInMonth(ym, ...args) {
|
||||
return 15;
|
||||
}
|
||||
}
|
||||
|
||||
const customCalendar = new CustomCalendar();
|
||||
const instance = new Temporal.PlainYearMonth(2023, 3, customCalendar);
|
||||
|
||||
TemporalHelpers.assertPlainYearMonth(instance.add({days: -30}), 2023, 3, 'M03', "Adding -30 days from calendar reimplementing daysinMonth()")
|
@ -0,0 +1,18 @@
|
||||
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-temporal.plainyearmonth.prototype.subtract
|
||||
description: Duration subtraction from PlainYearMonth calls Calendar.dateAdd the right number of times
|
||||
includes: [temporalHelpers.js]
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const calendar = TemporalHelpers.calendarDateAddPlainDateInstance();
|
||||
const instance = new Temporal.PlainYearMonth(1983, 3, calendar);
|
||||
TemporalHelpers.assertPlainYearMonth(instance.subtract({days: 31}), 1983, 2, 'M02', "Removing 31 days to march in is8601 calendar")
|
||||
assert.sameValue(calendar.dateAddCallCount, 3, "dateAdd called 3 times with positive subtract");
|
||||
|
||||
calendar.dateAddCallCount = 0;
|
||||
TemporalHelpers.assertPlainYearMonth(instance.subtract({days: -31}), 1983, 4, 'M04', "Removing -31 days to march in is8601 calendar")
|
||||
assert.sameValue(calendar.dateAddCallCount, 1, "dateAdd called once with negative subtract");
|
23
test/built-ins/Temporal/PlainYearMonth/prototype/subtract/custom-daysInMonth-irrelevant.js
vendored
Normal file
23
test/built-ins/Temporal/PlainYearMonth/prototype/subtract/custom-daysInMonth-irrelevant.js
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-temporal.plainyearmonth.prototype.subtract
|
||||
description: Subtraction of positive duration to a PlainYearMonth is not influenced by the implementation of daysInMonth()
|
||||
includes: [temporalHelpers.js]
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
class CustomCalendar extends Temporal.Calendar {
|
||||
constructor() {
|
||||
super("iso8601");
|
||||
}
|
||||
daysInMonth(ym, ...args) {
|
||||
return 15;
|
||||
}
|
||||
}
|
||||
|
||||
const customCalendar = new CustomCalendar();
|
||||
const instance = new Temporal.PlainYearMonth(2023, 3, customCalendar);
|
||||
|
||||
TemporalHelpers.assertPlainYearMonth(instance.subtract({days: 30}), 2023, 3, 'M03', "Subtracting 30 days from calendar reimplementing daysinMonth()")
|
Loading…
x
Reference in New Issue
Block a user