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

Side by Side Diff: tests/lib/async/future_test.dart

Issue 2252823004: Deal with synchronous errors in Future.wait. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address comments. Created 4 years, 4 months 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
« no previous file with comments | « sdk/lib/async/future.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 library future_test; 5 library future_test;
6 6
7 import 'package:async_helper/async_helper.dart'; 7 import 'package:async_helper/async_helper.dart';
8 import "package:expect/expect.dart"; 8 import "package:expect/expect.dart";
9 import 'dart:async'; 9 import 'dart:async';
10 10
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 }); 869 });
870 870
871 }, onError: (int index, s) { 871 }, onError: (int index, s) {
872 Expect.isTrue(index == 0 || index == 2, "$index"); 872 Expect.isTrue(index == 0 || index == 2, "$index");
873 Expect.isFalse(uncaughts[index]); 873 Expect.isFalse(uncaughts[index]);
874 uncaughts[index] = true; 874 uncaughts[index] = true;
875 asyncEnd(); 875 asyncEnd();
876 }); 876 });
877 } 877 }
878 878
879 void testWaitSyncError() {
880 var cms = const Duration(milliseconds: 100);
881 var cleanups = new List.filled(3, false);
882 var uncaughts = new List.filled(3, false);
883 asyncStart();
884 asyncStart();
885 runZoned(() {
886 Future.wait(new Iterable.generate(5, (i) {
887 if (i != 3) return new Future.delayed(cms * (i + 1), () => i);
888 throw "throwing synchronously in iterable";
889 }), cleanUp: (index) {
890 Expect.isFalse(cleanups[index]);
891 cleanups[index] = true;
892 if (cleanups.every((x) => x)) asyncEnd();
893 });
894 }, onError: (e, s) {
895 asyncEnd();
896 });
897 }
898
879 void testBadFuture() { 899 void testBadFuture() {
880 var bad = new BadFuture(); 900 var bad = new BadFuture();
881 // Completing with bad future (then call throws) puts error in result. 901 // Completing with bad future (then call throws) puts error in result.
882 asyncStart(); 902 asyncStart();
883 Completer completer = new Completer(); 903 Completer completer = new Completer();
884 completer.complete(bad); 904 completer.complete(bad);
885 completer.future.then((_) { Expect.fail("unreachable"); }, 905 completer.future.then((_) { Expect.fail("unreachable"); },
886 onError: (e, s) { 906 onError: (e, s) {
887 Expect.isTrue(completer.isCompleted); 907 Expect.isTrue(completer.isCompleted);
888 asyncEnd(); 908 asyncEnd();
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1068 testFutureCatchRethrowsAsync(); 1088 testFutureCatchRethrowsAsync();
1069 1089
1070 testChainedFutureValue(); 1090 testChainedFutureValue();
1071 testChainedFutureValueDelay(); 1091 testChainedFutureValueDelay();
1072 testChainedFutureError(); 1092 testChainedFutureError();
1073 1093
1074 testSyncFuture_i13368(); 1094 testSyncFuture_i13368();
1075 1095
1076 testWaitCleanUp(); 1096 testWaitCleanUp();
1077 testWaitCleanUpError(); 1097 testWaitCleanUpError();
1098 testWaitSyncError();
1078 1099
1079 testBadFuture(); 1100 testBadFuture();
1080 1101
1081 testTypes(); 1102 testTypes();
1082 1103
1083 testAnyValue(); 1104 testAnyValue();
1084 testAnyError(); 1105 testAnyError();
1085 testAnyIgnoreIncomplete(); 1106 testAnyIgnoreIncomplete();
1086 testAnyIgnoreError(); 1107 testAnyIgnoreError();
1087 1108
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 Future whenComplete(action()) { 1160 Future whenComplete(action()) {
1140 return new Future.microtask(action).then((_) => this); 1161 return new Future.microtask(action).then((_) => this);
1141 } 1162 }
1142 Stream asStream() { 1163 Stream asStream() {
1143 return (new StreamController()..add(_result)..close()).stream; 1164 return (new StreamController()..add(_result)..close()).stream;
1144 } 1165 }
1145 Future timeout(Duration duration, {onTimeout()}) { 1166 Future timeout(Duration duration, {onTimeout()}) {
1146 return this; 1167 return this;
1147 } 1168 }
1148 } 1169 }
OLDNEW
« no previous file with comments | « sdk/lib/async/future.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698