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

Side by Side Diff: tests/lib/async/stream_state_helper.dart

Issue 12374085: Split stream_state_test into three files. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 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
« no previous file with comments | « no previous file | tests/lib/async/stream_state_nonzero_timer_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 // Test the event/callback protocol of the stream implementations. 5 library stream_state_helper;
6 6
7 import "../../../pkg/unittest/lib/unittest.dart"; 7 import "../../../pkg/unittest/lib/unittest.dart";
8 import "dart:async";
8 import "dart:collection"; 9 import "dart:collection";
9 import "dart:async";
10
11 const ms5 = const Duration(milliseconds: 5);
12
13 main() {
14 mainTest(false);
15 mainTest(true);
16 }
17
18 mainTest(bool broadcast) {
19 var p = broadcast ? "BC" : "SC";
20 test("$p-sub-data-done", () {
21 var t = new StreamProtocolTest(broadcast);
22 t..expectSubscription(true, false)
23 ..expectData(42)
24 ..expectDone()
25 ..expectSubscription(false, false);
26 t..subscribe()..add(42)..close();
27 });
28
29 test("$p-data-done-sub", () {
30 var t = new StreamProtocolTest(broadcast);
31 if (broadcast) {
32 t..expectDone();
33 } else {
34 t..expectSubscription(true, false)
35 ..expectData(42)
36 ..expectDone()
37 ..expectSubscription(false, false);
38 }
39 t..add(42)..close()..subscribe();
40 });
41
42 test("$p-sub-data/pause-done", () {
43 var t = new StreamProtocolTest(broadcast);
44 t..expectSubscription(true, false)
45 ..expectData(42, () {
46 t.pause(new Future.delayed(ms5, () => null));
47 })
48 ..expectPause(true)
49 ..expectDone()
50 ..expectSubscription(false, false);
51 // We are calling "close" while the controller is actually paused,
52 // and it will stay paused until the pending events are sent.
53 t..subscribe()..add(42)..close();
54 });
55
56 test("$p-sub-data/pause-resume/done", () {
57 var t = new StreamProtocolTest(broadcast);
58 t..expectSubscription(true, false)
59 ..expectData(42, () {
60 t.pause(new Future.delayed(ms5, () => null));
61 })
62 ..expectPause(true)
63 ..expectPause(false, () { t.close(); })
64 ..expectDone()
65 ..expectSubscription(false, false);
66 t..subscribe()..add(42);
67 });
68
69 test("$p-sub-data/pause/resume/pause/resume-done", () {
70 var t = new StreamProtocolTest(broadcast);
71 t..expectSubscription(true, false)
72 ..expectData(42, () {
73 t.pause();
74 })
75 ..expectPause(true, () { t.resume(); })
76 ..expectPause(false, () { t.pause(); })
77 ..expectPause(true, () { t.resume(); })
78 ..expectPause(false, () { t.close(); })
79 ..expectDone()
80 ..expectSubscription(false, false);
81 t..subscribe()..add(42);
82 });
83
84 test("$p-sub-data/pause+resume-done", () {
85 var t = new StreamProtocolTest(broadcast);
86 t..expectSubscription(true, false)
87 ..expectData(42, () {
88 t.pause();
89 t.resume();
90 t.close();
91 })
92 ..expectDone()
93 ..expectSubscription(false, false);
94 t..subscribe()..add(42);
95 });
96
97 test("$p-sub-data/data+pause-data-resume-done", () {
98 var t = new StreamProtocolTest(broadcast);
99 t..expectSubscription(true, false)
100 ..expectData(42, () {
101 t.add(43);
102 t.pause(new Future.delayed(ms5, () => null));
103 // Should now be paused until the future finishes.
104 // After that, the controller stays paused until the pending queue
105 // is empty.
106 })
107 ..expectPause(true)
108 ..expectData(43)
109 ..expectPause(false, () { t.close(); })
110 ..expectDone()
111 ..expectSubscription(false, false);
112 t..subscribe()..add(42);
113 });
114
115 test("$p-sub-data-unsubonerror", () {
116 var t = new StreamProtocolTest(broadcast);
117 t..expectSubscription(true, false)
118 ..expectData(42)
119 ..expectError("bad")
120 ..expectSubscription(false, !broadcast);
121 t..subscribe(unsubscribeOnError: true)
122 ..add(42)
123 ..error("bad")
124 ..add(43)
125 ..close();
126 });
127
128 test("$p-sub-data-no-unsubonerror", () {
129 var t = new StreamProtocolTest(broadcast);
130 t..expectSubscription(true, false)
131 ..expectData(42)
132 ..expectError("bad")
133 ..expectData(43)
134 ..expectDone()
135 ..expectSubscription(false, false);
136 t..subscribe(unsubscribeOnError: false)
137 ..add(42)
138 ..error("bad")
139 ..add(43)
140 ..close();
141 });
142
143 test("$p-pause-during-callback", () {
144 var t = new StreamProtocolTest(broadcast);
145 t..expectSubscription(true, false)
146 ..expectData(42, () {
147 t.pause();
148 })
149 ..expectPause(true, () {
150 t.resume();
151 })
152 ..expectPause(false, () {
153 t.pause();
154 t.resume();
155 t.close();
156 })
157 ..expectDone()
158 ..expectSubscription(false, false);
159 t..subscribe()
160 ..add(42);
161 });
162
163 test("$p-pause-resume-during-event", () {
164 var t = new StreamProtocolTest(broadcast);
165 t..expectSubscription(true, false)
166 ..expectData(42, () {
167 t.pause();
168 t.resume();
169 })
170 ..expectDone()
171 ..expectSubscription(false, false);
172 t..subscribe()
173 ..add(42)
174 ..close();
175 });
176
177 test("$p-cancel-sub-during-event", () {
178 var t = new StreamProtocolTest(broadcast);
179 t..expectSubscription(true, false)
180 ..expectData(42, () {
181 t.cancel();
182 t.subscribe();
183 })
184 ..expectData(43)
185 ..expectDone()
186 ..expectSubscription(false, false);
187 t..subscribe()
188 ..add(42)
189 ..add(43)
190 ..close();
191 });
192
193 test("$p-cancel-sub-during-callback", () {
194 var t = new StreamProtocolTest(broadcast);
195 t..expectSubscription(true, false)
196 ..expectData(42, () {
197 t.pause();
198 })
199 ..expectPause(true, () {
200 t.cancel(); // Cancels pause
201 t.subscribe();
202 })
203 ..expectPause(false)
204 ..expectData(43)
205 ..expectDone()
206 ..expectSubscription(false, false);
207 t..subscribe()
208 ..add(42)
209 ..add(43)
210 ..close();
211 });
212
213 test("$p-sub-after-done-is-done", () {
214 var t = new StreamProtocolTest(broadcast);
215 t..expectSubscription(true, false)
216 ..expectDone()
217 ..expectSubscription(false, false)
218 ..expectDone();
219 t..subscribe()
220 ..close()
221 ..subscribe(); // Subscribe after done does not cause callbacks at all.
222 });
223 }
224
225 // --------------------------------------------------------------------
226 // Utility classes.
227 10
228 class StreamProtocolTest { 11 class StreamProtocolTest {
229 StreamController _controller; 12 StreamController _controller;
230 StreamSubscription _subscription; 13 StreamSubscription _subscription;
231 List<Event> _expectations = new List<Event>(); 14 List<Event> _expectations = new List<Event>();
232 int _nextExpectationIndex = 0; 15 int _nextExpectationIndex = 0;
233 Function _onComplete; 16 Function _onComplete;
234 17
235 StreamProtocolTest([bool broadcast = false]) { 18 StreamProtocolTest([bool broadcast = false]) {
236 if (broadcast) { 19 if (broadcast) {
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 _actual = "*[Paused:${c.isPaused}]"; 282 _actual = "*[Paused:${c.isPaused}]";
500 return true; 283 return true;
501 } 284 }
502 bool _testSubcribe(StreamController c) { 285 bool _testSubcribe(StreamController c) {
503 _actual = "*[Subscribers:${c.hasSubscribers}, Paused:${c.isPaused}]"; 286 _actual = "*[Subscribers:${c.hasSubscribers}, Paused:${c.isPaused}]";
504 return true; 287 return true;
505 } 288 }
506 289
507 String toString() => _actual; 290 String toString() => _actual;
508 } 291 }
OLDNEW
« no previous file with comments | « no previous file | tests/lib/async/stream_state_nonzero_timer_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698