From 081afde9c192ab4cae539ae7fcb57c160253ee11 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Wed, 3 Jun 2020 12:54:30 -0400 Subject: [PATCH] Promise.any: coverage updates, R3 --- .../any/capability-reject-throws-no-close.js | 62 ++++++++++++------- .../any/capability-resolve-throws-no-close.js | 61 +++++++++++------- .../any/capability-resolve-throws-reject.js | 15 +++-- 3 files changed, 89 insertions(+), 49 deletions(-) diff --git a/test/built-ins/Promise/any/capability-reject-throws-no-close.js b/test/built-ins/Promise/any/capability-reject-throws-no-close.js index 57b11074bb..a900d2c3d0 100644 --- a/test/built-ins/Promise/any/capability-reject-throws-no-close.js +++ b/test/built-ins/Promise/any/capability-reject-throws-no-close.js @@ -16,37 +16,53 @@ info: | IfAbruptRejectPromise(result, promiseCapability). Return Completion(result). +flags: [async] features: [Promise.any, Symbol.iterator] ---*/ - +let callCount = 0; let nextCount = 0; let returnCount = 0; -let iter = {}; -iter[Symbol.iterator] = function() { - return { - next() { - nextCount += 1; - return { - done: true - }; - }, - return() { - returnCount += 1; - return {}; - } - }; +let iter = { + [Symbol.iterator]() { + callCount++; + return { + next() { + callCount++ + nextCount++; + return { + done: true + }; + }, + return() { + callCount++; + returnCount++; + return {}; + } + }; + } }; -let P = function(executor) { - return new Promise(function(resolve) { - executor(resolve, function() { - throw new Test262Error(); + +function P(executor) { + callCount++; + return new Promise((_, reject) => { + callCount++; + executor(() => { + callCount++; + $ERROR(); + }, () => { + callCount++; + reject(new Test262Error('reject throws')); }); }); }; P.resolve = Promise.resolve; -Promise.any.call(P, iter); - -assert.sameValue(nextCount, 1); -assert.sameValue(returnCount, 0); +Promise.any.call(P, iter).then( + () => { + $DONE('The promise should be rejected.'); +}, (reason) => { + assert.sameValue(nextCount, 1); + assert.sameValue(returnCount, 0); + assert.sameValue(callCount, 5); +}).then($DONE, $DONE); diff --git a/test/built-ins/Promise/any/capability-resolve-throws-no-close.js b/test/built-ins/Promise/any/capability-resolve-throws-no-close.js index 7521a4afc7..0cfb91621b 100644 --- a/test/built-ins/Promise/any/capability-resolve-throws-no-close.js +++ b/test/built-ins/Promise/any/capability-resolve-throws-no-close.js @@ -16,36 +16,53 @@ info: | IfAbruptRejectPromise(result, promiseCapability). Return Completion(result). +flags: [async] features: [Promise.any, Symbol.iterator] ---*/ +let callCount = 0; let nextCount = 0; let returnCount = 0; -let iter = {}; -iter[Symbol.iterator] = function() { - return { - next() { - nextCount += 1; - return { - done: true - }; - }, - return() { - returnCount += 1; - return {}; - } - }; +let iter = { + [Symbol.iterator]() { + callCount++; + return { + next() { + callCount++; + nextCount += 1; + return { + done: true + }; + }, + return() { + callCount++; + returnCount += 1; + return {}; + } + }; + } }; -let P = function(executor) { - return new Promise(function(_, reject) { - executor(function() { + +function P(executor) { + callCount++; + return new Promise((_, reject) => { + callCount++; + executor(() => { + callCount++; throw new Test262Error(); - }, reject); + }, (...args) => { + callCount++; + reject(...args); + }); }); }; P.resolve = Promise.resolve; -Promise.any.call(P, iter); - -assert.sameValue(nextCount, 1); -assert.sameValue(returnCount, 0); +Promise.any.call(P, iter).then( + () => { + $DONE('The promise should be rejected.'); +}, (reason) => { + assert.sameValue(nextCount, 1); + assert.sameValue(returnCount, 0); + assert.sameValue(callCount, 5); +}).then($DONE, $DONE); diff --git a/test/built-ins/Promise/any/capability-resolve-throws-reject.js b/test/built-ins/Promise/any/capability-resolve-throws-reject.js index 8936a4f95a..c68f7ca267 100644 --- a/test/built-ins/Promise/any/capability-resolve-throws-reject.js +++ b/test/built-ins/Promise/any/capability-resolve-throws-reject.js @@ -19,12 +19,19 @@ info: | features: [Promise.any, Symbol.iterator] flags: [async] ---*/ +let callCount = 0; let thrown = new Test262Error(); -let P = function(executor) { +function P(executor) { + callCount++; return new Promise((_, reject) => { + callCount++; executor(() => { + callCount++; throw thrown; - }, reject); + }, (...args) => { + callCount++; + reject(...args); + }); }); }; P.resolve = Promise.resolve; @@ -36,7 +43,7 @@ Promise.any.call(P, [1]) // The error was not the result of promise // resolution, so will not be an AggregateError assert.sameValue(thrown, error); - $DONE(); - }); + assert.sameValue(callCount, 6); + }).then($DONE, $DONE);