Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: test/mjsunit/harmony/promises.js

Issue 64223010: Harmony promises (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix Promise.all([]) Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are
4 // met:
5 //
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28 // Flags: --harmony-promises --harmony-observation --allow-natives-syntax
29
30 var asyncAssertsExpected = 0;
31
32 function assertAsyncRan() { ++asyncAssertsExpected }
33
34 function assertAsync(b, s) {
35 if (b) {
36 print(s, "succeeded")
37 } else {
38 %AbortJS(s + " FAILED!") // Simply throwing here will have no effect.
39 }
40 --asyncAssertsExpected
41 }
42
43 function assertAsyncDone(iteration) {
44 var iteration = iteration || 0
45 var dummy = {}
46 Object.observe(dummy,
47 function() {
48 if (asyncAssertsExpected === 0)
49 assertAsync(true, "all")
50 else if (iteration > 10) // Shouldn't take more.
51 assertAsync(false, "all")
52 else
53 assertAsyncDone(iteration + 1)
54 }
55 )
56 dummy.dummy = dummy
57 }
58
59
60 (function() {
61 Promise.resolved(5);
62 Promise.resolved(5).when(undefined, assertUnreachable).when(
63 function(x) { assertAsync(x === undefined, "resolved/when-nohandler") },
64 assertUnreachable
65 )
66 assertAsyncRan()
67 })();
68
69 (function() {
70 Promise.rejected(5).when(assertUnreachable, undefined).when(
71 function(x) { assertAsync(x === undefined, "rejected/when-nohandler") },
72 assertUnreachable
73 )
74 assertAsyncRan()
75 })();
76
77 (function() {
78 Promise.resolved(5).then(undefined, assertUnreachable).when(
79 function(x) { assertAsync(x === undefined, "resolved/then-nohandler") },
80 assertUnreachable
81 )
82 assertAsyncRan()
83 })();
84
85 (function() {
86 Promise.rejected(5).then(assertUnreachable, undefined).when(
87 function(x) { assertAsync(x === undefined, "rejected/then-nohandler") },
88 assertUnreachable
89 )
90 assertAsyncRan()
91 })();
92
93 (function() {
94 var p1 = Promise.resolved(5)
95 var p2 = Promise.resolved(p1)
96 var p3 = Promise.resolved(p2)
97 p3.when(
98 function(x) { assertAsync(x === p2, "resolved/when") },
99 assertUnreachable
100 )
101 assertAsyncRan()
102 })();
103
104 (function() {
105 var p1 = Promise.resolved(5)
106 var p2 = Promise.resolved(p1)
107 var p3 = Promise.resolved(p2)
108 p3.then(
109 function(x) { assertAsync(x === 5, "resolved/then") },
110 assertUnreachable
111 )
112 assertAsyncRan()
113 })();
114
115 (function() {
116 var p1 = Promise.rejected(5)
117 var p2 = Promise.resolved(p1)
118 var p3 = Promise.resolved(p2)
119 p3.when(
120 function(x) { assertAsync(x === p2, "rejected/when") },
121 assertUnreachable
122 )
123 assertAsyncRan()
124 })();
125
126 (function() {
127 var p1 = Promise.rejected(5)
128 var p2 = Promise.resolved(p1)
129 var p3 = Promise.resolved(p2)
130 p3.then(
131 assertUnreachable,
132 function(x) { assertAsync(x === 5, "rejected/then") }
133 )
134 assertAsyncRan()
135 })();
136
137 (function() {
138 var p1 = Promise.resolved(5)
139 var p2 = Promise.resolved(p1)
140 var p3 = Promise.resolved(p2)
141 p3.when(function(x) { return x }, assertUnreachable).when(
142 function(x) { assertAsync(x === p1, "resolved/when/when") },
143 assertUnreachable
144 )
145 assertAsyncRan()
146 })();
147
148 (function() {
149 var p1 = Promise.resolved(5)
150 var p2 = Promise.resolved(p1)
151 var p3 = Promise.resolved(p2)
152 p3.when(function(x) { return x }, assertUnreachable).then(
153 function(x) { assertAsync(x === 5, "resolved/when/then") },
154 assertUnreachable
155 )
156 assertAsyncRan()
157 })();
158
159 (function() {
160 var p1 = Promise.resolved(5)
161 var p2 = Promise.resolved(p1)
162 var p3 = Promise.resolved(p2)
163 p3.when(function(x) { return 6 }, assertUnreachable).when(
164 function(x) { assertAsync(x === 6, "resolved/when/when2") },
165 assertUnreachable
166 )
167 assertAsyncRan()
168 })();
169
170 (function() {
171 var p1 = Promise.resolved(5)
172 var p2 = Promise.resolved(p1)
173 var p3 = Promise.resolved(p2)
174 p3.when(function(x) { return 6 }, assertUnreachable).then(
175 function(x) { assertAsync(x === 6, "resolved/when/then2") },
176 assertUnreachable
177 )
178 assertAsyncRan()
179 })();
180
181 (function() {
182 var p1 = Promise.resolved(5)
183 var p2 = Promise.resolved(p1)
184 var p3 = Promise.resolved(p2)
185 p3.then(function(x) { return x + 1 }, assertUnreachable).when(
186 function(x) { assertAsync(x === 6, "resolved/then/when") },
187 assertUnreachable
188 )
189 assertAsyncRan()
190 })();
191
192 (function() {
193 var p1 = Promise.resolved(5)
194 var p2 = Promise.resolved(p1)
195 var p3 = Promise.resolved(p2)
196 p3.then(function(x) { return x + 1 }, assertUnreachable).then(
197 function(x) { assertAsync(x === 6, "resolved/then/then") },
198 assertUnreachable
199 )
200 assertAsyncRan()
201 })();
202
203 (function() {
204 var p1 = Promise.resolved(5)
205 var p2 = Promise.resolved(p1)
206 var p3 = Promise.resolved(p2)
207 p3.then(function(x) { return Promise.resolved(x+1) }, assertUnreachable).when(
208 function(x) { assertAsync(x === 6, "resolved/then/when2") },
209 assertUnreachable
210 )
211 assertAsyncRan()
212 })();
213
214 (function() {
215 var p1 = Promise.resolved(5)
216 var p2 = Promise.resolved(p1)
217 var p3 = Promise.resolved(p2)
218 p3.then(function(x) { return Promise.resolved(x+1) }, assertUnreachable).then(
219 function(x) { assertAsync(x === 6, "resolved/then/then2") },
220 assertUnreachable
221 )
222 assertAsyncRan()
223 })();
224
225 (function() {
226 var p1 = Promise.resolved(5)
227 var p2 = Promise.resolved(p1)
228 var p3 = Promise.resolved(p2)
229 p3.when(function(x) { throw 6 }, assertUnreachable).when(
230 assertUnreachable,
231 function(x) { assertAsync(x === 6, "resolved/when-throw/when") }
232 )
233 assertAsyncRan()
234 })();
235
236 (function() {
237 var p1 = Promise.resolved(5)
238 var p2 = Promise.resolved(p1)
239 var p3 = Promise.resolved(p2)
240 p3.when(function(x) { throw 6 }, assertUnreachable).then(
241 assertUnreachable,
242 function(x) { assertAsync(x === 6, "resolved/when-throw/then") }
243 )
244 assertAsyncRan()
245 })();
246
247 (function() {
248 var p1 = Promise.resolved(5)
249 var p2 = Promise.resolved(p1)
250 var p3 = Promise.resolved(p2)
251 p3.then(function(x) { throw 6 }, assertUnreachable).when(
252 assertUnreachable,
253 function(x) { assertAsync(x === 6, "resolved/then-throw/when") }
254 )
255 assertAsyncRan()
256 })();
257
258 (function() {
259 var p1 = Promise.resolved(5)
260 var p2 = Promise.resolved(p1)
261 var p3 = Promise.resolved(p2)
262 p3.then(function(x) { throw 6 }, assertUnreachable).then(
263 assertUnreachable,
264 function(x) { assertAsync(x === 6, "resolved/then-throw/then") }
265 )
266 assertAsyncRan()
267 })();
268
269 (function() {
270 var p1 = Promise.resolved(5)
271 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
272 var p3 = Promise.resolved(p2)
273 p3.when(
274 function(x) { assertAsync(x === p2, "resolved/thenable/when") },
275 assertUnreachable
276 )
277 assertAsyncRan()
278 })();
279
280 (function() {
281 var p1 = Promise.resolved(5)
282 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
283 var p3 = Promise.resolved(p2)
284 p3.then(
285 function(x) { assertAsync(x === 5, "resolved/thenable/then") },
286 assertUnreachable
287 )
288 assertAsyncRan()
289 })();
290
291 (function() {
292 var p1 = Promise.rejected(5)
293 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
294 var p3 = Promise.resolved(p2)
295 p3.when(
296 function(x) { assertAsync(x === p2, "rejected/thenable/when") },
297 assertUnreachable
298 )
299 assertAsyncRan()
300 })();
301
302 (function() {
303 var p1 = Promise.rejected(5)
304 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
305 var p3 = Promise.resolved(p2)
306 p3.then(
307 assertUnreachable,
308 function(x) { assertAsync(x === 5, "rejected/thenable/then") }
309 )
310 assertAsyncRan()
311 })();
312
313 (function() {
314 var deferred = Promise.deferred()
315 var p1 = deferred.promise
316 var p2 = Promise.resolved(p1)
317 var p3 = Promise.resolved(p2)
318 p3.when(
319 function(x) { assertAsync(x === p2, "when/resolve") },
320 assertUnreachable
321 )
322 deferred.resolve(5)
323 assertAsyncRan()
324 })();
325
326 (function() {
327 var deferred = Promise.deferred()
328 var p1 = deferred.promise
329 var p2 = Promise.resolved(p1)
330 var p3 = Promise.resolved(p2)
331 p3.then(
332 function(x) { assertAsync(x === 5, "then/resolve") },
333 assertUnreachable
334 )
335 deferred.resolve(5)
336 assertAsyncRan()
337 })();
338
339 (function() {
340 var deferred = Promise.deferred()
341 var p1 = deferred.promise
342 var p2 = Promise.resolved(p1)
343 var p3 = Promise.resolved(p2)
344 p3.when(
345 function(x) { assertAsync(x === p2, "when/reject") },
346 assertUnreachable
347 )
348 deferred.reject(5)
349 assertAsyncRan()
350 })();
351
352 (function() {
353 var deferred = Promise.deferred()
354 var p1 = deferred.promise
355 var p2 = Promise.resolved(p1)
356 var p3 = Promise.resolved(p2)
357 p3.then(
358 assertUnreachable,
359 function(x) { assertAsync(x === 5, "then/reject") }
360 )
361 deferred.reject(5)
362 assertAsyncRan()
363 })();
364
365 (function() {
366 var deferred = Promise.deferred()
367 var p1 = deferred.promise
368 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
369 var p3 = Promise.resolved(p2)
370 p3.when(
371 function(x) { assertAsync(x === p2, "when/resolve/thenable") },
372 assertUnreachable
373 )
374 deferred.resolve(5)
375 assertAsyncRan()
376 })();
377
378 (function() {
379 var deferred = Promise.deferred()
380 var p1 = deferred.promise
381 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
382 var p3 = Promise.resolved(p2)
383 p3.then(
384 function(x) { assertAsync(x === 5, "then/resolve/thenable") },
385 assertUnreachable
386 )
387 deferred.resolve(5)
388 assertAsyncRan()
389 })();
390
391 (function() {
392 var deferred = Promise.deferred()
393 var p1 = deferred.promise
394 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
395 var p3 = Promise.resolved(p2)
396 p3.when(
397 function(x) { assertAsync(x === p2, "when/reject/thenable") },
398 assertUnreachable
399 )
400 deferred.reject(5)
401 assertAsyncRan()
402 })();
403
404 (function() {
405 var deferred = Promise.deferred()
406 var p1 = deferred.promise
407 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
408 var p3 = Promise.resolved(p2)
409 p3.then(
410 assertUnreachable,
411 function(x) { assertAsync(x === 5, "then/reject/thenable") }
412 )
413 deferred.reject(5)
414 assertAsyncRan()
415 })();
416
417 (function() {
418 var p1 = Promise.resolved(5)
419 var p2 = Promise.resolved(p1)
420 var deferred = Promise.deferred()
421 var p3 = deferred.promise
422 p3.when(
423 function(x) { assertAsync(x === p2, "when/resolve2") },
424 assertUnreachable
425 )
426 deferred.resolve(p2)
427 assertAsyncRan()
428 })();
429
430 (function() {
431 var p1 = Promise.resolved(5)
432 var p2 = Promise.resolved(p1)
433 var deferred = Promise.deferred()
434 var p3 = deferred.promise
435 p3.then(
436 function(x) { assertAsync(x === 5, "then/resolve2") },
437 assertUnreachable
438 )
439 deferred.resolve(p2)
440 assertAsyncRan()
441 })();
442
443 (function() {
444 var p1 = Promise.resolved(5)
445 var p2 = Promise.resolved(p1)
446 var deferred = Promise.deferred()
447 var p3 = deferred.promise
448 p3.when(
449 assertUnreachable,
450 function(x) { assertAsync(x === 5, "when/reject2") }
451 )
452 deferred.reject(5)
453 assertAsyncRan()
454 })();
455
456 (function() {
457 var p1 = Promise.resolved(5)
458 var p2 = Promise.resolved(p1)
459 var deferred = Promise.deferred()
460 var p3 = deferred.promise
461 p3.then(
462 assertUnreachable,
463 function(x) { assertAsync(x === 5, "then/reject2") }
464 )
465 deferred.reject(5)
466 assertAsyncRan()
467 })();
468
469 (function() {
470 var p1 = Promise.resolved(5)
471 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
472 var deferred = Promise.deferred()
473 var p3 = deferred.promise
474 p3.when(
475 function(x) { assertAsync(x === p2, "when/resolve/thenable2") },
476 assertUnreachable
477 )
478 deferred.resolve(p2)
479 assertAsyncRan()
480 })();
481
482 (function() {
483 var p1 = Promise.resolved(5)
484 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }}
485 var deferred = Promise.deferred()
486 var p3 = deferred.promise
487 p3.then(
488 function(x) { assertAsync(x === 5, "then/resolve/thenable2") },
489 assertUnreachable
490 )
491 deferred.resolve(p2)
492 assertAsyncRan()
493 })();
494
495 (function() {
496 var p1 = Promise.resolved(0)
497 var p2 = p1.when(function(x) { return p2 }, assertUnreachable)
498 p2.when(
499 assertUnreachable,
500 function(r) { assertAsync(r instanceof TypeError, "cyclic/when") }
501 )
502 assertAsyncRan()
503 })();
504
505 (function() {
506 var p1 = Promise.resolved(0)
507 var p2 = p1.then(function(x) { return p2 }, assertUnreachable)
508 p2.when(
509 assertUnreachable,
510 function(r) { assertAsync(r instanceof TypeError, "cyclic/then") }
511 )
512 assertAsyncRan()
513 })();
514
515 (function() {
516 var deferred = Promise.deferred()
517 var p = deferred.promise
518 deferred.resolve(p)
519 p.when(
520 function(x) { assertAsync(x === p, "cyclic/deferred/when") },
521 assertUnreachable
522 )
523 assertAsyncRan()
524 })();
525
526 (function() {
527 var deferred = Promise.deferred()
528 var p = deferred.promise
529 deferred.resolve(p)
530 p.then(
531 assertUnreachable,
532 function(r) { assertAsync(r instanceof TypeError, "cyclic/deferred/then") }
533 )
534 assertAsyncRan()
535 })();
536
537 (function() {
538 Promise.all([]).when(
539 function(x) { assertAsync(x.length === 0, "all/resolve/empty") },
540 assertUnreachable
541 )
542 assertAsyncRan()
543 })();
544
545 (function() {
546 var deferred1 = Promise.deferred()
547 var p1 = deferred1.promise
548 var deferred2 = Promise.deferred()
549 var p2 = deferred2.promise
550 var deferred3 = Promise.deferred()
551 var p3 = deferred3.promise
552 Promise.all([p1, p2, p3]).when(
553 function(x) {
554 assertAsync(x.length === 3, "all/resolve")
555 assertAsync(x[0] === 1, "all/resolve/0")
556 assertAsync(x[1] === 2, "all/resolve/1")
557 assertAsync(x[2] === 3, "all/resolve/2")
558 },
559 assertUnreachable
560 )
561 deferred1.resolve(1)
562 deferred3.resolve(3)
563 deferred2.resolve(2)
564 assertAsyncRan()
565 assertAsyncRan()
566 assertAsyncRan()
567 assertAsyncRan()
568 })();
569
570 (function() {
571 var deferred = Promise.deferred()
572 var p1 = deferred.promise
573 var p2 = Promise.resolved(2)
574 var p3 = Promise.deferred().promise
575 Promise.all([p1, p2, p3]).when(
576 assertUnreachable,
577 assertUnreachable
578 )
579 deferred.resolve(1)
580 })();
581
582 (function() {
583 var deferred1 = Promise.deferred()
584 var p1 = deferred1.promise
585 var deferred2 = Promise.deferred()
586 var p2 = deferred2.promise
587 var deferred3 = Promise.deferred()
588 var p3 = deferred3.promise
589 Promise.all([p1, p2, p3]).when(
590 assertUnreachable,
591 function(x) { assertAsync(x === 2, "all/reject") }
592 )
593 deferred1.resolve(1)
594 deferred3.resolve(3)
595 deferred2.reject(2)
596 assertAsyncRan()
597 })();
598
599 (function() {
600 Promise.one([]).when(
601 assertUnreachable,
602 assertUnreachable
603 )
604 })();
605
606 (function() {
607 var p1 = Promise.resolved(1)
608 var p2 = Promise.resolved(2)
609 var p3 = Promise.resolved(3)
610 Promise.one([p1, p2, p3]).when(
611 function(x) { assertAsync(x === 1, "resolved/all") },
612 assertUnreachable
613 )
614 assertAsyncRan()
615 })();
616
617 (function() {
618 var p1 = Promise.resolved(1)
619 var p2 = Promise.resolved(2)
620 var p3 = Promise.resolved(3)
621 Promise.one([0, p1, p2, p3]).when(
622 function(x) { assertAsync(x === 0, "resolved-const/all") },
623 assertUnreachable
624 )
625 assertAsyncRan()
626 })();
627
628 (function() {
629 var deferred1 = Promise.deferred()
630 var p1 = deferred1.promise
631 var deferred2 = Promise.deferred()
632 var p2 = deferred2.promise
633 var deferred3 = Promise.deferred()
634 var p3 = deferred3.promise
635 Promise.one([p1, p2, p3]).when(
636 function(x) { assertAsync(x === 3, "one/resolve") },
637 assertUnreachable
638 )
639 deferred3.resolve(3)
640 deferred1.resolve(1)
641 assertAsyncRan()
642 })();
643
644 (function() {
645 var deferred = Promise.deferred()
646 var p1 = deferred.promise
647 var p2 = Promise.resolved(2)
648 var p3 = Promise.deferred().promise
649 Promise.one([p1, p2, p3]).when(
650 function(x) { assertAsync(x === 2, "resolved/one") },
651 assertUnreachable
652 )
653 deferred.resolve(1)
654 assertAsyncRan()
655 })();
656
657 (function() {
658 var deferred1 = Promise.deferred()
659 var p1 = deferred1.promise
660 var deferred2 = Promise.deferred()
661 var p2 = deferred2.promise
662 var deferred3 = Promise.deferred()
663 var p3 = deferred3.promise
664 Promise.one([p1, p2, p3]).when(
665 function(x) { assertAsync(x === 3, "one/resolve/reject") },
666 assertUnreachable
667 )
668 deferred3.resolve(3)
669 deferred1.reject(1)
670 assertAsyncRan()
671 })();
672
673 (function() {
674 var deferred1 = Promise.deferred()
675 var p1 = deferred1.promise
676 var deferred2 = Promise.deferred()
677 var p2 = deferred2.promise
678 var deferred3 = Promise.deferred()
679 var p3 = deferred3.promise
680 Promise.one([p1, p2, p3]).when(
681 assertUnreachable,
682 function(x) { assertAsync(x === 3, "one/reject/resolve") }
683 )
684 deferred3.reject(3)
685 deferred1.resolve(1)
686 assertAsyncRan()
687 })();
688
689 (function() {
690 var log
691 function MyPromise(resolver) {
692 log += "n"
693 Promise.call(this,
694 function(resolve, reject) {
695 resolver(
696 function(x) { log += "x" + x; resolve(x) },
697 function(r) { log += "r" + r; reject(r) }
698 )
699 }
700 )
701 }
702
703 MyPromise.__proto__ = Promise
704 MyPromise.deferred = function() {
705 log += "d"
706 return this.__proto__.deferred.call(this)
707 }
708
709 MyPromise.prototype.__proto__ = Promise.prototype
710 MyPromise.prototype.when = function(resolve, reject) {
711 log += "w"
712 return this.__proto__.__proto__.when.call(this, resolve, reject)
713 }
714
715 log = ""
716 var p1 = new MyPromise(function(resolve, reject) { resolve(1) })
717 var p2 = new MyPromise(function(resolve, reject) { reject(2) })
718 var d3 = MyPromise.deferred()
719 assertTrue(d3.promise instanceof MyPromise, "subclass/instance3")
720 assertTrue(log === "nx1nr2dn", "subclass/create")
721
722 log = ""
723 var p4 = MyPromise.resolved(4)
724 var p5 = MyPromise.rejected(5)
725 assertTrue(p4 instanceof MyPromise, "subclass/instance4")
726 assertTrue(p5 instanceof MyPromise, "subclass/instance5")
727 d3.resolve(3)
728 assertTrue(log === "nx4nr5x3", "subclass/resolve")
729
730 log = ""
731 var d6 = MyPromise.deferred()
732 d6.promise.when(function(x) { return new Promise(x) }).when(function() {})
733 d6.resolve(6)
734 assertTrue(log === "dnwnwnx6", "subclass/when")
735
736 log = ""
737 Promise.all([11, Promise.resolved(12), 13, MyPromise.resolved(14), 15, 16])
738 assertTrue(log === "nx14wn", "subclass/all/arg")
739
740 log = ""
741 MyPromise.all([21, Promise.resolved(22), 23, MyPromise.resolved(24), 25, 26])
742 assertTrue(log === "nx24dnnx21wnnx23wnwnnx25wnnx26wn", "subclass/all/self")
743 })();
744
745
746 assertAsyncDone()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698