OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 382 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
383 var p3 = Promise.accept(p2) | 383 var p3 = Promise.accept(p2) |
384 p3.then( | 384 p3.then( |
385 assertUnreachable, | 385 assertUnreachable, |
386 function(x) { assertAsync(x === 5, "rejected/thenable/then") } | 386 function(x) { assertAsync(x === 5, "rejected/thenable/then") } |
387 ) | 387 ) |
388 assertAsyncRan() | 388 assertAsyncRan() |
389 })(); | 389 })(); |
390 | 390 |
391 (function() { | 391 (function() { |
| 392 var p1 = Promise.accept(5) |
| 393 var p2 = Promise.accept(p1) |
| 394 var called = false |
| 395 p2.then = function(onResolve, onReject) { |
| 396 called = true; |
| 397 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 398 } |
| 399 var p3 = Promise.accept(p2) |
| 400 p3.chain( |
| 401 function(x) { |
| 402 assertAsync(x === p2 && !called, "resolved/thenable-promise/chain") |
| 403 }, |
| 404 assertUnreachable) |
| 405 assertAsyncRan() |
| 406 })(); |
| 407 |
| 408 (function() { |
| 409 var p1 = Promise.accept(5) |
| 410 var p2 = Promise.accept(p1) |
| 411 var called = false |
| 412 p2.then = function(onResolve, onReject) { |
| 413 called = true |
| 414 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 415 } |
| 416 var p3 = Promise.accept(p2) |
| 417 p3.then( |
| 418 function(x) { |
| 419 assertAsync(x === 5 && called, "resolved/thenable-promise/then") |
| 420 }, |
| 421 assertUnreachable) |
| 422 assertAsyncRan() |
| 423 })(); |
| 424 |
| 425 (function() { |
| 426 var p1 = Promise.accept(5) |
| 427 var called = false |
| 428 var p3 = p1.then(function(x) { |
| 429 var p2 = Promise.accept(5) |
| 430 p2.then = function(onResolve, onReject) { |
| 431 called = true |
| 432 throw 25 |
| 433 } |
| 434 return p2 |
| 435 }); |
| 436 p3.then( |
| 437 assertUnreachable, |
| 438 function(x) { |
| 439 assertAsync(called && x === 25, "thenable-promise/then-call-throw") |
| 440 }) |
| 441 assertAsyncRan() |
| 442 })(); |
| 443 |
| 444 (function() { |
392 var deferred = Promise.defer() | 445 var deferred = Promise.defer() |
393 var p1 = deferred.promise | 446 var p1 = deferred.promise |
394 var p2 = Promise.accept(p1) | 447 var p2 = Promise.accept(p1) |
395 var p3 = Promise.accept(p2) | 448 var p3 = Promise.accept(p2) |
396 p3.chain( | 449 p3.chain( |
397 function(x) { assertAsync(x === p2, "chain/resolve") }, | 450 function(x) { assertAsync(x === p2, "chain/resolve") }, |
398 assertUnreachable | 451 assertUnreachable |
399 ) | 452 ) |
400 deferred.resolve(5) | 453 deferred.resolve(5) |
401 assertAsyncRan() | 454 assertAsyncRan() |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 var p3 = Promise.accept(p2) | 563 var p3 = Promise.accept(p2) |
511 p3.then( | 564 p3.then( |
512 assertUnreachable, | 565 assertUnreachable, |
513 function(x) { assertAsync(x === 5, "then/reject/thenable") } | 566 function(x) { assertAsync(x === 5, "then/reject/thenable") } |
514 ) | 567 ) |
515 deferred.reject(5) | 568 deferred.reject(5) |
516 assertAsyncRan() | 569 assertAsyncRan() |
517 })(); | 570 })(); |
518 | 571 |
519 (function() { | 572 (function() { |
| 573 var deferred = Promise.defer() |
| 574 var deferred2 = Promise.defer() |
| 575 var deferred3 = Promise.defer() |
| 576 |
| 577 var p1 = deferred.promise |
| 578 var p2 = deferred2.promise |
| 579 var p3 = deferred3.promise |
| 580 |
| 581 var called = false |
| 582 p2.then = function(onResolve, onReject) { |
| 583 called = true |
| 584 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 585 } |
| 586 p3.chain( |
| 587 function(x) { assertAsync(x === p2 && !called, |
| 588 "chain/resolve/thenable-promise") }, |
| 589 assertUnreachable |
| 590 ) |
| 591 deferred3.resolve(p2) |
| 592 deferred2.resolve(p1) |
| 593 deferred.resolve(5) |
| 594 assertAsyncRan() |
| 595 })(); |
| 596 |
| 597 (function() { |
| 598 var deferred = Promise.defer() |
| 599 var deferred2 = Promise.defer() |
| 600 var deferred3 = Promise.defer() |
| 601 |
| 602 var p1 = deferred.promise |
| 603 var p2 = deferred2.promise |
| 604 var p3 = deferred3.promise |
| 605 |
| 606 var called = false |
| 607 p2.then = function(onResolve, onReject) { |
| 608 called = true |
| 609 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 610 } |
| 611 p3.then( |
| 612 function(x) { assertAsync(x === 5 && called, |
| 613 "then/resolve/thenable-promise") }, |
| 614 assertUnreachable |
| 615 ) |
| 616 deferred3.resolve(p2) |
| 617 deferred2.resolve(p1) |
| 618 deferred.resolve(5) |
| 619 assertAsyncRan() |
| 620 })(); |
| 621 |
| 622 (function() { |
| 623 var deferred = Promise.defer() |
| 624 var deferred2 = Promise.defer() |
| 625 var deferred3 = Promise.defer() |
| 626 |
| 627 var p1 = deferred.promise |
| 628 var p2 = deferred2.promise |
| 629 var p3 = deferred3.promise |
| 630 |
| 631 var called = false |
| 632 p2.then = function(onResolve, onReject) { |
| 633 called = true |
| 634 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 635 } |
| 636 p3.chain( |
| 637 function(x) { assertAsync(x === p2 && !called, |
| 638 "chain/reject/thenable-promise") }, |
| 639 assertUnreachable |
| 640 ) |
| 641 deferred3.resolve(p2) |
| 642 deferred2.resolve(p1) |
| 643 deferred.reject(5) |
| 644 assertAsyncRan() |
| 645 })(); |
| 646 |
| 647 (function() { |
| 648 var deferred = Promise.defer() |
| 649 var deferred2 = Promise.defer() |
| 650 var deferred3 = Promise.defer() |
| 651 |
| 652 var p1 = deferred.promise |
| 653 var p2 = deferred2.promise |
| 654 var p3 = deferred3.promise |
| 655 |
| 656 var called = false |
| 657 p2.then = function(onResolve, onReject) { |
| 658 called = true |
| 659 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 660 } |
| 661 p3.then( |
| 662 assertUnreachable, |
| 663 function(x) { assertAsync(x === 5 && called, |
| 664 "then/reject/thenable-promise") } |
| 665 ) |
| 666 deferred3.resolve(p2) |
| 667 deferred2.resolve(p1) |
| 668 deferred.reject(5) |
| 669 assertAsyncRan() |
| 670 })(); |
| 671 |
| 672 (function() { |
520 var p1 = Promise.accept(5) | 673 var p1 = Promise.accept(5) |
521 var p2 = Promise.accept(p1) | 674 var p2 = Promise.accept(p1) |
522 var deferred = Promise.defer() | 675 var deferred = Promise.defer() |
523 var p3 = deferred.promise | 676 var p3 = deferred.promise |
524 p3.chain( | 677 p3.chain( |
525 function(x) { assertAsync(x === p2, "chain/resolve2") }, | 678 function(x) { assertAsync(x === p2, "chain/resolve2") }, |
526 assertUnreachable | 679 assertUnreachable |
527 ) | 680 ) |
528 deferred.resolve(p2) | 681 deferred.resolve(p2) |
529 assertAsyncRan() | 682 assertAsyncRan() |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
860 Promise.all([11, Promise.accept(12), 13, MyPromise.accept(14), 15, 16]) | 1013 Promise.all([11, Promise.accept(12), 13, MyPromise.accept(14), 15, 16]) |
861 assertTrue(log === "nx14n", "subclass/all/arg") | 1014 assertTrue(log === "nx14n", "subclass/all/arg") |
862 | 1015 |
863 log = "" | 1016 log = "" |
864 MyPromise.all([21, Promise.accept(22), 23, MyPromise.accept(24), 25, 26]) | 1017 MyPromise.all([21, Promise.accept(22), 23, MyPromise.accept(24), 25, 26]) |
865 assertTrue(log === "nx24nnx21nnx23nnnx25nnx26n", "subclass/all/self") | 1018 assertTrue(log === "nx24nnx21nnx23nnnx25nnx26n", "subclass/all/self") |
866 })(); | 1019 })(); |
867 | 1020 |
868 | 1021 |
869 assertAsyncDone() | 1022 assertAsyncDone() |
OLD | NEW |