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 |