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

Unified Diff: tests/lib/async/future_test.dart

Issue 11824032: Make a Future returned by the action of Future.whenCompelete delay. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
« sdk/lib/async/future_impl.dart ('K') | « sdk/lib/async/future_impl.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/lib/async/future_test.dart
diff --git a/tests/lib/async/future_test.dart b/tests/lib/async/future_test.dart
index 84effa890536ff2c82bbddacd9eec8d4d7bdb124..4c578d7f92c147a7715dd046cf862714b28fca6c 100644
--- a/tests/lib/async/future_test.dart
+++ b/tests/lib/async/future_test.dart
@@ -341,6 +341,110 @@ testFutureWhenCompletePreValue() {
});
}
+testFutureWhenValueFutureValue() {
+ var port = new ReceivePort();
+ int counter = 3;
+ countDown(int expect) {
+ Expect.equals(expect, counter);
+ if (--counter == 0) port.close();
+ }
+ var completer = new Completer();
+ completer.future.whenComplete(() {
+ countDown(3);
+ var completer2 = new Completer();
+ new Timer(10, (_) {
+ countDown(2);
+ completer2.complete(37);
+ });
+ return completer2.future;
+ }).then((v) {
+ Expect.equals(42, v);
+ countDown(1);
+ });
+
+ completer.complete(42);
+}
+
+testFutureWhenValueFutureError() {
+ var port = new ReceivePort();
+ int counter = 3;
+ countDown(int expect) {
+ Expect.equals(expect, counter);
+ if (--counter == 0) port.close();
+ }
+ var completer = new Completer();
+ completer.future.whenComplete(() {
+ countDown(3);
+ var completer2 = new Completer();
+ new Timer(10, (_) {
+ countDown(2);
+ completer2.completeError("Fail");
+ });
+ return completer2.future;
+ }).then((v) {
+ Expect.fail("should fail async");
+ }, onError: (AsyncError e) {
+ Expect.equals("Fail", e.error);
+ countDown(1);
+ });
+
+ completer.complete(42);
+}
+
+testFutureWhenErrorFutureValue() {
+ var port = new ReceivePort();
+ int counter = 3;
+ countDown(int expect) {
+ Expect.equals(expect, counter);
+ if (--counter == 0) port.close();
+ }
+ var completer = new Completer();
+ completer.future.whenComplete(() {
+ countDown(3);
+ var completer2 = new Completer();
+ new Timer(10, (_) {
+ countDown(2);
+ completer2.complete(37);
+ });
+ return completer2.future;
+ }).then((v) {
+ Expect.fail("should fail async");
+ }, onError: (AsyncError e) {
+ Expect.equals("Error", e.error);
+ countDown(1);
+ });
+
+ completer.completeError("Error");
+}
+
+testFutureWhenErrorFutureError() {
+ var port = new ReceivePort();
+ int counter = 3;
+ countDown(int expect) {
+ Expect.equals(expect, counter);
+ if (--counter == 0) port.close();
+ }
+ var completer = new Completer();
+ completer.future.whenComplete(() {
+ countDown(3);
+ var completer2 = new Completer();
+ new Timer(10, (_) {
+ countDown(2);
+ completer2.completeError("Fail");
+ });
+ return completer2.future;
+ }).then((v) {
+ Expect.fail("should fail async");
+ }, onError: (AsyncError e) {
+ Expect.equals("Fail", e.error);
+ countDown(1);
+ });
+
+ completer.completeError("Error");
+}
+
+
+
main() {
testImmediate();
testNeverComplete();
@@ -366,5 +470,10 @@ main() {
testFutureWhenCompleteError();
testFutureWhenCompleteValueNewError();
testFutureWhenCompleteErrorNewError();
+
+ testFutureWhenValueFutureValue();
+ testFutureWhenErrorFutureValue();
+ testFutureWhenValueFutureError();
+ testFutureWhenErrorFutureError();
}
« sdk/lib/async/future_impl.dart ('K') | « sdk/lib/async/future_impl.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698