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

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

Issue 14251006: Remove AsyncError with Expando. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 7 years, 8 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 | « tests/lib/async/future_delayed_error_test.dart ('k') | tests/lib/async/futures_test.dart » ('j') | 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:expect/expect.dart"; 7 import "package:expect/expect.dart";
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:isolate'; 9 import 'dart:isolate';
10 10
(...skipping 11 matching lines...) Expand all
22 testOf() { 22 testOf() {
23 compare(func) { 23 compare(func) {
24 // Compare the results of the following two futures. 24 // Compare the results of the following two futures.
25 Future f1 = new Future.of(func); 25 Future f1 = new Future.of(func);
26 Future f2 = new Future.immediate(null).then((_) => func()); 26 Future f2 = new Future.immediate(null).then((_) => func());
27 f2.catchError((_){}); // I'll get the error later. 27 f2.catchError((_){}); // I'll get the error later.
28 f1.then((v1) { f2.then((v2) { Expect.equals(v1, v2); }); }, 28 f1.then((v1) { f2.then((v2) { Expect.equals(v1, v2); }); },
29 onError: (e1) { 29 onError: (e1) {
30 f2.then((_) { Expect.fail("Expected error"); }, 30 f2.then((_) { Expect.fail("Expected error"); },
31 onError: (e2) { 31 onError: (e2) {
32 Expect.equals(e1.error, e2.error); 32 Expect.equals(e1, e2);
33 }); 33 });
34 }); 34 });
35 } 35 }
36 Future val = new Future.immediate(42); 36 Future val = new Future.immediate(42);
37 Future err1 = new Future.immediateError("Error")..catchError((_){}); 37 Future err1 = new Future.immediateError("Error")..catchError((_){});
38 Future err2 = new Future.immediateError(new AsyncError("AsyncError"))..catchEr ror((_){}); 38 try {
39 throw new List(0);
40 } catch (e, st) {
41 Future err2 = new Future.immediateError(e, st)..catchError((_){});
42 }
39 compare(() => 42); 43 compare(() => 42);
40 compare(() => val); 44 compare(() => val);
41 compare(() { throw "Flif"; }); 45 compare(() { throw "Flif"; });
42 compare(() { throw new AsyncError("AsyncFlif"); });
43 compare(() => err1); 46 compare(() => err1);
44 compare(() => err2);
45 } 47 }
46 48
47 testNeverComplete() { 49 testNeverComplete() {
48 final completer = new Completer<int>(); 50 final completer = new Completer<int>();
49 final future = completer.future; 51 final future = completer.future;
50 future.then((v) => Expect.fails("Value not expected")); 52 future.then((v) => Expect.fails("Value not expected"));
51 future.catchError((e) => Expect.fails("Value not expected")); 53 future.catchError((e) => Expect.fails("Value not expected"));
52 } 54 }
53 55
54 testComplete() { 56 testComplete() {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 // Tests for [catchError] 122 // Tests for [catchError]
121 123
122 testException() { 124 testException() {
123 final completer = new Completer<int>(); 125 final completer = new Completer<int>();
124 final future = completer.future; 126 final future = completer.future;
125 final ex = new Exception(); 127 final ex = new Exception();
126 128
127 var port = new ReceivePort(); 129 var port = new ReceivePort();
128 future 130 future
129 .then((v) { throw "Value not expected"; }) 131 .then((v) { throw "Value not expected"; })
130 .catchError((e) { 132 .catchError((error) {
131 Expect.equals(e.error, ex); 133 Expect.equals(error, ex);
132 port.close(); 134 port.close();
133 }, test: (e) => e == ex); 135 }, test: (e) => e == ex);
134 completer.completeError(ex); 136 completer.completeError(ex);
135 } 137 }
136 138
137 testExceptionHandler() { 139 testExceptionHandler() {
138 final completer = new Completer<int>(); 140 final completer = new Completer<int>();
139 final future = completer.future; 141 final future = completer.future;
140 final ex = new Exception(); 142 final ex = new Exception();
141 143
142 var ex2; 144 var ex2;
143 var done = future.catchError((e) { ex2 = e.error; }); 145 var done = future.catchError((error) { ex2 = error; });
144 146
145 Expect.isFalse(completer.isCompleted); 147 Expect.isFalse(completer.isCompleted);
146 completer.completeError(ex); 148 completer.completeError(ex);
147 Expect.isTrue(completer.isCompleted); 149 Expect.isTrue(completer.isCompleted);
148 150
149 var port = new ReceivePort(); 151 var port = new ReceivePort();
150 done.then((_) { 152 done.then((_) {
151 Expect.equals(ex, ex2); 153 Expect.equals(ex, ex2);
152 port.close(); 154 port.close();
153 }); 155 });
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 var completer = new Completer(); 258 var completer = new Completer();
257 bool gotError = false; 259 bool gotError = false;
258 var port = new ReceivePort(); 260 var port = new ReceivePort();
259 completer.future.asStream().listen( 261 completer.future.asStream().listen(
260 (data) { 262 (data) {
261 Expect.fail("Unexpected data"); 263 Expect.fail("Unexpected data");
262 }, 264 },
263 onError: (error) { 265 onError: (error) {
264 Expect.isFalse(gotError); 266 Expect.isFalse(gotError);
265 gotError = true; 267 gotError = true;
266 Expect.equals("error", error.error); 268 Expect.equals("error", error);
267 }, 269 },
268 onDone: () { 270 onDone: () {
269 Expect.isTrue(gotError); 271 Expect.isTrue(gotError);
270 port.close(); 272 port.close();
271 }); 273 });
272 completer.completeError("error"); 274 completer.completeError("error");
273 } 275 }
274 276
275 testFutureAsStreamWrapper() { 277 testFutureAsStreamWrapper() {
276 var completer = new Completer(); 278 var completer = new Completer();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 311
310 testFutureWhenCompleteError() { 312 testFutureWhenCompleteError() {
311 var port = new ReceivePort(); 313 var port = new ReceivePort();
312 int counter = 2; 314 int counter = 2;
313 countDown() { 315 countDown() {
314 if (--counter == 0) port.close(); 316 if (--counter == 0) port.close();
315 } 317 }
316 var completer = new Completer(); 318 var completer = new Completer();
317 Future future = completer.future; 319 Future future = completer.future;
318 Future later = future.whenComplete(countDown); 320 Future later = future.whenComplete(countDown);
319 later.catchError((AsyncError e) { 321 later.catchError((error) {
320 Expect.equals("error", e.error); 322 Expect.equals("error", error);
321 countDown(); 323 countDown();
322 }); 324 });
323 completer.completeError("error"); 325 completer.completeError("error");
324 } 326 }
325 327
326 testFutureWhenCompleteValueNewError() { 328 testFutureWhenCompleteValueNewError() {
327 var port = new ReceivePort(); 329 var port = new ReceivePort();
328 int counter = 2; 330 int counter = 2;
329 countDown() { 331 countDown() {
330 if (--counter == 0) port.close(); 332 if (--counter == 0) port.close();
331 } 333 }
332 var completer = new Completer(); 334 var completer = new Completer();
333 Future future = completer.future; 335 Future future = completer.future;
334 Future later = future.whenComplete(() { 336 Future later = future.whenComplete(() {
335 countDown(); 337 countDown();
336 throw "new error"; 338 throw "new error";
337 }); 339 });
338 later.catchError((AsyncError e) { 340 later.catchError((error) {
339 Expect.equals("new error", e.error); 341 Expect.equals("new error", error);
340 countDown(); 342 countDown();
341 }); 343 });
342 completer.complete(42); 344 completer.complete(42);
343 } 345 }
344 346
345 testFutureWhenCompleteErrorNewError() { 347 testFutureWhenCompleteErrorNewError() {
346 var port = new ReceivePort(); 348 var port = new ReceivePort();
347 int counter = 2; 349 int counter = 2;
348 countDown() { 350 countDown() {
349 if (--counter == 0) port.close(); 351 if (--counter == 0) port.close();
350 } 352 }
351 var completer = new Completer(); 353 var completer = new Completer();
352 Future future = completer.future; 354 Future future = completer.future;
353 Future later = future.whenComplete(() { 355 Future later = future.whenComplete(() {
354 countDown(); 356 countDown();
355 throw "new error"; 357 throw "new error";
356 }); 358 });
357 later.catchError((AsyncError e) { 359 later.catchError((error) {
358 Expect.equals("new error", e.error); 360 Expect.equals("new error", error);
359 countDown(); 361 countDown();
360 }); 362 });
361 completer.completeError("error"); 363 completer.completeError("error");
362 } 364 }
363 365
364 testFutureWhenCompletePreValue() { 366 testFutureWhenCompletePreValue() {
365 var port = new ReceivePort(); 367 var port = new ReceivePort();
366 int counter = 2; 368 int counter = 2;
367 countDown() { 369 countDown() {
368 if (--counter == 0) port.close(); 370 if (--counter == 0) port.close();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 completer.future.whenComplete(() { 417 completer.future.whenComplete(() {
416 countDown(3); 418 countDown(3);
417 var completer2 = new Completer(); 419 var completer2 = new Completer();
418 new Timer(MS * 10, () { 420 new Timer(MS * 10, () {
419 countDown(2); 421 countDown(2);
420 completer2.completeError("Fail"); 422 completer2.completeError("Fail");
421 }); 423 });
422 return completer2.future; 424 return completer2.future;
423 }).then((v) { 425 }).then((v) {
424 Expect.fail("should fail async"); 426 Expect.fail("should fail async");
425 }, onError: (AsyncError e) { 427 }, onError: (error) {
426 Expect.equals("Fail", e.error); 428 Expect.equals("Fail", error);
427 countDown(1); 429 countDown(1);
428 }); 430 });
429 431
430 completer.complete(42); 432 completer.complete(42);
431 } 433 }
432 434
433 testFutureWhenErrorFutureValue() { 435 testFutureWhenErrorFutureValue() {
434 var port = new ReceivePort(); 436 var port = new ReceivePort();
435 int counter = 3; 437 int counter = 3;
436 countDown(int expect) { 438 countDown(int expect) {
437 Expect.equals(expect, counter); 439 Expect.equals(expect, counter);
438 if (--counter == 0) port.close(); 440 if (--counter == 0) port.close();
439 } 441 }
440 var completer = new Completer(); 442 var completer = new Completer();
441 completer.future.whenComplete(() { 443 completer.future.whenComplete(() {
442 countDown(3); 444 countDown(3);
443 var completer2 = new Completer(); 445 var completer2 = new Completer();
444 new Timer(MS * 10, () { 446 new Timer(MS * 10, () {
445 countDown(2); 447 countDown(2);
446 completer2.complete(37); 448 completer2.complete(37);
447 }); 449 });
448 return completer2.future; 450 return completer2.future;
449 }).then((v) { 451 }).then((v) {
450 Expect.fail("should fail async"); 452 Expect.fail("should fail async");
451 }, onError: (AsyncError e) { 453 }, onError: (error) {
452 Expect.equals("Error", e.error); 454 Expect.equals("Error", error);
453 countDown(1); 455 countDown(1);
454 }); 456 });
455 457
456 completer.completeError("Error"); 458 completer.completeError("Error");
457 } 459 }
458 460
459 testFutureWhenErrorFutureError() { 461 testFutureWhenErrorFutureError() {
460 var port = new ReceivePort(); 462 var port = new ReceivePort();
461 int counter = 3; 463 int counter = 3;
462 countDown(int expect) { 464 countDown(int expect) {
463 Expect.equals(expect, counter); 465 Expect.equals(expect, counter);
464 if (--counter == 0) port.close(); 466 if (--counter == 0) port.close();
465 } 467 }
466 var completer = new Completer(); 468 var completer = new Completer();
467 completer.future.whenComplete(() { 469 completer.future.whenComplete(() {
468 countDown(3); 470 countDown(3);
469 var completer2 = new Completer(); 471 var completer2 = new Completer();
470 new Timer(MS * 10, () { 472 new Timer(MS * 10, () {
471 countDown(2); 473 countDown(2);
472 completer2.completeError("Fail"); 474 completer2.completeError("Fail");
473 }); 475 });
474 return completer2.future; 476 return completer2.future;
475 }).then((v) { 477 }).then((v) {
476 Expect.fail("should fail async"); 478 Expect.fail("should fail async");
477 }, onError: (AsyncError e) { 479 }, onError: (error) {
478 Expect.equals("Fail", e.error); 480 Expect.equals("Fail", error);
479 countDown(1); 481 countDown(1);
480 }); 482 });
481 483
482 completer.completeError("Error"); 484 completer.completeError("Error");
483 } 485 }
484 486
485 testFutureThenThrowsAsync() { 487 testFutureThenThrowsAsync() {
486 final completer = new Completer<int>(); 488 final completer = new Completer<int>();
487 final future = completer.future; 489 final future = completer.future;
488 AsyncError error = new AsyncError(42, "st"); 490 int error = 42;
489 491
490 var port = new ReceivePort(); 492 var port = new ReceivePort();
491 future.then((v) { 493 future.then((v) {
492 throw error; 494 throw error;
493 }).catchError((AsyncError e) { 495 }).catchError((e) {
494 Expect.identical(error, e); 496 Expect.identical(error, e);
495 port.close(); 497 port.close();
496 }); 498 });
497 completer.complete(0); 499 completer.complete(0);
498 } 500 }
499 501
500 testFutureCatchThrowsAsync() { 502 testFutureCatchThrowsAsync() {
501 final completer = new Completer<int>(); 503 final completer = new Completer<int>();
502 final future = completer.future; 504 final future = completer.future;
503 AsyncError error = new AsyncError(42, "st"); 505 int error = 42;
504 506
505 var port = new ReceivePort(); 507 var port = new ReceivePort();
506 future.catchError((AsyncError e) { 508 future.catchError((e) {
507 throw error; 509 throw error;
508 }).catchError((AsyncError e) { 510 }).catchError((e) {
509 Expect.identical(error, e); 511 Expect.identical(error, e);
510 port.close(); 512 port.close();
511 }); 513 });
512 completer.completeError(0); 514 completer.completeError(0);
513 } 515 }
514 516
515 testFutureCatchRethrowsAsync() { 517 testFutureCatchRethrowsAsync() {
516 final completer = new Completer<int>(); 518 final completer = new Completer<int>();
517 final future = completer.future; 519 final future = completer.future;
518 AsyncError error; 520 var error;
519 521
520 var port = new ReceivePort(); 522 var port = new ReceivePort();
521 future.catchError((AsyncError e) { 523 future.catchError((e) {
522 error = e; 524 error = e;
523 throw e; 525 throw e;
524 }).catchError((AsyncError e) { 526 }).catchError((e) {
525 Expect.identical(error, e); 527 Expect.identical(error, e);
526 port.close(); 528 port.close();
527 }); 529 });
528 completer.completeError(0); 530 completer.completeError(0);
529 } 531 }
530 532
531 testFutureWhenThrowsAsync() { 533 testFutureWhenThrowsAsync() {
532 final completer = new Completer<int>(); 534 final completer = new Completer<int>();
533 final future = completer.future; 535 final future = completer.future;
534 AsyncError error = new AsyncError(42, "st"); 536 var error = 42;
535 537
536 var port = new ReceivePort(); 538 var port = new ReceivePort();
537 future.whenComplete(() { 539 future.whenComplete(() {
538 throw error; 540 throw error;
539 }).catchError((AsyncError e) { 541 }).catchError((e) {
540 Expect.identical(error, e); 542 Expect.identical(error, e);
541 port.close(); 543 port.close();
542 }); 544 });
543 completer.complete(0); 545 completer.complete(0);
544 } 546 }
545 547
546 testCompleteWithAsyncError() { 548 testCompleteWithError() {
547 final completer = new Completer<int>(); 549 final completer = new Completer<int>();
548 final future = completer.future; 550 final future = completer.future;
549 AsyncError error = new AsyncError(42, "st"); 551 var error = 42;
550 552
551 var port = new ReceivePort(); 553 var port = new ReceivePort();
552 future.catchError((AsyncError e) { 554 future.catchError((e) {
553 Expect.identical(error, e); 555 Expect.identical(error, e);
554 port.close(); 556 port.close();
555 }); 557 });
556 558
557 completer.completeError(error); 559 completer.completeError(error);
558 } 560 }
559 561
560 testChainedFutureValue() { 562 testChainedFutureValue() {
561 final completer = new Completer(); 563 final completer = new Completer();
562 final future = completer.future; 564 final future = completer.future;
(...skipping 29 matching lines...) Expand all
592 Expect.isNull(v); 594 Expect.isNull(v);
593 port.close(); 595 port.close();
594 }); 596 });
595 } 597 }
596 testChainedFutureError() { 598 testChainedFutureError() {
597 final completer = new Completer(); 599 final completer = new Completer();
598 final future = completer.future; 600 final future = completer.future;
599 var port = new ReceivePort(); 601 var port = new ReceivePort();
600 602
601 future.then((v) => new Future.immediateError("Fehler")) 603 future.then((v) => new Future.immediateError("Fehler"))
602 .then((v) { Expect.fail("unreachable!"); }, onError: (e) { 604 .then((v) { Expect.fail("unreachable!"); }, onError: (error) {
603 Expect.equals("Fehler", e.error); 605 Expect.equals("Fehler", error);
604 port.close(); 606 port.close();
605 }); 607 });
606 completer.complete(21); 608 completer.complete(21);
607 } 609 }
608 610
609 main() { 611 main() {
610 testImmediate(); 612 testImmediate();
611 testOf(); 613 testOf();
612 testNeverComplete(); 614 testNeverComplete();
613 615
614 testComplete(); 616 testComplete();
615 testCompleteWithSuccessHandlerBeforeComplete(); 617 testCompleteWithSuccessHandlerBeforeComplete();
616 testCompleteWithSuccessHandlerAfterComplete(); 618 testCompleteWithSuccessHandlerAfterComplete();
617 testCompleteManySuccessHandlers(); 619 testCompleteManySuccessHandlers();
618 testCompleteWithAsyncError(); 620 testCompleteWithError();
619 621
620 testException(); 622 testException();
621 testExceptionHandler(); 623 testExceptionHandler();
622 testExceptionHandlerReturnsTrue(); 624 testExceptionHandlerReturnsTrue();
623 testExceptionHandlerReturnsTrue2(); 625 testExceptionHandlerReturnsTrue2();
624 testExceptionHandlerReturnsFalse(); 626 testExceptionHandlerReturnsFalse();
625 627
626 testFutureAsStreamCompleteAfter(); 628 testFutureAsStreamCompleteAfter();
627 testFutureAsStreamCompleteBefore(); 629 testFutureAsStreamCompleteBefore();
628 testFutureAsStreamCompleteImmediate(); 630 testFutureAsStreamCompleteImmediate();
(...skipping 14 matching lines...) Expand all
643 testFutureCatchThrowsAsync(); 645 testFutureCatchThrowsAsync();
644 testFutureWhenThrowsAsync(); 646 testFutureWhenThrowsAsync();
645 testFutureCatchRethrowsAsync(); 647 testFutureCatchRethrowsAsync();
646 648
647 testChainedFutureValue(); 649 testChainedFutureValue();
648 testChainedFutureValueDelay(); 650 testChainedFutureValueDelay();
649 testChainedFutureError(); 651 testChainedFutureError();
650 } 652 }
651 653
652 654
OLDNEW
« no previous file with comments | « tests/lib/async/future_delayed_error_test.dart ('k') | tests/lib/async/futures_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698