Index: tests/language/async_star_pause_test.dart |
diff --git a/tests/language/async_star_pause_test.dart b/tests/language/async_star_pause_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c21519d2bbc9af5facc24272cf6b4efc3785bdd0 |
--- /dev/null |
+++ b/tests/language/async_star_pause_test.dart |
@@ -0,0 +1,32 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// 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. |
+ |
+library async_star_pause_test; |
+ |
+import "package:unittest/unittest.dart"; |
+import "dart:async"; |
+ |
+main() { |
+ test("await for pauses stream during body", () async { |
+ // Assumes await-for uses streamIterator. |
+ var log = []; |
+ var s = () async* { |
+ for (int i = 0; i < 3; i++) { |
+ log.add("$i-"); |
+ yield i; |
+ // Should pause here until next iteration of await-for loop. |
+ log.add("$i+"); |
+ } |
+ }(); |
+ await for (var i in s) { |
+ log.add("$i?"); |
+ await nextMicrotask(); |
+ log.add("$i!"); |
+ } |
+ expect(log, ["0-", "0?", "0!", "0+", |
+ "1-", "1?", "1!", "1+", |
+ "2-", "2?", "2!", "2+"]); |
+ }); |
+} |
+Future nextMicrotask() => new Future.microtask((){}); |