blob: f07421fd9f815582bfefb343e42cd6b9b9eee479 [file] [log] [blame]
// Copyright 2018 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-Intl.RelativeTimeFormat.prototype.formatToParts
description: Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
info: |
Intl.RelativeTimeFormat.prototype.formatToParts( value, unit )
3. Let value be ? ToNumber(value).
PartitionRelativeTimePattern ( relativeTimeFormat, value, unit )
4. If isFinite(value) is false, then throw a RangeError exception.
features: [Intl.RelativeTimeFormat]
---*/
const rtf = new Intl.RelativeTimeFormat("en-US");
assert.sameValue(typeof rtf.formatToParts, "function", "formatToParts should be supported");
const values = [
[undefined, "undefined"],
[NaN, "NaN"],
[Infinity, "Infinity"],
[-Infinity, "-Infinity"],
["string", '"string"'],
[{}, "empty object"],
[{ toString() { return NaN; }, valueOf: undefined }, "object with toString"],
[{ valueOf() { return NaN; }, toString: undefined }, "object with valueOf"],
];
for (const [value, name] of values) {
assert.throws(RangeError, () => rtf.formatToParts(value, "second"), name);
}