blob: 02a7e447e4d0894e3721990009f665d61bcf7435 [file] [edit]
//@ requireOptions("--useTemporal=1")
function shouldThrow(op, errorConstructor) {
try {
op();
} catch (e) {
if (!(e instanceof errorConstructor)) {
throw new Error(`threw ${e}, but should have thrown ${errorConstructor.name}`);
}
return;
}
throw new Error(`Expected to throw ${errorConstructor.name}, but no exception thrown`);
}
{
const invalidValues = [
2**32,
2**32 + 1,
Number.MAX_SAFE_INTEGER,
Number.MAX_VALUE,
];
for (const v of invalidValues) {
shouldThrow(() => { Temporal.Duration.from({ years: v }); }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ months: v }); }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ weeks: v }); }, RangeError);
}
}
{
shouldThrow(() => { Temporal.Duration.from({ days: Math.ceil((Number.MAX_SAFE_INTEGER + 1) / 86400) }); }, RangeError)
shouldThrow(() => { Temporal.Duration.from({ hours: Math.ceil((Number.MAX_SAFE_INTEGER + 1) / 3600) }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ minutes: Math.ceil((Number.MAX_SAFE_INTEGER + 1) / 60) }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ seconds: Number.MAX_SAFE_INTEGER + 1 }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ milliseconds: (Number.MAX_SAFE_INTEGER + 1) * 1e3 }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ milliseconds: 9007199254740992_000 }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ microseconds: (Number.MAX_SAFE_INTEGER + 1) * 1e6 }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ microseconds: 9007199254740992_000_000 }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ nanoseconds: (Number.MAX_SAFE_INTEGER + 1) * 1e9 }) }, RangeError);
shouldThrow(() => { Temporal.Duration.from({ nanoseconds: 9007199254740992_000_000_000 }) }, RangeError);
}