Chromium Code Reviews| 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; |
| }); |
| } |