| 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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 assertUnreachable, | 186 assertUnreachable, |
| 187 function(r) { assertAsync(r === 6, "rejected/then-nohandler-null") } | 187 function(r) { assertAsync(r === 6, "rejected/then-nohandler-null") } |
| 188 ) | 188 ) |
| 189 assertAsyncRan() | 189 assertAsyncRan() |
| 190 })(); | 190 })(); |
| 191 | 191 |
| 192 (function() { | 192 (function() { |
| 193 var p1 = Promise.accept(5) | 193 var p1 = Promise.accept(5) |
| 194 var p2 = Promise.accept(p1) | 194 var p2 = Promise.accept(p1) |
| 195 var p3 = Promise.accept(p2) | 195 var p3 = Promise.accept(p2) |
| 196 // Note: Chain now has then-style semantics, here and in future tests. |
| 196 p3.chain( | 197 p3.chain( |
| 197 function(x) { assertAsync(x === p2, "resolved/chain") }, | 198 function(x) { assertAsync(x === 5, "resolved/chain") }, |
| 198 assertUnreachable | 199 assertUnreachable |
| 199 ) | 200 ) |
| 200 assertAsyncRan() | 201 assertAsyncRan() |
| 201 })(); | 202 })(); |
| 202 | 203 |
| 203 (function() { | 204 (function() { |
| 204 var p1 = Promise.accept(5) | 205 var p1 = Promise.accept(5) |
| 205 var p2 = Promise.accept(p1) | 206 var p2 = Promise.accept(p1) |
| 206 var p3 = Promise.accept(p2) | 207 var p3 = Promise.accept(p2) |
| 207 p3.then( | 208 p3.then( |
| 208 function(x) { assertAsync(x === 5, "resolved/then") }, | 209 function(x) { assertAsync(x === 5, "resolved/then") }, |
| 209 assertUnreachable | 210 assertUnreachable |
| 210 ) | 211 ) |
| 211 assertAsyncRan() | 212 assertAsyncRan() |
| 212 })(); | 213 })(); |
| 213 | 214 |
| 214 (function() { | 215 (function() { |
| 215 var p1 = Promise.reject(5) | 216 var p1 = Promise.reject(5) |
| 216 var p2 = Promise.accept(p1) | 217 var p2 = Promise.accept(p1) |
| 217 var p3 = Promise.accept(p2) | 218 var p3 = Promise.accept(p2) |
| 218 p3.chain( | 219 p3.chain( |
| 219 function(x) { assertAsync(x === p2, "rejected/chain") }, | 220 assertUnreachable, |
| 220 assertUnreachable | 221 function(x) { assertAsync(x === 5, "rejected/chain") } |
| 221 ) | 222 ) |
| 222 assertAsyncRan() | 223 assertAsyncRan() |
| 223 })(); | 224 })(); |
| 224 | 225 |
| 225 (function() { | 226 (function() { |
| 226 var p1 = Promise.reject(5) | 227 var p1 = Promise.reject(5) |
| 227 var p2 = Promise.accept(p1) | 228 var p2 = Promise.accept(p1) |
| 228 var p3 = Promise.accept(p2) | 229 var p3 = Promise.accept(p2) |
| 229 p3.then( | 230 p3.then( |
| 230 assertUnreachable, | 231 assertUnreachable, |
| 231 function(x) { assertAsync(x === 5, "rejected/then") } | 232 function(x) { assertAsync(x === 5, "rejected/then") } |
| 232 ) | 233 ) |
| 233 assertAsyncRan() | 234 assertAsyncRan() |
| 234 })(); | 235 })(); |
| 235 | 236 |
| 236 /* TODO(caitp): remove tests once PromiseChain is removed, per bug 3237 | |
| 237 (function() { | 237 (function() { |
| 238 var p1 = Promise.accept(5) | 238 var p1 = Promise.accept(5) |
| 239 var p2 = Promise.accept(p1) | 239 var p2 = Promise.accept(p1) |
| 240 var p3 = Promise.accept(p2) | 240 var p3 = Promise.accept(p2) |
| 241 p3.chain(function(x) { return x }, assertUnreachable).chain( | 241 p3.chain(function(x) { return x }, assertUnreachable).chain( |
| 242 function(x) { assertAsync(x === p1, "resolved/chain/chain") }, | 242 function(x) { assertAsync(x === 5, "resolved/chain/chain") }, |
| 243 assertUnreachable | 243 assertUnreachable |
| 244 ) | 244 ) |
| 245 assertAsyncRan() | 245 assertAsyncRan() |
| 246 })();*/ | 246 })(); |
| 247 | 247 |
| 248 (function() { | 248 (function() { |
| 249 var p1 = Promise.accept(5) | 249 var p1 = Promise.accept(5) |
| 250 var p2 = Promise.accept(p1) | 250 var p2 = Promise.accept(p1) |
| 251 var p3 = Promise.accept(p2) | 251 var p3 = Promise.accept(p2) |
| 252 p3.chain(function(x) { return x }, assertUnreachable).then( | 252 p3.chain(function(x) { return x }, assertUnreachable).then( |
| 253 function(x) { assertAsync(x === 5, "resolved/chain/then") }, | 253 function(x) { assertAsync(x === 5, "resolved/chain/then") }, |
| 254 assertUnreachable | 254 assertUnreachable |
| 255 ) | 255 ) |
| 256 assertAsyncRan() | 256 assertAsyncRan() |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 function(x) { assertAsync(x === 6, "resolved/then-throw/then") } | 364 function(x) { assertAsync(x === 6, "resolved/then-throw/then") } |
| 365 ) | 365 ) |
| 366 assertAsyncRan() | 366 assertAsyncRan() |
| 367 })(); | 367 })(); |
| 368 | 368 |
| 369 (function() { | 369 (function() { |
| 370 var p1 = Promise.accept(5) | 370 var p1 = Promise.accept(5) |
| 371 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 371 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 372 var p3 = Promise.accept(p2) | 372 var p3 = Promise.accept(p2) |
| 373 p3.chain( | 373 p3.chain( |
| 374 function(x) { assertAsync(x === p2, "resolved/thenable/chain") }, | 374 function(x) { assertAsync(x === 5, "resolved/thenable/chain") }, |
| 375 assertUnreachable | 375 assertUnreachable |
| 376 ) | 376 ) |
| 377 assertAsyncRan() | 377 assertAsyncRan() |
| 378 })(); | 378 })(); |
| 379 | 379 |
| 380 (function() { | 380 (function() { |
| 381 var p1 = Promise.accept(5) | 381 var p1 = Promise.accept(5) |
| 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 function(x) { assertAsync(x === 5, "resolved/thenable/then") }, | 385 function(x) { assertAsync(x === 5, "resolved/thenable/then") }, |
| 386 assertUnreachable | 386 assertUnreachable |
| 387 ) | 387 ) |
| 388 assertAsyncRan() | 388 assertAsyncRan() |
| 389 })(); | 389 })(); |
| 390 | 390 |
| 391 (function() { | 391 (function() { |
| 392 var p1 = Promise.reject(5) | 392 var p1 = Promise.reject(5) |
| 393 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 393 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 394 var p3 = Promise.accept(p2) | 394 var p3 = Promise.accept(p2) |
| 395 p3.chain( | 395 p3.chain( |
| 396 function(x) { assertAsync(x === p2, "rejected/thenable/chain") }, | 396 assertUnreachable, |
| 397 assertUnreachable | 397 function(x) { assertAsync(x === 5, "rejected/thenable/chain") } |
| 398 ) | 398 ) |
| 399 assertAsyncRan() | 399 assertAsyncRan() |
| 400 })(); | 400 })(); |
| 401 | 401 |
| 402 (function() { | 402 (function() { |
| 403 var p1 = Promise.reject(5) | 403 var p1 = Promise.reject(5) |
| 404 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 404 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 405 var p3 = Promise.accept(p2) | 405 var p3 = Promise.accept(p2) |
| 406 p3.then( | 406 p3.then( |
| 407 assertUnreachable, | 407 assertUnreachable, |
| 408 function(x) { assertAsync(x === 5, "rejected/thenable/then") } | 408 function(x) { assertAsync(x === 5, "rejected/thenable/then") } |
| 409 ) | 409 ) |
| 410 assertAsyncRan() | 410 assertAsyncRan() |
| 411 })(); | 411 })(); |
| 412 | 412 |
| 413 (function() { | 413 (function() { |
| 414 var deferred = Promise.defer() | 414 var deferred = Promise.defer() |
| 415 var p1 = deferred.promise | 415 var p1 = deferred.promise |
| 416 var p2 = Promise.accept(p1) | 416 var p2 = Promise.accept(p1) |
| 417 var p3 = Promise.accept(p2) | 417 var p3 = Promise.accept(p2) |
| 418 p3.chain( | 418 p3.chain( |
| 419 function(x) { assertAsync(x === p2, "chain/resolve") }, | 419 function(x) { assertAsync(x === 5, "chain/resolve") }, |
| 420 assertUnreachable | 420 assertUnreachable |
| 421 ) | 421 ) |
| 422 deferred.resolve(5) | 422 deferred.resolve(5) |
| 423 assertAsyncRan() | 423 assertAsyncRan() |
| 424 })(); | 424 })(); |
| 425 | 425 |
| 426 (function() { | 426 (function() { |
| 427 var deferred = Promise.defer() | 427 var deferred = Promise.defer() |
| 428 var p1 = deferred.promise | 428 var p1 = deferred.promise |
| 429 var p2 = Promise.accept(p1) | 429 var p2 = Promise.resolve(p1) |
| 430 var p3 = Promise.accept(p2) | 430 var p3 = Promise.resolve(p2) |
| 431 p3.then( | 431 p3.then( |
| 432 function(x) { assertAsync(x === 5, "then/resolve") }, | 432 function(x) { assertAsync(x === 5, "then/resolve") }, |
| 433 assertUnreachable | 433 assertUnreachable |
| 434 ) | 434 ) |
| 435 deferred.resolve(5) | 435 deferred.resolve(5) |
| 436 assertAsyncRan() | 436 assertAsyncRan() |
| 437 })(); | 437 })(); |
| 438 | 438 |
| 439 (function() { | 439 (function() { |
| 440 var deferred = Promise.defer() | 440 var deferred = Promise.defer() |
| 441 var p1 = deferred.promise | 441 var p1 = deferred.promise |
| 442 var p2 = Promise.accept(p1) | 442 var p2 = Promise.accept(p1) |
| 443 var p3 = Promise.accept(p2) | 443 var p3 = Promise.accept(p2) |
| 444 p3.chain( | 444 p3.chain( |
| 445 function(x) { assertAsync(x === p2, "chain/reject") }, | 445 assertUnreachable, |
| 446 assertUnreachable | 446 function(x) { assertAsync(x === 5, "chain/reject") } |
| 447 ) | 447 ) |
| 448 deferred.reject(5) | 448 deferred.reject(5) |
| 449 assertAsyncRan() | 449 assertAsyncRan() |
| 450 })(); | 450 })(); |
| 451 | 451 |
| 452 (function() { | 452 (function() { |
| 453 var deferred = Promise.defer() | 453 var deferred = Promise.defer() |
| 454 var p1 = deferred.promise | 454 var p1 = deferred.promise |
| 455 var p2 = Promise.accept(p1) | 455 var p2 = Promise.accept(p1) |
| 456 var p3 = Promise.accept(p2) | 456 var p3 = Promise.accept(p2) |
| (...skipping 28 matching lines...) Expand all Loading... |
| 485 deferred.reject(5) | 485 deferred.reject(5) |
| 486 assertAsyncRan() | 486 assertAsyncRan() |
| 487 })(); | 487 })(); |
| 488 | 488 |
| 489 (function() { | 489 (function() { |
| 490 var deferred = Promise.defer() | 490 var deferred = Promise.defer() |
| 491 var p1 = deferred.promise | 491 var p1 = deferred.promise |
| 492 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 492 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 493 var p3 = Promise.accept(p2) | 493 var p3 = Promise.accept(p2) |
| 494 p3.chain( | 494 p3.chain( |
| 495 function(x) { assertAsync(x === p2, "chain/resolve/thenable") }, | 495 function(x) { assertAsync(x === 5, "chain/resolve/thenable") }, |
| 496 assertUnreachable | 496 assertUnreachable |
| 497 ) | 497 ) |
| 498 deferred.resolve(5) | 498 deferred.resolve(5) |
| 499 assertAsyncRan() | 499 assertAsyncRan() |
| 500 })(); | 500 })(); |
| 501 | 501 |
| 502 (function() { | 502 (function() { |
| 503 var deferred = Promise.defer() | 503 var deferred = Promise.defer() |
| 504 var p1 = deferred.promise | 504 var p1 = deferred.promise |
| 505 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 505 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 506 var p3 = Promise.accept(p2) | 506 var p3 = Promise.accept(p2) |
| 507 p3.then( | 507 p3.then( |
| 508 function(x) { assertAsync(x === 5, "then/resolve/thenable") }, | 508 function(x) { assertAsync(x === 5, "then/resolve/thenable") }, |
| 509 assertUnreachable | 509 assertUnreachable |
| 510 ) | 510 ) |
| 511 deferred.resolve(5) | 511 deferred.resolve(5) |
| 512 assertAsyncRan() | 512 assertAsyncRan() |
| 513 })(); | 513 })(); |
| 514 | 514 |
| 515 (function() { | 515 (function() { |
| 516 var deferred = Promise.defer() | 516 var deferred = Promise.defer() |
| 517 var p1 = deferred.promise | 517 var p1 = deferred.promise |
| 518 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 518 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 519 var p3 = Promise.accept(p2) | 519 var p3 = Promise.accept(p2) |
| 520 p3.chain( | 520 p3.chain( |
| 521 function(x) { assertAsync(x === p2, "chain/reject/thenable") }, | 521 assertUnreachable, |
| 522 assertUnreachable | 522 function(x) { assertAsync(x === 5, "chain/reject/thenable") } |
| 523 ) | 523 ) |
| 524 deferred.reject(5) | 524 deferred.reject(5) |
| 525 assertAsyncRan() | 525 assertAsyncRan() |
| 526 })(); | 526 })(); |
| 527 | 527 |
| 528 (function() { | 528 (function() { |
| 529 var deferred = Promise.defer() | 529 var deferred = Promise.defer() |
| 530 var p1 = deferred.promise | 530 var p1 = deferred.promise |
| 531 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 531 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 532 var p3 = Promise.accept(p2) | 532 var p3 = Promise.accept(p2) |
| 533 p3.then( | 533 p3.then( |
| 534 assertUnreachable, | 534 assertUnreachable, |
| 535 function(x) { assertAsync(x === 5, "then/reject/thenable") } | 535 function(x) { assertAsync(x === 5, "then/reject/thenable") } |
| 536 ) | 536 ) |
| 537 deferred.reject(5) | 537 deferred.reject(5) |
| 538 assertAsyncRan() | 538 assertAsyncRan() |
| 539 })(); | 539 })(); |
| 540 | 540 |
| 541 /* TODO(caitp): remove tests once PromiseChain is removed, per bug v8:3237 | |
| 542 (function() { | 541 (function() { |
| 543 var p1 = Promise.accept(5) | 542 var p1 = Promise.accept(5) |
| 544 var p2 = Promise.accept(p1) | 543 var p2 = Promise.accept(p1) |
| 545 var deferred = Promise.defer() | 544 var deferred = Promise.defer() |
| 546 var p3 = deferred.promise | 545 var p3 = deferred.promise |
| 547 p3.chain( | 546 p3.chain( |
| 548 function(x) { assertAsync(x === p2, "chain/resolve2") }, | 547 function(x) { assertAsync(x === 5, "chain/resolve2") }, |
| 549 assertUnreachable | 548 assertUnreachable |
| 550 ) | 549 ) |
| 551 deferred.resolve(p2) | 550 deferred.resolve(p2) |
| 552 assertAsyncRan() | 551 assertAsyncRan() |
| 553 })(); */ | 552 })(); |
| 554 | 553 |
| 555 (function() { | 554 (function() { |
| 556 var p1 = Promise.accept(5) | 555 var p1 = Promise.accept(5) |
| 557 var p2 = Promise.accept(p1) | 556 var p2 = Promise.accept(p1) |
| 558 var deferred = Promise.defer() | 557 var deferred = Promise.defer() |
| 559 var p3 = deferred.promise | 558 var p3 = deferred.promise |
| 560 p3.then( | 559 p3.then( |
| 561 function(x) { assertAsync(x === 5, "then/resolve2") }, | 560 function(x) { assertAsync(x === 5, "then/resolve2") }, |
| 562 assertUnreachable | 561 assertUnreachable |
| 563 ) | 562 ) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 584 var deferred = Promise.defer() | 583 var deferred = Promise.defer() |
| 585 var p3 = deferred.promise | 584 var p3 = deferred.promise |
| 586 p3.then( | 585 p3.then( |
| 587 assertUnreachable, | 586 assertUnreachable, |
| 588 function(x) { assertAsync(x === 5, "then/reject2") } | 587 function(x) { assertAsync(x === 5, "then/reject2") } |
| 589 ) | 588 ) |
| 590 deferred.reject(5) | 589 deferred.reject(5) |
| 591 assertAsyncRan() | 590 assertAsyncRan() |
| 592 })(); | 591 })(); |
| 593 | 592 |
| 594 /* TODO(caitp): remove tests once PromiseChain is removed, per bug v8:3237 | |
| 595 (function() { | 593 (function() { |
| 596 var p1 = Promise.accept(5) | 594 var p1 = Promise.accept(5) |
| 597 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 595 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 598 var deferred = Promise.defer() | 596 var deferred = Promise.defer() |
| 599 var p3 = deferred.promise | 597 var p3 = deferred.promise |
| 600 p3.chain( | 598 p3.chain( |
| 601 function(x) { assertAsync(x === p2, "chain/resolve/thenable2") }, | 599 function(x) { assertAsync(x === 5, "chain/resolve/thenable2") }, |
| 602 assertUnreachable | 600 assertUnreachable |
| 603 ) | 601 ) |
| 604 deferred.resolve(p2) | 602 deferred.resolve(p2) |
| 605 assertAsyncRan() | 603 assertAsyncRan() |
| 606 })(); */ | 604 })(); |
| 607 | 605 |
| 608 (function() { | 606 (function() { |
| 609 var p1 = Promise.accept(5) | 607 var p1 = Promise.accept(5) |
| 610 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} | 608 var p2 = {then: function(onResolve, onReject) { onResolve(p1) }} |
| 611 var deferred = Promise.defer() | 609 var deferred = Promise.defer() |
| 612 var p3 = deferred.promise | 610 var p3 = deferred.promise |
| 613 p3.then( | 611 p3.then( |
| 614 function(x) { assertAsync(x === 5, "then/resolve/thenable2") }, | 612 function(x) { assertAsync(x === 5, "then/resolve/thenable2") }, |
| 615 assertUnreachable | 613 assertUnreachable |
| 616 ) | 614 ) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 631 (function() { | 629 (function() { |
| 632 var p1 = Promise.accept(0) | 630 var p1 = Promise.accept(0) |
| 633 var p2 = p1.then(function(x) { return p2 }, assertUnreachable) | 631 var p2 = p1.then(function(x) { return p2 }, assertUnreachable) |
| 634 p2.chain( | 632 p2.chain( |
| 635 assertUnreachable, | 633 assertUnreachable, |
| 636 function(r) { assertAsync(r instanceof TypeError, "cyclic/then") } | 634 function(r) { assertAsync(r instanceof TypeError, "cyclic/then") } |
| 637 ) | 635 ) |
| 638 assertAsyncRan() | 636 assertAsyncRan() |
| 639 })(); | 637 })(); |
| 640 | 638 |
| 641 /* TODO(caitp): remove tests once PromiseChain is removed, per bug v8:3237 | |
| 642 (function() { | 639 (function() { |
| 643 var deferred = Promise.defer() | 640 var deferred = Promise.defer() |
| 644 var p = deferred.promise | 641 var p = deferred.promise |
| 645 deferred.resolve(p) | 642 deferred.resolve(p) |
| 646 p.chain( | 643 p.chain( |
| 647 function(x) { assertAsync(x === p, "cyclic/deferred/chain") }, | 644 assertUnreachable, |
| 648 assertUnreachable | 645 function(r) { assertAsync(r instanceof TypeError, "cyclic/deferred/then") } |
| 649 ) | 646 ) |
| 650 assertAsyncRan() | 647 assertAsyncRan() |
| 651 })();*/ | 648 })(); |
| 652 | 649 |
| 653 /* TODO(caitp): remove tests once PromiseChain is removed, per bug v8:3237 | |
| 654 (function() { | 650 (function() { |
| 655 var deferred = Promise.defer() | 651 var deferred = Promise.defer() |
| 656 var p = deferred.promise | 652 var p = deferred.promise |
| 657 deferred.resolve(p) | 653 deferred.resolve(p) |
| 658 p.then( | 654 p.then( |
| 659 assertUnreachable, | 655 assertUnreachable, |
| 660 function(r) { assertAsync(r instanceof TypeError, "cyclic/deferred/then") } | 656 function(r) { assertAsync(r instanceof TypeError, "cyclic/deferred/then") } |
| 661 ) | 657 ) |
| 662 assertAsyncRan() | 658 assertAsyncRan() |
| 663 })();*/ | 659 })(); |
| 664 | 660 |
| 665 (function() { | 661 (function() { |
| 666 Promise.all([]).chain( | 662 Promise.all([]).chain( |
| 667 function(x) { assertAsync(x.length === 0, "all/resolve/empty") }, | 663 function(x) { assertAsync(x.length === 0, "all/resolve/empty") }, |
| 668 assertUnreachable | 664 assertUnreachable |
| 669 ) | 665 ) |
| 670 assertAsyncRan() | 666 assertAsyncRan() |
| 671 })(); | 667 })(); |
| 672 | 668 |
| 673 (function() { | 669 (function() { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 Promise.all([p1, p2, p3]).chain( | 752 Promise.all([p1, p2, p3]).chain( |
| 757 assertUnreachable, | 753 assertUnreachable, |
| 758 function(x) { assertAsync(x === 2, "all/reject") } | 754 function(x) { assertAsync(x === 2, "all/reject") } |
| 759 ) | 755 ) |
| 760 deferred1.resolve(1) | 756 deferred1.resolve(1) |
| 761 deferred3.resolve(3) | 757 deferred3.resolve(3) |
| 762 deferred2.reject(2) | 758 deferred2.reject(2) |
| 763 assertAsyncRan() | 759 assertAsyncRan() |
| 764 })(); | 760 })(); |
| 765 | 761 |
| 766 | |
| 767 (function() { | 762 (function() { |
| 768 'use strict'; | 763 'use strict'; |
| 769 var getCalls = 0; | 764 var getCalls = 0; |
| 770 var funcCalls = 0; | 765 var funcCalls = 0; |
| 771 var nextCalls = 0; | 766 var nextCalls = 0; |
| 772 defineProperty(numberPrototype, symbolIterator, { | 767 defineProperty(numberPrototype, symbolIterator, { |
| 773 get: function() { | 768 get: function() { |
| 774 assertEquals('number', typeof this); | 769 assertEquals('number', typeof this); |
| 775 getCalls++; | 770 getCalls++; |
| 776 return function() { | 771 return function() { |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1110 var p = Promise.resolve(); | 1105 var p = Promise.resolve(); |
| 1111 var callCount = 0; | 1106 var callCount = 0; |
| 1112 defineProperty(p, "constructor", { | 1107 defineProperty(p, "constructor", { |
| 1113 get: function() { ++callCount; return Promise; } | 1108 get: function() { ++callCount; return Promise; } |
| 1114 }); | 1109 }); |
| 1115 p.then(); | 1110 p.then(); |
| 1116 assertEquals(1, callCount); | 1111 assertEquals(1, callCount); |
| 1117 })(); | 1112 })(); |
| 1118 | 1113 |
| 1119 assertAsyncDone() | 1114 assertAsyncDone() |
| OLD | NEW |