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 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 384 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
385 var p3 = Promise.accept(p2) | 385 var p3 = Promise.accept(p2) |
386 p3.then( | 386 p3.then( |
387 assertUnreachable, | 387 assertUnreachable, |
388 function(x) { assertAsync(x === 5, "rejected/thenable/then") } | 388 function(x) { assertAsync(x === 5, "rejected/thenable/then") } |
389 ) | 389 ) |
390 assertAsyncRan() | 390 assertAsyncRan() |
391 })(); | 391 })(); |
392 | 392 |
393 (function() { | 393 (function() { |
| 394 var p1 = Promise.accept(5) |
| 395 var p2 = Promise.accept(p1) |
| 396 var called = false |
| 397 p2.then = function(onResolve, onReject) { |
| 398 called = true; |
| 399 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 400 } |
| 401 var p3 = Promise.accept(p2) |
| 402 p3.chain( |
| 403 function(x) { |
| 404 assertAsync(x === p2 && !called, "resolved/thenable-promise/chain") |
| 405 }, |
| 406 assertUnreachable) |
| 407 assertAsyncRan() |
| 408 })(); |
| 409 |
| 410 (function() { |
| 411 var p1 = Promise.accept(5) |
| 412 var p2 = Promise.accept(p1) |
| 413 var called = false |
| 414 p2.then = function(onResolve, onReject) { |
| 415 called = true |
| 416 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 417 } |
| 418 var p3 = Promise.accept(p2) |
| 419 p3.then( |
| 420 function(x) { |
| 421 assertAsync(x === 5 && called, "resolved/thenable-promise/then") |
| 422 }, |
| 423 assertUnreachable) |
| 424 assertAsyncRan() |
| 425 })(); |
| 426 |
| 427 (function() { |
| 428 var p1 = Promise.accept(5) |
| 429 var called = false |
| 430 var p3 = p1.then(function(x) { |
| 431 var p2 = Promise.accept(5) |
| 432 p2.then = function(onResolve, onReject) { |
| 433 called = true |
| 434 throw 25 |
| 435 } |
| 436 return p2 |
| 437 }); |
| 438 p3.then( |
| 439 assertUnreachable, |
| 440 function(x) { |
| 441 assertAsync(called && x === 25, "thenable-promise/then-call-throw") |
| 442 }) |
| 443 assertAsyncRan() |
| 444 })(); |
| 445 |
| 446 (function() { |
394 var deferred = Promise.defer() | 447 var deferred = Promise.defer() |
395 var p1 = deferred.promise | 448 var p1 = deferred.promise |
396 var p2 = Promise.accept(p1) | 449 var p2 = Promise.accept(p1) |
397 var p3 = Promise.accept(p2) | 450 var p3 = Promise.accept(p2) |
398 p3.chain( | 451 p3.chain( |
399 function(x) { assertAsync(x === p2, "chain/resolve") }, | 452 function(x) { assertAsync(x === p2, "chain/resolve") }, |
400 assertUnreachable | 453 assertUnreachable |
401 ) | 454 ) |
402 deferred.resolve(5) | 455 deferred.resolve(5) |
403 assertAsyncRan() | 456 assertAsyncRan() |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 var p1 = deferred.promise | 563 var p1 = deferred.promise |
511 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 564 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
512 var p3 = Promise.accept(p2) | 565 var p3 = Promise.accept(p2) |
513 p3.then( | 566 p3.then( |
514 assertUnreachable, | 567 assertUnreachable, |
515 function(x) { assertAsync(x === 5, "then/reject/thenable") } | 568 function(x) { assertAsync(x === 5, "then/reject/thenable") } |
516 ) | 569 ) |
517 deferred.reject(5) | 570 deferred.reject(5) |
518 assertAsyncRan() | 571 assertAsyncRan() |
519 })(); | 572 })(); |
| 573 |
| 574 (function() { |
| 575 var deferred = Promise.defer() |
| 576 var deferred2 = Promise.defer() |
| 577 var deferred3 = Promise.defer() |
| 578 |
| 579 var p1 = deferred.promise |
| 580 var p2 = deferred2.promise |
| 581 var p3 = deferred3.promise |
| 582 |
| 583 var called = false |
| 584 p2.then = function(onResolve, onReject) { |
| 585 called = true |
| 586 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 587 } |
| 588 p3.chain( |
| 589 function(x) { assertAsync(x === p2 && !called, |
| 590 "chain/resolve/thenable-promise") }, |
| 591 assertUnreachable |
| 592 ) |
| 593 deferred3.resolve(p2) |
| 594 deferred2.resolve(p1) |
| 595 deferred.resolve(5) |
| 596 assertAsyncRan() |
| 597 })(); |
| 598 |
| 599 (function() { |
| 600 var deferred = Promise.defer() |
| 601 var deferred2 = Promise.defer() |
| 602 var deferred3 = Promise.defer() |
| 603 |
| 604 var p1 = deferred.promise |
| 605 var p2 = deferred2.promise |
| 606 var p3 = deferred3.promise |
| 607 |
| 608 var called = false |
| 609 p2.then = function(onResolve, onReject) { |
| 610 called = true |
| 611 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 612 } |
| 613 p3.then( |
| 614 function(x) { assertAsync(x === 5 && called, |
| 615 "then/resolve/thenable-promise") }, |
| 616 assertUnreachable |
| 617 ) |
| 618 deferred3.resolve(p2) |
| 619 deferred2.resolve(p1) |
| 620 deferred.resolve(5) |
| 621 assertAsyncRan() |
| 622 })(); |
| 623 |
| 624 (function() { |
| 625 var deferred = Promise.defer() |
| 626 var deferred2 = Promise.defer() |
| 627 var deferred3 = Promise.defer() |
| 628 |
| 629 var p1 = deferred.promise |
| 630 var p2 = deferred2.promise |
| 631 var p3 = deferred3.promise |
| 632 |
| 633 var called = false |
| 634 p2.then = function(onResolve, onReject) { |
| 635 called = true |
| 636 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 637 } |
| 638 p3.chain( |
| 639 function(x) { assertAsync(x === p2 && !called, |
| 640 "chain/reject/thenable-promise") }, |
| 641 assertUnreachable |
| 642 ) |
| 643 deferred3.resolve(p2) |
| 644 deferred2.resolve(p1) |
| 645 deferred.reject(5) |
| 646 assertAsyncRan() |
| 647 })(); |
| 648 |
| 649 (function() { |
| 650 var deferred = Promise.defer() |
| 651 var deferred2 = Promise.defer() |
| 652 var deferred3 = Promise.defer() |
| 653 |
| 654 var p1 = deferred.promise |
| 655 var p2 = deferred2.promise |
| 656 var p3 = deferred3.promise |
| 657 |
| 658 var called = false |
| 659 p2.then = function(onResolve, onReject) { |
| 660 called = true |
| 661 return call(Promise.prototype.then, p2, onResolve, onReject) |
| 662 } |
| 663 p3.then( |
| 664 assertUnreachable, |
| 665 function(x) { assertAsync(x === 5 && called, |
| 666 "then/reject/thenable-promise") } |
| 667 ) |
| 668 deferred3.resolve(p2) |
| 669 deferred2.resolve(p1) |
| 670 deferred.reject(5) |
| 671 assertAsyncRan() |
| 672 })(); |
520 | 673 |
521 (function() { | 674 (function() { |
522 var p1 = Promise.accept(5) | 675 var p1 = Promise.accept(5) |
523 var p2 = Promise.accept(p1) | 676 var p2 = Promise.accept(p1) |
524 var deferred = Promise.defer() | 677 var deferred = Promise.defer() |
525 var p3 = deferred.promise | 678 var p3 = deferred.promise |
526 p3.chain( | 679 p3.chain( |
527 function(x) { assertAsync(x === p2, "chain/resolve2") }, | 680 function(x) { assertAsync(x === p2, "chain/resolve2") }, |
528 assertUnreachable | 681 assertUnreachable |
529 ) | 682 ) |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1028 Promise.all([11, Promise.accept(12), 13, MyPromise.accept(14), 15, 16]) | 1181 Promise.all([11, Promise.accept(12), 13, MyPromise.accept(14), 15, 16]) |
1029 assertTrue(log === "nx14n", "subclass/all/arg") | 1182 assertTrue(log === "nx14n", "subclass/all/arg") |
1030 | 1183 |
1031 log = "" | 1184 log = "" |
1032 MyPromise.all([21, Promise.accept(22), 23, MyPromise.accept(24), 25, 26]) | 1185 MyPromise.all([21, Promise.accept(22), 23, MyPromise.accept(24), 25, 26]) |
1033 assertTrue(log === "nx24nnx21nnx23nnnx25nnx26n", "subclass/all/self") | 1186 assertTrue(log === "nx24nnx21nnx23nnnx25nnx26n", "subclass/all/self") |
1034 })(); | 1187 })(); |
1035 | 1188 |
1036 | 1189 |
1037 assertAsyncDone() | 1190 assertAsyncDone() |
OLD | NEW |