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

Side by Side Diff: tests/corelib/future_test.dart

Issue 11418104: Make exceptions propagate through multiple Future branches. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 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
« no previous file with comments | « sdk/lib/core/future_impl.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 558
559 completer.completeException("original error"); 559 completer.completeException("original error");
560 Expect.isTrue(called); 560 Expect.isTrue(called);
561 Expect.isFalse(transformedFuture.isComplete); 561 Expect.isFalse(transformedFuture.isComplete);
562 562
563 returnedCompleter.complete("transformed value"); 563 returnedCompleter.complete("transformed value");
564 Expect.isTrue(transformedFuture.isComplete); 564 Expect.isTrue(transformedFuture.isComplete);
565 Expect.equals("transformed value", transformedFuture.value); 565 Expect.equals("transformed value", transformedFuture.value);
566 } 566 }
567 567
568 // Tests for branching exceptions
569
570 testExceptionTravelsAlongBothBranches() {
571 var results = <int>[];
572
573 var completer = new Completer();
574 var branch1 = completer.future.transform((_) => null);
575 var branch2 = completer.future.transform((_) => null);
576
577 branch1.handleException((e) {
578 results.add(1);
579 return true;
580 });
581
582 branch2.handleException((e) {
583 results.add(2);
584 return true;
585 });
586
587 completer.completeException("error");
588 Expect.listEquals([1, 2], results);
589 }
590
591 testExceptionTravelsAlongBothBranchesAfterComplete() {
592 var results = <int>[];
593
594 var completer = new Completer();
595 completer.completeException("error");
596
597 var branch1 = completer.future.transform((_) => null);
598 var branch2 = completer.future.transform((_) => null);
599
600 branch1.handleException((e) {
601 results.add(1);
602 return true;
603 });
604
605 branch2.handleException((e) {
606 results.add(2);
607 return true;
608 });
609
610 Expect.listEquals([2, 1], results);
Siggi Cherem (dart-lang) 2012/11/21 01:08:57 it's weird to see these in opposite order, maybe u
nweiz 2012/11/21 20:39:09 Done.
611 }
612
613 testExceptionIsHandledInBaseAndBranch() {
614 var results = <String>[];
615
616 var completer = new Completer();
617 var branch = completer.future.transform((_) => null);
618
619 completer.future.handleException((e) {
620 results.add("base");
621 return true;
622 });
623
624 branch.handleException((e) {
625 results.add("branch");
626 return true;
627 });
628
629 completer.completeException("error");
630 Expect.listEquals(["branch", "base"], results);
631 }
632
633 testExceptionIsHandledInBaseAndBranchAfterComplete() {
634 var results = <String>[];
635
636 var completer = new Completer();
637 completer.completeException("error");
638
639 var branch = completer.future.transform((_) => null);
Siggi Cherem (dart-lang) 2012/11/21 01:08:57 maybe add another test to check what happens if yo
nweiz 2012/11/21 20:39:09 That case isn't handled by this CL; it will actual
640
641 completer.future.handleException((e) {
642 results.add("base");
643 return true;
644 });
645
646 branch.handleException((e) {
647 results.add("branch");
648 return true;
649 });
650
651 Expect.listEquals(["base", "branch"], results);
652 }
653
568 main() { 654 main() {
569 testImmediate(); 655 testImmediate();
570 testNeverComplete(); 656 testNeverComplete();
571 testComplete(); 657 testComplete();
572 testCompleteWithCompleteHandlerBeforeComplete(); 658 testCompleteWithCompleteHandlerBeforeComplete();
573 testExceptionWithCompleteHandlerBeforeComplete(); 659 testExceptionWithCompleteHandlerBeforeComplete();
574 testCompleteWithCompleteHandlerAfterComplete(); 660 testCompleteWithCompleteHandlerAfterComplete();
575 testExceptionWithCompleteHandlerAfterComplete(); 661 testExceptionWithCompleteHandlerAfterComplete();
576 testCompleteWithManyCompleteHandlers(); 662 testCompleteWithManyCompleteHandlers();
577 testExceptionWithManyCompleteHandlers(); 663 testExceptionWithManyCompleteHandlers();
(...skipping 20 matching lines...) Expand all
598 testTransformFutureFails(); 684 testTransformFutureFails();
599 testTransformTransformerFails(); 685 testTransformTransformerFails();
600 testChainSuccess(); 686 testChainSuccess();
601 testChainFirstFutureFails(); 687 testChainFirstFutureFails();
602 testChainTransformerFails(); 688 testChainTransformerFails();
603 testChainSecondFutureFails(); 689 testChainSecondFutureFails();
604 testTransformExceptionCompletesNormally(); 690 testTransformExceptionCompletesNormally();
605 testTransformExceptionThrows(); 691 testTransformExceptionThrows();
606 testTransformExceptionReturns(); 692 testTransformExceptionReturns();
607 testTransformExceptionReturnsAFuture(); 693 testTransformExceptionReturnsAFuture();
694 testExceptionTravelsAlongBothBranches();
695 testExceptionIsHandledInBaseAndBranch();
Siggi Cherem (dart-lang) 2012/11/21 01:08:57 add the other 2 tests? (...AfterComplete)
nweiz 2012/11/21 20:39:09 Done.
608 } 696 }
OLDNEW
« no previous file with comments | « sdk/lib/core/future_impl.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698