Index: tests/language/async_star_await_pauses_test.dart |
diff --git a/tests/language/async_star_await_pauses_test.dart b/tests/language/async_star_await_pauses_test.dart |
index c16fbdd7ff898666c1462fca8a336a020e9679ee..f6cd437339361549b8a09b37ae7e19a510d73d19 100644 |
--- a/tests/language/async_star_await_pauses_test.dart |
+++ b/tests/language/async_star_await_pauses_test.dart |
@@ -1,34 +1,47 @@ |
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
ahe
2016/04/08 11:46:15
The name of this test is odd. I think it should be
|
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
import "dart:async"; |
-import "package:expect/expect.dart"; |
import "package:async_helper/async_helper.dart"; |
main() { |
- var sc; |
- var i = 0; |
- void send() { |
- if (i == 5) { |
- sc.close(); |
- } else { |
- sc.add(i++); |
- } |
+ Completer listenEventReceived = new Completer(); |
+ Completer pauseEventReceived = new Completer(); |
+ Completer resumeEventReceived = new Completer(); |
+ StreamController controller = new StreamController( |
+ onListen: () => listenEventReceived.complete(), |
+ onPause: () => pauseEventReceived.complete(), |
+ onResume: () => resumeEventReceived.complete()); |
+ |
+ Completer forLoopEntered = new Completer(); |
+ |
+ send() async { |
ahe
2016/04/08 11:46:15
Since this is a language feature test of "await fo
|
+ await listenEventReceived.future; |
+ controller.add("first"); |
+ await forLoopEntered.future; |
+ var timer = new Timer.periodic(new Duration(milliseconds: 10), (timer) { |
+ controller.add("second"); |
+ }); |
+ await pauseEventReceived.future; |
+ timer.cancel(); |
+ await resumeEventReceived.future; |
+ controller.add("third"); |
+ controller.close(); |
} |
- sc = new StreamController(onListen: send, onResume: send); |
- f(s) async { |
- var r = 0; |
- await for (var i in s) { |
- r += await new Future.delayed(new Duration(milliseconds: 10), () => i); |
+ receive() async { |
+ await for (var entry in controller.stream) { |
+ if (entry == 'first') { |
+ forLoopEntered.complete(); |
+ await pauseEventReceived.future; |
+ } |
} |
- return r; |
} |
- asyncStart(); |
- f(sc.stream).then((v) { |
- Expect.equals(10, v); |
- asyncEnd(); |
+ asyncTest(() async { |
+ var f = send(); |
+ await receive(); |
+ await f; |
}); |
} |