| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <html> | |
| 3 <head> | |
| 4 <script src="../../resources/js-test.js"></script> | |
| 5 </head> | |
| 6 <body> | |
| 7 <div id="description"></div> | |
| 8 <div id="console"></div> | |
| 9 <script> | |
| 10 description('Test Promise.race'); | |
| 11 | |
| 12 window.jsTestIsAsync = true; | |
| 13 result = undefined; | |
| 14 | |
| 15 var p1 = new Promise(function(resolve) { resolve('p1'); }); | |
| 16 var p2 = new Promise(function(resolve) { resolve('p2'); }); | |
| 17 var p3 = new Promise(function(resolve) { resolve('p3'); }); | |
| 18 var p4 = new Promise(function() {}); | |
| 19 var p5 = new Promise(function() {}); | |
| 20 var p6 = new Promise(function(_, reject) { reject('p6'); }); | |
| 21 var p7 = new Promise(function(_, reject) { reject('p7'); }); | |
| 22 var p8 = new Promise(function(_, reject) { reject('p8'); }); | |
| 23 var p9 = new Promise(function(resolve) { resolve(p2); }); | |
| 24 | |
| 25 Promise.race([p4, p5]).then(function(result) { | |
| 26 testFailed('Promise.race([p4, p5]) is fulfilled.'); | |
| 27 }, function() { | |
| 28 testFailed('Promise.race([p4, p5]) is rejected.'); | |
| 29 }); | |
| 30 | |
| 31 Promise.race().then(function(result) { | |
| 32 testFailed('Promise.race() is fulfilled.'); | |
| 33 }, function() { | |
| 34 testFailed('Promise.race() is rejected.'); | |
| 35 }); | |
| 36 | |
| 37 Promise.race({}).then(function(result) { | |
| 38 testFailed('Promise.race({}) is fulfilled.'); | |
| 39 }, function() { | |
| 40 testFailed('Promise.race({}) is rejected.'); | |
| 41 }); | |
| 42 | |
| 43 // If the argument is an empty array, the result promise won't be fulfilled. | |
| 44 Promise.race([]).then(function(result) { | |
| 45 testFailed('Promise.race([]) is fulfilled.'); | |
| 46 }, function() { | |
| 47 testFailed('Promise.race([]) is rejected.'); | |
| 48 }); | |
| 49 | |
| 50 Promise.race([p4, p1, p6]).then(function(result) { | |
| 51 testPassed('Promise.race([p4, p1, p6]) is fulfilled.'); | |
| 52 window.result = result; | |
| 53 shouldBeEqualToString('result', 'p1'); | |
| 54 }, function() { | |
| 55 testFailed('Promise.race([p4, p1, p6]) is rejected.'); | |
| 56 }).then(function() { | |
| 57 return Promise.race([p4, p6, p1]).then(function(result) { | |
| 58 testFailed('Promise.race([p4, p6, p1]) is fulfilled.'); | |
| 59 }, function(result) { | |
| 60 testPassed('Promise.race([p4, p6, p1]) is rejected.'); | |
| 61 window.result = result; | |
| 62 shouldBeEqualToString('result', 'p6'); | |
| 63 }); | |
| 64 }).then(function() { | |
| 65 return Promise.race([p9]).then(function(result) { | |
| 66 testPassed('Promise.race([p9]) is fulfilled.'); | |
| 67 window.result = result; | |
| 68 shouldBeEqualToString('result', 'p2'); | |
| 69 }, function() { | |
| 70 testFailed('Promise.race([p9]) is rejected.'); | |
| 71 }); | |
| 72 }).then(function() { | |
| 73 // Array hole should not be skipped. | |
| 74 return Promise.race([p4,,]).then(function(result) { | |
| 75 testPassed('Promise.race([p4,,]) is fulfilled.'); | |
| 76 window.result = result; | |
| 77 shouldBe('result', 'undefined'); | |
| 78 }, function() { | |
| 79 testFailed('Promise.race([p4,,]) is rejected.'); | |
| 80 }); | |
| 81 }).then(function() { | |
| 82 // Immediate value should be converted to a promise object by the | |
| 83 // ToPromise operation. | |
| 84 return Promise.race([p4,42]).then(function(result) { | |
| 85 testPassed('Promise.race([p4,42]) is fulfilled.'); | |
| 86 window.result = result; | |
| 87 shouldBe('result', '42'); | |
| 88 }, function() { | |
| 89 testFailed('Promise.race([p4,42]) is rejected.'); | |
| 90 }); | |
| 91 }).then(finishJSTest, finishJSTest); | |
| 92 | |
| 93 shouldBe('result', 'undefined'); | |
| 94 | |
| 95 </script> | |
| 96 </body> | |
| 97 </html> | |
| OLD | NEW |