mirror of https://github.com/tc39/test262.git
Test conversion of object to string in Temporal.Instant context
An object may be given in any context where a Temporal.Instant is expected (see ToTemporalInstant). There is no conversion from a property bag to an Instant, unlike with other Temporal types. Instead the object is converted to a string, and if its toString() method yields a valid ISO string, the conversion succeeds. (An object with the default Object.prototype.toString will not.)
This commit is contained in:
parent
d28ca991cb
commit
15ed94c891
|
@ -0,0 +1,22 @@
|
|||
// 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.instant.compare
|
||||
description: Object is converted to a string, then to Temporal.Instant
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const epoch = new Temporal.Instant(0n);
|
||||
|
||||
const arg = {};
|
||||
assert.throws(RangeError, () => Temporal.Instant.compare(arg, epoch), "[object Object] is not a valid ISO string (first argument)");
|
||||
assert.throws(RangeError, () => Temporal.Instant.compare(epoch, arg), "[object Object] is not a valid ISO string (second argument)");
|
||||
|
||||
arg.toString = function() {
|
||||
return "1970-01-01T00:00Z";
|
||||
};
|
||||
const result1 = Temporal.Instant.compare(arg, epoch);
|
||||
assert.sameValue(result1, 0, "result of toString is interpreted as ISO string (first argument)");
|
||||
const result2 = Temporal.Instant.compare(epoch, arg);
|
||||
assert.sameValue(result2, 0, "result of toString is interpreted as ISO string (second argument)");
|
|
@ -0,0 +1,17 @@
|
|||
// 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.instant.from
|
||||
description: Object is converted to a string, then to Temporal.Instant
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const arg = {};
|
||||
assert.throws(RangeError, () => Temporal.Instant.from(arg), "[object Object] is not a valid ISO string");
|
||||
|
||||
arg.toString = function() {
|
||||
return "1970-01-01T00:00Z";
|
||||
};
|
||||
const result = Temporal.Instant.from(arg);
|
||||
assert.sameValue(result.epochNanoseconds, 0n, "result of toString is interpreted as ISO string");
|
19
test/built-ins/Temporal/Instant/prototype/equals/argument-object-tostring.js
vendored
Normal file
19
test/built-ins/Temporal/Instant/prototype/equals/argument-object-tostring.js
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
// 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.instant.prototype.equals
|
||||
description: Object is converted to a string, then to Temporal.Instant
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const instance = new Temporal.Instant(0n);
|
||||
|
||||
const arg = {};
|
||||
assert.throws(RangeError, () => instance.equals(arg), "[object Object] is not a valid ISO string");
|
||||
|
||||
arg.toString = function() {
|
||||
return "1970-01-01T00:00Z";
|
||||
};
|
||||
const result = instance.equals(arg);
|
||||
assert.sameValue(result, true, "result of toString is interpreted as ISO string");
|
|
@ -0,0 +1,20 @@
|
|||
// 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.instant.prototype.since
|
||||
description: Object is converted to a string, then to Temporal.Instant
|
||||
includes: [temporalHelpers.js]
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const instance = new Temporal.Instant(0n);
|
||||
|
||||
const arg = {};
|
||||
assert.throws(RangeError, () => instance.since(arg), "[object Object] is not a valid ISO string");
|
||||
|
||||
arg.toString = function() {
|
||||
return "1970-01-01T00:00Z";
|
||||
};
|
||||
const result = instance.since(arg);
|
||||
TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "result of toString is interpreted as ISO string");
|
|
@ -0,0 +1,20 @@
|
|||
// 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.instant.prototype.until
|
||||
description: Object is converted to a string, then to Temporal.Instant
|
||||
includes: [temporalHelpers.js]
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const instance = new Temporal.Instant(0n);
|
||||
|
||||
const arg = {};
|
||||
assert.throws(RangeError, () => instance.until(arg), "[object Object] is not a valid ISO string");
|
||||
|
||||
arg.toString = function() {
|
||||
return "1970-01-01T00:00Z";
|
||||
};
|
||||
const result = instance.until(arg);
|
||||
TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "result of toString is interpreted as ISO string");
|
20
test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-object-tostring.js
vendored
Normal file
20
test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-object-tostring.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
// 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.timezone.prototype.getplaindatetimefor
|
||||
description: Object is converted to a string, then to Temporal.Instant
|
||||
includes: [temporalHelpers.js]
|
||||
features: [Temporal]
|
||||
---*/
|
||||
|
||||
const instance = new Temporal.TimeZone("UTC");
|
||||
|
||||
const arg = {};
|
||||
assert.throws(RangeError, () => instance.getPlainDateTimeFor(arg), "[object Object] is not a valid ISO string");
|
||||
|
||||
arg.toString = function() {
|
||||
return "1970-01-01T00:00Z";
|
||||
};
|
||||
const result = instance.getPlainDateTimeFor(arg);
|
||||
TemporalHelpers.assertPlainDateTime(result, 1970, 1, "M01", 1, 0, 0, 0, 0, 0, 0, "result of toString is interpreted as ISO string");
|
Loading…
Reference in New Issue