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 library future_test; | 5 library future_test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:isolate'; | 8 import 'dart:isolate'; |
9 | 9 |
| 10 const Duration MS = const Duration(milliseconds: 1); |
| 11 |
10 testImmediate() { | 12 testImmediate() { |
11 final future = new Future<String>.immediate("42"); | 13 final future = new Future<String>.immediate("42"); |
12 var port = new ReceivePort(); | 14 var port = new ReceivePort(); |
13 future.then((x) { | 15 future.then((x) { |
14 Expect.equals("42", x); | 16 Expect.equals("42", x); |
15 port.close(); | 17 port.close(); |
16 }); | 18 }); |
17 } | 19 } |
18 | 20 |
19 testOf() { | 21 testOf() { |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 | 352 |
351 testFutureWhenCompletePreValue() { | 353 testFutureWhenCompletePreValue() { |
352 var port = new ReceivePort(); | 354 var port = new ReceivePort(); |
353 int counter = 2; | 355 int counter = 2; |
354 countDown() { | 356 countDown() { |
355 if (--counter == 0) port.close(); | 357 if (--counter == 0) port.close(); |
356 } | 358 } |
357 var completer = new Completer(); | 359 var completer = new Completer(); |
358 Future future = completer.future; | 360 Future future = completer.future; |
359 completer.complete(42); | 361 completer.complete(42); |
360 new Timer(0, () { | 362 Timer.run(() { |
361 Future later = future.whenComplete(countDown); | 363 Future later = future.whenComplete(countDown); |
362 later.then((v) { | 364 later.then((v) { |
363 Expect.equals(42, v); | 365 Expect.equals(42, v); |
364 countDown(); | 366 countDown(); |
365 }); | 367 }); |
366 }); | 368 }); |
367 } | 369 } |
368 | 370 |
369 testFutureWhenValueFutureValue() { | 371 testFutureWhenValueFutureValue() { |
| 372 |
370 var port = new ReceivePort(); | 373 var port = new ReceivePort(); |
371 int counter = 3; | 374 int counter = 3; |
372 countDown(int expect) { | 375 countDown(int expect) { |
373 Expect.equals(expect, counter); | 376 Expect.equals(expect, counter); |
374 if (--counter == 0) port.close(); | 377 if (--counter == 0) port.close(); |
375 } | 378 } |
376 var completer = new Completer(); | 379 var completer = new Completer(); |
377 completer.future.whenComplete(() { | 380 completer.future.whenComplete(() { |
378 countDown(3); | 381 countDown(3); |
379 var completer2 = new Completer(); | 382 var completer2 = new Completer(); |
380 new Timer(10, (_) { | 383 new Timer(MS * 10, () { |
381 countDown(2); | 384 countDown(2); |
382 completer2.complete(37); | 385 completer2.complete(37); |
383 }); | 386 }); |
384 return completer2.future; | 387 return completer2.future; |
385 }).then((v) { | 388 }).then((v) { |
386 Expect.equals(42, v); | 389 Expect.equals(42, v); |
387 countDown(1); | 390 countDown(1); |
388 }); | 391 }); |
389 | 392 |
390 completer.complete(42); | 393 completer.complete(42); |
391 } | 394 } |
392 | 395 |
393 testFutureWhenValueFutureError() { | 396 testFutureWhenValueFutureError() { |
394 var port = new ReceivePort(); | 397 var port = new ReceivePort(); |
395 int counter = 3; | 398 int counter = 3; |
396 countDown(int expect) { | 399 countDown(int expect) { |
397 Expect.equals(expect, counter); | 400 Expect.equals(expect, counter); |
398 if (--counter == 0) port.close(); | 401 if (--counter == 0) port.close(); |
399 } | 402 } |
400 var completer = new Completer(); | 403 var completer = new Completer(); |
401 completer.future.whenComplete(() { | 404 completer.future.whenComplete(() { |
402 countDown(3); | 405 countDown(3); |
403 var completer2 = new Completer(); | 406 var completer2 = new Completer(); |
404 new Timer(10, (_) { | 407 new Timer(MS * 10, () { |
405 countDown(2); | 408 countDown(2); |
406 completer2.completeError("Fail"); | 409 completer2.completeError("Fail"); |
407 }); | 410 }); |
408 return completer2.future; | 411 return completer2.future; |
409 }).then((v) { | 412 }).then((v) { |
410 Expect.fail("should fail async"); | 413 Expect.fail("should fail async"); |
411 }, onError: (AsyncError e) { | 414 }, onError: (AsyncError e) { |
412 Expect.equals("Fail", e.error); | 415 Expect.equals("Fail", e.error); |
413 countDown(1); | 416 countDown(1); |
414 }); | 417 }); |
415 | 418 |
416 completer.complete(42); | 419 completer.complete(42); |
417 } | 420 } |
418 | 421 |
419 testFutureWhenErrorFutureValue() { | 422 testFutureWhenErrorFutureValue() { |
420 var port = new ReceivePort(); | 423 var port = new ReceivePort(); |
421 int counter = 3; | 424 int counter = 3; |
422 countDown(int expect) { | 425 countDown(int expect) { |
423 Expect.equals(expect, counter); | 426 Expect.equals(expect, counter); |
424 if (--counter == 0) port.close(); | 427 if (--counter == 0) port.close(); |
425 } | 428 } |
426 var completer = new Completer(); | 429 var completer = new Completer(); |
427 completer.future.whenComplete(() { | 430 completer.future.whenComplete(() { |
428 countDown(3); | 431 countDown(3); |
429 var completer2 = new Completer(); | 432 var completer2 = new Completer(); |
430 new Timer(10, (_) { | 433 new Timer(MS * 10, () { |
431 countDown(2); | 434 countDown(2); |
432 completer2.complete(37); | 435 completer2.complete(37); |
433 }); | 436 }); |
434 return completer2.future; | 437 return completer2.future; |
435 }).then((v) { | 438 }).then((v) { |
436 Expect.fail("should fail async"); | 439 Expect.fail("should fail async"); |
437 }, onError: (AsyncError e) { | 440 }, onError: (AsyncError e) { |
438 Expect.equals("Error", e.error); | 441 Expect.equals("Error", e.error); |
439 countDown(1); | 442 countDown(1); |
440 }); | 443 }); |
441 | 444 |
442 completer.completeError("Error"); | 445 completer.completeError("Error"); |
443 } | 446 } |
444 | 447 |
445 testFutureWhenErrorFutureError() { | 448 testFutureWhenErrorFutureError() { |
446 var port = new ReceivePort(); | 449 var port = new ReceivePort(); |
447 int counter = 3; | 450 int counter = 3; |
448 countDown(int expect) { | 451 countDown(int expect) { |
449 Expect.equals(expect, counter); | 452 Expect.equals(expect, counter); |
450 if (--counter == 0) port.close(); | 453 if (--counter == 0) port.close(); |
451 } | 454 } |
452 var completer = new Completer(); | 455 var completer = new Completer(); |
453 completer.future.whenComplete(() { | 456 completer.future.whenComplete(() { |
454 countDown(3); | 457 countDown(3); |
455 var completer2 = new Completer(); | 458 var completer2 = new Completer(); |
456 new Timer(10, (_) { | 459 new Timer(MS * 10, () { |
457 countDown(2); | 460 countDown(2); |
458 completer2.completeError("Fail"); | 461 completer2.completeError("Fail"); |
459 }); | 462 }); |
460 return completer2.future; | 463 return completer2.future; |
461 }).then((v) { | 464 }).then((v) { |
462 Expect.fail("should fail async"); | 465 Expect.fail("should fail async"); |
463 }, onError: (AsyncError e) { | 466 }, onError: (AsyncError e) { |
464 Expect.equals("Fail", e.error); | 467 Expect.equals("Fail", e.error); |
465 countDown(1); | 468 countDown(1); |
466 }); | 469 }); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
619 testFutureCatchThrowsAsync(); | 622 testFutureCatchThrowsAsync(); |
620 testFutureWhenThrowsAsync(); | 623 testFutureWhenThrowsAsync(); |
621 testFutureCatchRethrowsAsync(); | 624 testFutureCatchRethrowsAsync(); |
622 | 625 |
623 testChainedFutureValue(); | 626 testChainedFutureValue(); |
624 testChainedFutureValueDelay(); | 627 testChainedFutureValueDelay(); |
625 testChainedFutureError(); | 628 testChainedFutureError(); |
626 } | 629 } |
627 | 630 |
628 | 631 |
OLD | NEW |