| 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 |