| // Copyright (C) 2021 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: TypeError thrown if timeZone.getOffsetNanosecondsFor is not callable |
| features: [BigInt, Symbol, Temporal, arrow-function] |
| ---*/ |
| |
| [undefined, null, true, Math.PI, 'string', Symbol('sym'), 42n, {}].forEach((notCallable) => { |
| const timeZone = new Temporal.TimeZone("UTC"); |
| const duration = new Temporal.Duration(1, 2, 3, 4, 5, 6, 7, 987, 654, 321); |
| const other = new Temporal.Duration(2); |
| const relativeTo = new Temporal.ZonedDateTime(1_000_000_000_987_654_321n, timeZone); |
| timeZone.getOffsetNanosecondsFor = notCallable; |
| assert.throws( |
| TypeError, |
| () => duration.add(other, { relativeTo }), |
| `Uncallable ${notCallable === null ? 'null' : typeof notCallable} getOffsetNanosecondsFor should throw TypeError` |
| ); |
| }); |