Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // Tests for Future.immediate | 5 // Tests for Future.immediate |
| 6 | 6 |
| 7 testImmediate() { | 7 testImmediate() { |
| 8 final future = new Future<String>.immediate("42"); | 8 final future = new Future<String>.immediate("42"); |
| 9 Expect.isTrue(future.isComplete); | 9 Expect.isTrue(future.isComplete); |
| 10 Expect.isTrue(future.hasValue); | 10 Expect.isTrue(future.hasValue); |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 386 | 386 |
| 387 testTransformTransformerFails() { | 387 testTransformTransformerFails() { |
| 388 final completer = new Completer<String>(); | 388 final completer = new Completer<String>(); |
| 389 final error = new Exception("Oh no!"); | 389 final error = new Exception("Oh no!"); |
| 390 final transformedFuture = completer.future.transform((x) { throw error; }); | 390 final transformedFuture = completer.future.transform((x) { throw error; }); |
| 391 Expect.isFalse(transformedFuture.isComplete); | 391 Expect.isFalse(transformedFuture.isComplete); |
| 392 completer.complete("42"); | 392 completer.complete("42"); |
| 393 Expect.equals(error, transformedFuture.exception); | 393 Expect.equals(error, transformedFuture.exception); |
| 394 } | 394 } |
| 395 | 395 |
| 396 // Tests [handleException] and [transform] on the same Future. | |
| 397 // An earlier implementation of [transform] didn't support this, and behavior | |
| 398 // depended on whether [handleException] or [transform] was called first. | |
| 399 | |
| 400 testTransformAndHandleException() { | |
| 401 final completer = new Completer<String>(); | |
| 402 final error = new Exception("Oh no!"); | |
| 403 var futureError; | |
| 404 var transformedFutureError; | |
| 405 | |
| 406 completer.future.transform((x) => "** $x **").handleException((e) { | |
| 407 Expect.isNotNull(futureError); | |
| 408 transformedFutureError = e; | |
| 409 return true; | |
| 410 }); | |
| 411 completer.future.handleException((e) { | |
| 412 Expect.isNull(transformedFutureError); | |
| 413 futureError = e; | |
| 414 return true; | |
| 415 }); | |
| 416 completer.completeException(error); | |
| 417 | |
| 418 Expect.equals(error, futureError); | |
| 419 Expect.equals(error, transformedFutureError); | |
| 420 } | |
| 421 | |
| 422 testHandleExceptionAndTransform() { | |
| 423 final completer = new Completer<String>(); | |
| 424 final error = new Exception("Oh no!"); | |
| 425 var futureError; | |
| 426 var transformedFutureError; | |
| 427 | |
| 428 completer.future.handleException((e) { | |
| 429 Expect.isNull(transformedFutureError); | |
| 430 futureError = e; | |
| 431 return true; | |
| 432 }); | |
| 433 completer.future.transform((x) => "** $x **").handleException((e) { | |
| 434 Expect.isNotNull(futureError); | |
| 435 transformedFutureError = e; | |
| 436 return true; | |
| 437 }); | |
| 438 completer.completeException(error); | |
| 439 | |
| 440 Expect.equals(error, futureError); | |
| 441 Expect.equals(error, transformedFutureError); | |
| 442 } | |
| 443 | |
| 396 // Tests for Future.chain | 444 // Tests for Future.chain |
| 397 | 445 |
| 398 testChainSuccess() { | 446 testChainSuccess() { |
| 399 final completerA = new Completer<String>(); | 447 final completerA = new Completer<String>(); |
| 400 final completerB = new Completer<String>(); | 448 final completerB = new Completer<String>(); |
| 401 final chainedFuture = completerA.future.chain((x) { | 449 final chainedFuture = completerA.future.chain((x) { |
| 402 Expect.equals("42", x); | 450 Expect.equals("42", x); |
| 403 return completerB.future; | 451 return completerB.future; |
| 404 }); | 452 }); |
| 405 Expect.isFalse(chainedFuture.isComplete); | 453 Expect.isFalse(chainedFuture.isComplete); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 440 Expect.equals("42", x); | 488 Expect.equals("42", x); |
| 441 return completerB.future; | 489 return completerB.future; |
| 442 }); | 490 }); |
| 443 Expect.isFalse(chainedFuture.isComplete); | 491 Expect.isFalse(chainedFuture.isComplete); |
| 444 completerA.complete("42"); | 492 completerA.complete("42"); |
| 445 Expect.isFalse(chainedFuture.isComplete); | 493 Expect.isFalse(chainedFuture.isComplete); |
| 446 completerB.completeException(error); | 494 completerB.completeException(error); |
| 447 Expect.equals(error, chainedFuture.exception); | 495 Expect.equals(error, chainedFuture.exception); |
| 448 } | 496 } |
| 449 | 497 |
| 498 // Tests [handleException] and [chain] on the same Future. | |
| 499 // An earlier implementation of [chain] didn't support this, and behavior | |
| 500 // depended on whether [handleException] or [chain] was called first. | |
| 501 | |
| 502 testChainAndHandleException() { | |
| 503 final completer = new Completer<String>(); | |
| 504 final error = new Exception("Oh no!"); | |
| 505 var futureError; | |
| 506 var chainedFutureError; | |
| 507 | |
| 508 completer.future.chain((x) => new Future<int>.immediate(43)).handleException(( e) { | |
|
Siggi Cherem (dart-lang)
2012/06/07 23:29:59
80 col (here and below)
sammccall
2012/06/07 23:41:04
Done.
| |
| 509 Expect.isNotNull(futureError); | |
| 510 chainedFutureError = e; | |
| 511 return true; | |
| 512 }); | |
| 513 completer.future.handleException((e) { | |
| 514 Expect.isNull(chainedFutureError); | |
| 515 futureError = e; | |
| 516 return true; | |
| 517 }); | |
| 518 completer.completeException(error); | |
| 519 | |
| 520 Expect.equals(error, futureError); | |
| 521 Expect.equals(error, chainedFutureError); | |
| 522 } | |
| 523 | |
| 524 testHandleExceptionAndChain() { | |
| 525 final completer = new Completer<String>(); | |
| 526 final error = new Exception("Oh no!"); | |
| 527 var futureError; | |
| 528 var chainedFutureError; | |
| 529 | |
| 530 completer.future.handleException((e) { | |
| 531 Expect.isNull(chainedFutureError); | |
| 532 futureError = e; | |
| 533 return true; | |
| 534 }); | |
| 535 completer.future.chain((x) => new Future<int>.immediate(43)).handleException(( e) { | |
| 536 Expect.isNotNull(futureError); | |
| 537 chainedFutureError = e; | |
| 538 return true; | |
| 539 }); | |
| 540 completer.completeException(error); | |
| 541 | |
| 542 Expect.equals(error, futureError); | |
| 543 Expect.equals(error, chainedFutureError); | |
| 544 } | |
| 545 | |
| 450 main() { | 546 main() { |
| 451 testImmediate(); | 547 testImmediate(); |
| 452 testNeverComplete(); | 548 testNeverComplete(); |
| 453 testComplete(); | 549 testComplete(); |
| 454 testCompleteWithCompleteHandlerBeforeComplete(); | 550 testCompleteWithCompleteHandlerBeforeComplete(); |
| 455 testExceptionWithCompleteHandlerBeforeComplete(); | 551 testExceptionWithCompleteHandlerBeforeComplete(); |
| 456 testCompleteWithCompleteHandlerAfterComplete(); | 552 testCompleteWithCompleteHandlerAfterComplete(); |
| 457 testExceptionWithCompleteHandlerAfterComplete(); | 553 testExceptionWithCompleteHandlerAfterComplete(); |
| 458 testCompleteWithManyCompleteHandlers(); | 554 testCompleteWithManyCompleteHandlers(); |
| 459 testExceptionWithManyCompleteHandlers(); | 555 testExceptionWithManyCompleteHandlers(); |
| 460 testCompleteWithSuccessHandlerBeforeComplete(); | 556 testCompleteWithSuccessHandlerBeforeComplete(); |
| 461 testCompleteWithSuccessHandlerAfterComplete(); | 557 testCompleteWithSuccessHandlerAfterComplete(); |
| 462 testCompleteManySuccessHandlers(); | 558 testCompleteManySuccessHandlers(); |
| 463 testException(); | 559 testException(); |
| 464 testExceptionHandler(); | 560 testExceptionHandler(); |
| 465 testExceptionHandlerReturnsTrue(); | 561 testExceptionHandlerReturnsTrue(); |
| 466 testExceptionHandlerReturnsTrue2(); | 562 testExceptionHandlerReturnsTrue2(); |
| 467 testExceptionHandlerReturnsFalse(); | 563 testExceptionHandlerReturnsFalse(); |
| 468 testExceptionHandlerReturnsFalse2(); | 564 testExceptionHandlerReturnsFalse2(); |
| 469 testExceptionHandlerAfterCompleteThenNotCalled(); | 565 testExceptionHandlerAfterCompleteThenNotCalled(); |
| 470 testExceptionHandlerAfterCompleteReturnsFalseThenThrows(); | 566 testExceptionHandlerAfterCompleteReturnsFalseThenThrows(); |
| 471 testCompleteWithCompletionAndSuccessHandlers(); | 567 testCompleteWithCompletionAndSuccessHandlers(); |
| 472 testExceptionWithCompletionAndSuccessHandlers(); | 568 testExceptionWithCompletionAndSuccessHandlers(); |
| 473 testExceptionWithCompletionAndSuccessAndExceptionHandlers(); | 569 testExceptionWithCompletionAndSuccessAndExceptionHandlers(); |
| 474 testTransformSuccess(); | 570 testTransformSuccess(); |
| 475 testTransformFutureFails(); | 571 testTransformFutureFails(); |
| 476 testTransformTransformerFails(); | 572 testTransformTransformerFails(); |
| 573 testTransformAndHandleException(); | |
| 574 testHandleExceptionAndTransform(); | |
| 477 testChainSuccess(); | 575 testChainSuccess(); |
| 478 testChainFirstFutureFails(); | 576 testChainFirstFutureFails(); |
| 479 testChainTransformerFails(); | 577 testChainTransformerFails(); |
| 480 testChainSecondFutureFails(); | 578 testChainSecondFutureFails(); |
| 579 testChainAndHandleException(); | |
| 580 testHandleExceptionAndChain(); | |
| 481 } | 581 } |
| OLD | NEW |