blob: ae171e0f144cefd31334822161eb1f4a2c42ee81 [file] [log] [blame]
// Copyright (C) 2022 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal.duration.prototype.add
description: relativeTo is required if the largest unit is at least weeks.
includes: [temporalHelpers.js]
features: [Temporal]
---*/
const d = Temporal.Duration.from({ hours: 1 });
const dy = Temporal.Duration.from({ years: 1 });
const dm = Temporal.Duration.from({ months: 1 });
const dw = Temporal.Duration.from({ weeks: 1 });
assert.throws(RangeError, () => d.add(dy));
assert.throws(RangeError, () => d.add(dm));
assert.throws(RangeError, () => d.add(dw));
assert.throws(RangeError, () => dy.add(d));
assert.throws(RangeError, () => dm.add(d));
assert.throws(RangeError, () => dw.add(d));
const relativeTo = Temporal.PlainDate.from("2000-01-01");
TemporalHelpers.assertDuration(d.add(dy, { relativeTo }),
1, 0, 0, 0, 1, 0, 0, 0, 0, 0);
TemporalHelpers.assertDuration(d.add(dm, { relativeTo }),
0, 1, 0, 0, 1, 0, 0, 0, 0, 0);
TemporalHelpers.assertDuration(d.add(dw, { relativeTo }),
0, 0, 1, 0, 1, 0, 0, 0, 0, 0);
TemporalHelpers.assertDuration(dy.add(d, { relativeTo }),
1, 0, 0, 0, 1, 0, 0, 0, 0, 0);
TemporalHelpers.assertDuration(dm.add(d, { relativeTo }),
0, 1, 0, 0, 1, 0, 0, 0, 0, 0);
TemporalHelpers.assertDuration(dw.add(d, { relativeTo }),
0, 0, 1, 0, 1, 0, 0, 0, 0, 0);