OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 futures_test; | 5 library futures_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 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 count++; | 231 count++; |
232 if (count == 4) throw 'correct exception'; | 232 if (count == 4) throw 'correct exception'; |
233 return new Future(() => true); | 233 return new Future(() => true); |
234 }).then((_) { | 234 }).then((_) { |
235 throw 'incorrect exception'; | 235 throw 'incorrect exception'; |
236 }).catchError((error) { | 236 }).catchError((error) { |
237 Expect.equals('correct exception', error); | 237 Expect.equals('correct exception', error); |
238 }); | 238 }); |
239 } | 239 } |
240 | 240 |
| 241 Future testDoWhileManyFutures() { |
| 242 int n = 100000; |
| 243 var ftrue = new Future.value(false); |
| 244 var ffalse = new Future.value(false); |
| 245 return Future.doWhile(() { |
| 246 return (--n > 0) ? ftrue : ffalse; |
| 247 }).then((_) { |
| 248 // Success |
| 249 }, onError: (e, s) { |
| 250 Expect.fail("$e\n$s"); |
| 251 }); |
| 252 } |
| 253 |
| 254 Future testDoWhileManyValues() { |
| 255 int n = 100000; |
| 256 return Future.doWhile(() { |
| 257 return (--n > 0); |
| 258 }).then((_) { |
| 259 // Success |
| 260 }, onError: (e, s) { |
| 261 Expect.fail("$e\n$s"); |
| 262 }); |
| 263 } |
| 264 |
241 main() { | 265 main() { |
242 List<Future> futures = new List<Future>(); | 266 List<Future> futures = new List<Future>(); |
243 | 267 |
244 futures.add(testWaitEmpty()); | 268 futures.add(testWaitEmpty()); |
245 futures.add(testCompleteAfterWait()); | 269 futures.add(testCompleteAfterWait()); |
246 futures.add(testCompleteBeforeWait()); | 270 futures.add(testCompleteBeforeWait()); |
247 futures.add(testWaitWithMultipleValues()); | 271 futures.add(testWaitWithMultipleValues()); |
248 futures.add(testWaitWithSingleError()); | 272 futures.add(testWaitWithSingleError()); |
249 futures.add(testWaitWithMultipleErrors()); | 273 futures.add(testWaitWithMultipleErrors()); |
250 futures.add(testWaitWithMultipleErrorsEager()); | 274 futures.add(testWaitWithMultipleErrorsEager()); |
251 futures.add(testWaitWithSingleErrorWithStackTrace()); | 275 futures.add(testWaitWithSingleErrorWithStackTrace()); |
252 futures.add(testWaitWithMultipleErrorsWithStackTrace()); | 276 futures.add(testWaitWithMultipleErrorsWithStackTrace()); |
253 futures.add(testWaitWithMultipleErrorsWithStackTraceEager()); | 277 futures.add(testWaitWithMultipleErrorsWithStackTraceEager()); |
254 futures.add(testEagerWait()); | 278 futures.add(testEagerWait()); |
255 futures.add(testForEachEmpty()); | 279 futures.add(testForEachEmpty()); |
256 futures.add(testForEach()); | 280 futures.add(testForEach()); |
257 futures.add(testForEachSync()); | 281 futures.add(testForEachSync()); |
258 futures.add(testForEachWithException()); | 282 futures.add(testForEachWithException()); |
259 futures.add(testDoWhile()); | 283 futures.add(testDoWhile()); |
260 futures.add(testDoWhileSync()); | 284 futures.add(testDoWhileSync()); |
261 futures.add(testDoWhileWithException()); | 285 futures.add(testDoWhileWithException()); |
| 286 futures.add(testDoWhileManyFutures()); |
| 287 futures.add(testDoWhileManyValues()); |
262 | 288 |
263 asyncStart(); | 289 asyncStart(); |
264 Future.wait(futures).then((List list) { | 290 Future.wait(futures).then((List list) { |
265 Expect.equals(18, list.length); | 291 Expect.equals(20, list.length); |
266 asyncEnd(); | 292 asyncEnd(); |
267 }); | 293 }); |
268 } | 294 } |
OLD | NEW |