capability-executor-not-callable.js (2763B)
1 // Copyright (C) 2015 André Bargull. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 es6id: 25.4.4.5 6 description: > 7 Throws a TypeError if either resolve or reject capability is not callable. 8 info: | 9 Promise.resolve ( x ) 10 11 ... 12 4. Let promiseCapability be NewPromiseCapability(C). 13 5. ReturnIfAbrupt(promiseCapability). 14 ... 15 16 25.4.1.5 NewPromiseCapability ( C ) 17 ... 18 4. Let executor be a new built-in function object as defined in GetCapabilitiesExecutor Functions (25.4.1.5.1). 19 5. Set the [[Capability]] internal slot of executor to promiseCapability. 20 6. Let promise be Construct(C, «executor»). 21 7. ReturnIfAbrupt(promise). 22 8. If IsCallable(promiseCapability.[[Resolve]]) is false, throw a TypeError exception. 23 9. If IsCallable(promiseCapability.[[Reject]]) is false, throw a TypeError exception. 24 ... 25 ---*/ 26 27 var checkPoint = ""; 28 assert.throws(TypeError, function() { 29 Promise.resolve.call(function(executor) { 30 checkPoint += "a"; 31 }, {}); 32 }, "executor not called at all"); 33 assert.sameValue(checkPoint, "a", "executor not called at all"); 34 35 var checkPoint = ""; 36 assert.throws(TypeError, function() { 37 Promise.resolve.call(function(executor) { 38 checkPoint += "a"; 39 executor(); 40 checkPoint += "b"; 41 }, {}); 42 }, "executor called with no arguments"); 43 assert.sameValue(checkPoint, "ab", "executor called with no arguments"); 44 45 var checkPoint = ""; 46 assert.throws(TypeError, function() { 47 Promise.resolve.call(function(executor) { 48 checkPoint += "a"; 49 executor(undefined, undefined); 50 checkPoint += "b"; 51 }, {}); 52 }, "executor called with (undefined, undefined)"); 53 assert.sameValue(checkPoint, "ab", "executor called with (undefined, undefined)"); 54 55 var checkPoint = ""; 56 assert.throws(TypeError, function() { 57 Promise.resolve.call(function(executor) { 58 checkPoint += "a"; 59 executor(undefined, function() {}); 60 checkPoint += "b"; 61 }, {}); 62 }, "executor called with (undefined, function)"); 63 assert.sameValue(checkPoint, "ab", "executor called with (undefined, function)"); 64 65 var checkPoint = ""; 66 assert.throws(TypeError, function() { 67 Promise.resolve.call(function(executor) { 68 checkPoint += "a"; 69 executor(function() {}, undefined); 70 checkPoint += "b"; 71 }, {}); 72 }, "executor called with (function, undefined)"); 73 assert.sameValue(checkPoint, "ab", "executor called with (function, undefined)"); 74 75 var checkPoint = ""; 76 assert.throws(TypeError, function() { 77 Promise.resolve.call(function(executor) { 78 checkPoint += "a"; 79 executor(123, "invalid value"); 80 checkPoint += "b"; 81 }, {}); 82 }, "executor called with (Number, String)"); 83 assert.sameValue(checkPoint, "ab", "executor called with (Number, String)"); 84 85 reportCompare(0, 0);