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

Side by Side Diff: tests/corelib/src/FutureTest.dart

Issue 9533014: futures: handle exceptions immediately if the future already completed. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « corelib/src/implementation/future_implementation.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 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 final future = completer.future; 159 final future = completer.future;
160 final ex = new Exception(); 160 final ex = new Exception();
161 161
162 bool reached = false; 162 bool reached = false;
163 future.handleException((e) { return false; }); 163 future.handleException((e) { return false; });
164 future.handleException((e) { reached = true; return false; }); // overshadowed 164 future.handleException((e) { reached = true; return false; }); // overshadowed
165 completer.completeException(ex); // future.then is not called, so no exception 165 completer.completeException(ex); // future.then is not called, so no exception
166 Expect.isTrue(reached); 166 Expect.isTrue(reached);
167 } 167 }
168 168
169 testExceptionHandlerAfterCompleteThenNotCalled() {
170 final completer = new Completer<int>();
171 final future = completer.future;
172 final ex = new Exception();
173
174 var ex2;
175 completer.completeException(ex);
176 future.handleException((e) { ex2 = e; return true; });
177 future.then((e) { });
178 Expect.equals(ex, ex2);
179 }
180
181 testExceptionHandlerAfterCompleteReturnsFalseThenThrows() {
182 final completer = new Completer<int>();
183 final future = completer.future;
184 final ex = new Exception();
185
186 var ex2;
187 completer.completeException(ex);
188 future.handleException((e) { ex2 = e; return false; });
189 Expect.throws(() { future.then((e) { }); });
190 Expect.equals(ex, ex2);
191 }
192
169 // Tests for Future.transform 193 // Tests for Future.transform
170 194
171 testTransformSuccess() { 195 testTransformSuccess() {
172 final completer = new Completer<String>(); 196 final completer = new Completer<String>();
173 final transformedFuture = completer.future.transform((x) => "** $x **"); 197 final transformedFuture = completer.future.transform((x) => "** $x **");
174 Expect.isFalse(transformedFuture.isComplete); 198 Expect.isFalse(transformedFuture.isComplete);
175 completer.complete("42"); 199 completer.complete("42");
176 Expect.equals("** 42 **", transformedFuture.value); 200 Expect.equals("** 42 **", transformedFuture.value);
177 } 201 }
178 202
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 testComplete(); 280 testComplete();
257 testCompleteWithHandlerBeforeComplete(); 281 testCompleteWithHandlerBeforeComplete();
258 testCompleteWithHandlerAfterComplete(); 282 testCompleteWithHandlerAfterComplete();
259 testCompleteManyHandlers(); 283 testCompleteManyHandlers();
260 testException(); 284 testException();
261 testExceptionHandler(); 285 testExceptionHandler();
262 testExceptionHandlerReturnsTrue(); 286 testExceptionHandlerReturnsTrue();
263 testExceptionHandlerReturnsTrue2(); 287 testExceptionHandlerReturnsTrue2();
264 testExceptionHandlerReturnsFalse(); 288 testExceptionHandlerReturnsFalse();
265 testExceptionHandlerReturnsFalse2(); 289 testExceptionHandlerReturnsFalse2();
290 testExceptionHandlerAfterCompleteThenNotCalled();
291 testExceptionHandlerAfterCompleteReturnsFalseThenThrows();
266 testTransformSuccess(); 292 testTransformSuccess();
267 testTransformFutureFails(); 293 testTransformFutureFails();
268 testTransformTransformerFails(); 294 testTransformTransformerFails();
269 testChainSuccess(); 295 testChainSuccess();
270 testChainFirstFutureFails(); 296 testChainFirstFutureFails();
271 testChainTransformerFails(); 297 testChainTransformerFails();
272 testChainSecondFutureFails(); 298 testChainSecondFutureFails();
273 } 299 }
OLDNEW
« no previous file with comments | « corelib/src/implementation/future_implementation.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698