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

Side by Side Diff: tests/language/await_for_test.dart

Issue 839323003: Implementation of async-await transformation on js ast. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments Created 5 years, 10 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 import "dart:async"; 5 import "dart:async";
6 import "package:expect/expect.dart"; 6 import "package:expect/expect.dart";
7 import "package:async_helper/async_helper.dart"; 7 import "package:async_helper/async_helper.dart";
8 8
9 class Trace { 9 class Trace {
10 String trace = ""; 10 String trace = "";
(...skipping 20 matching lines...) Expand all
31 } 31 }
32 t1.record("X"); 32 t1.record("X");
33 } 33 }
34 34
35 Trace t2 = new Trace(); 35 Trace t2 = new Trace();
36 36
37 consumeTwo() async { 37 consumeTwo() async {
38 await for (var x in makeMeAStream()) { 38 await for (var x in makeMeAStream()) {
39 t2.record(x); 39 t2.record(x);
40 } 40 }
41 t2.record("X"); 41 t2.record("Y");
42 }
43
44 Trace t3 = new Trace();
45
46 consumeNested() async {
47 await for (var x in makeMeAStream()) {
48 t3.record(x);
49 await for (var y in makeMeAStream()) {
50 t3.record(y);
51 }
52 t3.record("|");
53 }
54 t3.record("Z");
55 }
56
57 Trace t4 = new Trace();
58
59 consumeSomeOfInfinite() async {
60 int i = 0;
61 await for (var x in infiniteStream()) {
62 i++;
63 if (i > 10) break;
64 t4.record(x);
65 }
66 t4.record("U");
42 } 67 }
43 68
44 main() { 69 main() {
45 var f1 = consumeOne(); 70 var f1 = consumeOne();
46 t1.record("T1:"); 71 t1.record("T1:");
47 72
48 var f2 = consumeTwo(); 73 var f2 = consumeTwo();
49 t2.record("T2:"); 74 t2.record("T2:");
75
76 var f3 = consumeNested();
77 t3.record("T3:");
78
79 var f4 = consumeSomeOfInfinite();
80 t4.record("T4:");
50 81
51 asyncStart(); 82 asyncStart();
52 Future.wait([f1, f2]).then((_) { 83 Future.wait([f1, f2, f3, f4]).then((_) {
53 print("Trace 1: $t1");
54 print("Trace 2: $t2");
55 Expect.equals("T1:12345X", t1.toString()); 84 Expect.equals("T1:12345X", t1.toString());
56 Expect.equals("T2:12345X", t2.toString()); 85 Expect.equals("T2:12345Y", t2.toString());
86 Expect.equals("T3:112345|212345|312345|412345|512345|Z", t3.toString());
87 Expect.equals("T4:12345678910U", t4.toString());
57 asyncEnd(); 88 asyncEnd();
58 }); 89 });
59 } 90 }
60 91
61
62 // Create a stream that produces numbers [1, 2, ... maxCount] 92 // Create a stream that produces numbers [1, 2, ... maxCount]
63 Stream timedCounter(int maxCount) { 93 Stream timedCounter(int maxCount) {
64 StreamController controller; 94 StreamController controller;
65 Timer timer; 95 Timer timer;
66 int counter = 0; 96 int counter = 0;
67 97
68 void tick(_) { 98 void tick(_) {
69 counter++; 99 counter++;
70 controller.add(counter); // Ask stream to send counter values as event. 100 controller.add(counter); // Ask stream to send counter values as event.
71 if (counter >= maxCount) { 101 if (counter >= maxCount) {
(...skipping 14 matching lines...) Expand all
86 } 116 }
87 117
88 controller = new StreamController( 118 controller = new StreamController(
89 onListen: startTimer, 119 onListen: startTimer,
90 onPause: stopTimer, 120 onPause: stopTimer,
91 onResume: startTimer, 121 onResume: startTimer,
92 onCancel: stopTimer); 122 onCancel: stopTimer);
93 123
94 return controller.stream; 124 return controller.stream;
95 } 125 }
126
127 // Create a stream that produces numbers [1, 2, ... ]
128 Stream infiniteStream() {
129 StreamController controller;
130 Timer timer;
131 int counter = 0;
132
133 void tick(_) {
134 counter++;
135 controller.add(counter); // Ask stream to send counter values as event.
136 }
137
138 void startTimer() {
139 timer = new Timer.periodic(const Duration(milliseconds: 10), tick);
140 }
141
142 void stopTimer() {
143 if (timer != null) {
144 timer.cancel();
145 timer = null;
146 }
147 }
148
149 controller = new StreamController(
150 onListen: startTimer,
151 onPause: stopTimer,
152 onResume: startTimer,
153 onCancel: stopTimer);
154
155 return controller.stream;
156 }
OLDNEW
« no previous file with comments | « tests/language/await_for_cancel_test.dart ('k') | tests/language/await_not_started_immediately_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698