summaryrefslogtreecommitdiff
path: root/test/built-ins/Promise
diff options
context:
space:
mode:
authorMike Pennisi <mike@mikepennisi.com>2016-06-24 19:56:05 -0400
committerMike Pennisi <mike@mikepennisi.com>2016-06-27 15:26:36 -0400
commit12902b29c0e257a539e18d433decaaa0228688b2 (patch)
tree0c7de95ae17676d5858ee34f32e8e2e41938f13c /test/built-ins/Promise
parentc62700c8efbb9fac68b14b05083f195b19955236 (diff)
downloadqtdeclarative-testsuites-12902b29c0e257a539e18d433decaaa0228688b2.tar.gz
Add tests for invocation of Promise capability fns
Diffstat (limited to 'test/built-ins/Promise')
-rw-r--r--test/built-ins/Promise/reject/capability-invocation-error.js32
-rw-r--r--test/built-ins/Promise/reject/capability-invocation.js44
-rw-r--r--test/built-ins/Promise/resolve/capability-invocation-error.js32
-rwxr-xr-xtest/built-ins/Promise/resolve/resolve-from-promise-capability.js9
4 files changed, 116 insertions, 1 deletions
diff --git a/test/built-ins/Promise/reject/capability-invocation-error.js b/test/built-ins/Promise/reject/capability-invocation-error.js
new file mode 100644
index 000000000..0d861f69d
--- /dev/null
+++ b/test/built-ins/Promise/reject/capability-invocation-error.js
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Abrupt completion returned by "reject" capability
+esid: sec-promise.reject
+es6id: 25.4.4.4
+info: |
+ 1. Let C be the this value.
+ [...]
+ 3. Let promiseCapability be ? NewPromiseCapability(C).
+ 4. Perform ? Call(promiseCapability.[[Reject]], undefined, « r »).
+
+ 25.4.1.5 NewPromiseCapability
+ [...]
+ 6. Let promise be Construct(C, «executor»).
+ 7. ReturnIfAbrupt(promise).
+---*/
+
+var P = function(executor) {
+ return new Promise(function() {
+ executor(
+ function() {},
+ function() {
+ throw new Test262Error();
+ }
+ );
+ });
+};
+
+assert.throws(Test262Error, function() {
+ Promise.reject.call(P);
+});
diff --git a/test/built-ins/Promise/reject/capability-invocation.js b/test/built-ins/Promise/reject/capability-invocation.js
new file mode 100644
index 000000000..3a9c6891a
--- /dev/null
+++ b/test/built-ins/Promise/reject/capability-invocation.js
@@ -0,0 +1,44 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Invocation of "reject" capability
+esid: sec-promise.reject
+es6id: 25.4.4.4
+info: |
+ 1. Let C be the this value.
+ [...]
+ 3. Let promiseCapability be ? NewPromiseCapability(C).
+ 4. Perform ? Call(promiseCapability.[[Reject]], undefined, « r »).
+ [...]
+
+ 25.4.1.5 NewPromiseCapability
+ [...]
+ 6. Let promise be Construct(C, «executor»).
+ 7. ReturnIfAbrupt(promise).
+---*/
+
+var expectedThis = (function() { return this; })();
+var resolveCount = 0;
+var thisValue, args;
+var P = function(executor) {
+ return new Promise(function() {
+ executor(
+ function() {
+ resolveCount += 1;
+ },
+ function() {
+ thisValue = this;
+ args = arguments;
+ }
+ );
+ });
+};
+
+Promise.reject.call(P, 24601);
+
+assert.sameValue(resolveCount, 0);
+
+assert.sameValue(thisValue, expectedThis);
+assert.sameValue(typeof args, 'object');
+assert.sameValue(args.length, 1);
+assert.sameValue(args[0], 24601);
diff --git a/test/built-ins/Promise/resolve/capability-invocation-error.js b/test/built-ins/Promise/resolve/capability-invocation-error.js
new file mode 100644
index 000000000..f28dad1be
--- /dev/null
+++ b/test/built-ins/Promise/resolve/capability-invocation-error.js
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Abrupt completion returned by "resolve" capability
+esid: sec-promise.resolve
+es6id: 25.4.4.5
+info: |
+ 1. Let C be the this value.
+ [...]
+ 4. Let promiseCapability be ? NewPromiseCapability(C).
+ 5. Perform ? Call(promiseCapability.[[Resolve]], undefined, « x »).
+
+ 25.4.1.5 NewPromiseCapability
+ [...]
+ 6. Let promise be Construct(C, «executor»).
+ 7. ReturnIfAbrupt(promise).
+---*/
+
+var P = function(executor) {
+ return new Promise(function() {
+ executor(
+ function() {
+ throw new Test262Error();
+ },
+ function() {}
+ );
+ });
+};
+
+assert.throws(Test262Error, function() {
+ Promise.resolve.call(P);
+});
diff --git a/test/built-ins/Promise/resolve/resolve-from-promise-capability.js b/test/built-ins/Promise/resolve/resolve-from-promise-capability.js
index 1a8ddd487..6eff5fb3a 100755
--- a/test/built-ins/Promise/resolve/resolve-from-promise-capability.js
+++ b/test/built-ins/Promise/resolve/resolve-from-promise-capability.js
@@ -16,16 +16,23 @@ info: >
...
---*/
+var expectedThisValue = (function() { return this; }());
var callCount = 0;
var object = {};
+var thisValue, args;
Promise.resolve.call(function(executor) {
function resolve(v) {
callCount += 1;
- assert.sameValue(v, object);
+ thisValue = this;
+ args = arguments;
}
executor(resolve, $ERROR);
assert.sameValue(callCount, 0, "callCount before returning from constructor");
}, object);
assert.sameValue(callCount, 1, "callCount after call to resolve()");
+assert.sameValue(typeof args, "object");
+assert.sameValue(args.length, 1);
+assert.sameValue(args[0], object);
+assert.sameValue(thisValue, expectedThisValue);