diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Date/prototype/toJSON/to-primitive-value-of.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Date/prototype/toJSON/to-primitive-value-of.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Date/prototype/toJSON/to-primitive-value-of.js b/js/src/tests/test262/built-ins/Date/prototype/toJSON/to-primitive-value-of.js new file mode 100644 index 0000000000..f8cf0c5f19 --- /dev/null +++ b/js/src/tests/test262/built-ins/Date/prototype/toJSON/to-primitive-value-of.js @@ -0,0 +1,48 @@ +// Copyright (C) 2019 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-date.prototype.tojson +description: > + This value is coerced to primitive with Number hint (OrdinaryToPrimitive). +info: | + Date.prototype.toJSON ( key ) + + [...] + 2. Let tv be ? ToPrimitive(O, hint Number). + + ToPrimitive ( input [ , PreferredType ] ) + + 1. Assert: input is an ECMAScript language value. + 2. If Type(input) is Object, then + [...] + g. Return ? OrdinaryToPrimitive(input, hint). + + OrdinaryToPrimitive ( O, hint ) + + [...] + 5. For each name in methodNames in List order, do + a. Let method be ? Get(O, name). + b. If IsCallable(method) is true, then + i. Let result be ? Call(method, O). + ii. If Type(result) is not Object, return result. +---*/ + +var callCount = 0, _this, _arguments; +var result = []; +var obj = { + toISOString: function() { return result; }, + toString: function() { throw new Test262Error('should not be called'); }, + valueOf: function() { + callCount += 1; + _this = this; + _arguments = arguments; + return 'NaN'; + }, +}; + +assert.sameValue(Date.prototype.toJSON.call(obj), result); +assert.sameValue(callCount, 1); +assert.sameValue(_this, obj); +assert.sameValue(_arguments.length, 0); + +reportCompare(0, 0); |