summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/Date/prototype/toJSON/invoke-arguments.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/built-ins/Date/prototype/toJSON/invoke-arguments.js')
-rw-r--r--js/src/tests/test262/built-ins/Date/prototype/toJSON/invoke-arguments.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Date/prototype/toJSON/invoke-arguments.js b/js/src/tests/test262/built-ins/Date/prototype/toJSON/invoke-arguments.js
new file mode 100644
index 0000000000..59638976cc
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Date/prototype/toJSON/invoke-arguments.js
@@ -0,0 +1,44 @@
+// 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: >
+ toISOString is called with correct context and without arguments.
+info: |
+ Date.prototype.toJSON ( key )
+
+ [...]
+ 4. Return ? Invoke(O, "toISOString").
+
+ Invoke ( V, P [ , argumentsList ] )
+
+ [...]
+ 3. Let func be ? GetV(V, P).
+ 4. Return ? Call(func, V, argumentsList).
+---*/
+
+var getCount = 0, getContext;
+var callCount = 0, callContext, callArguments;
+var obj = {
+ get toISOString() {
+ getCount += 1;
+ getContext = this;
+
+ return function() {
+ callCount += 1;
+ callContext = this;
+ callArguments = arguments;
+ };
+ },
+};
+
+Date.prototype.toJSON.call(obj);
+
+assert.sameValue(getCount, 1);
+assert.sameValue(getContext, obj);
+
+assert.sameValue(callCount, 1);
+assert.sameValue(callContext, obj);
+assert.sameValue(callArguments.length, 0);
+
+reportCompare(0, 0);