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

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

Issue 12049013: Change singleSubscription/multiSubscription to normal/broadcast. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed comments, renamed .multiSubscription to .broadcast. Created 7 years, 11 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 basic StreamController and StreamController.singleSubscription. 5 // Test the basic StreamController and StreamController.singleSubscription.
6 library stream_controller_async_test; 6 library stream_controller_async_test;
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:isolate'; 9 import 'dart:isolate';
10 import '../../../pkg/unittest/lib/unittest.dart'; 10 import '../../../pkg/unittest/lib/unittest.dart';
11 import 'event_helper.dart'; 11 import 'event_helper.dart';
12 12
13 testController() { 13 testController() {
14 // Test reduce 14 // Test reduce
15 test("StreamController.reduce", () { 15 test("StreamController.reduce", () {
16 StreamController c = new StreamController.multiSubscription(); 16 StreamController c = new StreamController.broadcast();
17 c.reduce(0, (a,b) => a + b) 17 Stream stream = c.stream;
18 stream.reduce(0, (a,b) => a + b)
18 .then(expectAsync1((int v) { 19 .then(expectAsync1((int v) {
19 Expect.equals(42, v); 20 Expect.equals(42, v);
20 })); 21 }));
21 c.add(10); 22 c.add(10);
22 c.add(32); 23 c.add(32);
23 c.close(); 24 c.close();
24 }); 25 });
25 26
26 test("StreamController.reduce throws", () { 27 test("StreamController.reduce throws", () {
27 StreamController c = new StreamController.multiSubscription(); 28 StreamController c = new StreamController.broadcast();
28 c.reduce(0, (a,b) { throw "Fnyf!"; }) 29 Stream stream = c.stream;
30 stream.reduce(0, (a,b) { throw "Fnyf!"; })
29 .catchError(expectAsync1((e) { Expect.equals("Fnyf!", e.error); })); 31 .catchError(expectAsync1((e) { Expect.equals("Fnyf!", e.error); }));
30 c.add(42); 32 c.add(42);
31 }); 33 });
32 34
33 test("StreamController.pipeInto", () { 35 test("StreamController.pipeInto", () {
34 StreamController c = new StreamController.multiSubscription(); 36 StreamController c = new StreamController.broadcast();
35 var list = <int>[]; 37 var list = <int>[];
36 c.pipeInto(new CollectionSink<int>(list)) 38 Stream stream = c.stream;
39 stream.pipeInto(new CollectionSink<int>(list))
37 .whenComplete(expectAsync0(() { 40 .whenComplete(expectAsync0(() {
38 Expect.listEquals(<int>[1,2,9,3,9], list); 41 Expect.listEquals(<int>[1,2,9,3,9], list);
39 })); 42 }));
40 c.add(1); 43 c.add(1);
41 c.add(2); 44 c.add(2);
42 c.add(9); 45 c.add(9);
43 c.add(3); 46 c.add(3);
44 c.add(9); 47 c.add(9);
45 c.close(); 48 c.close();
46 }); 49 });
47 } 50 }
48 51
49 testSingleController() { 52 testSingleController() {
50 test("Single-subscription StreamController.reduce", () { 53 test("Single-subscription StreamController.reduce", () {
51 StreamController c = new StreamController(); 54 StreamController c = new StreamController();
52 c.reduce(0, (a,b) => a + b) 55 Stream stream = c.stream;
56 stream.reduce(0, (a,b) => a + b)
53 .then(expectAsync1((int v) { Expect.equals(42, v); })); 57 .then(expectAsync1((int v) { Expect.equals(42, v); }));
54 c.add(10); 58 c.add(10);
55 c.add(32); 59 c.add(32);
56 c.close(); 60 c.close();
57 }); 61 });
58 62
59 test("Single-subscription StreamController.reduce throws", () { 63 test("Single-subscription StreamController.reduce throws", () {
60 StreamController c = new StreamController(); 64 StreamController c = new StreamController();
61 c.reduce(0, (a,b) { throw "Fnyf!"; }) 65 Stream stream = c.stream;
66 stream.reduce(0, (a,b) { throw "Fnyf!"; })
62 .catchError(expectAsync1((e) { Expect.equals("Fnyf!", e.error); })); 67 .catchError(expectAsync1((e) { Expect.equals("Fnyf!", e.error); }));
63 c.add(42); 68 c.add(42);
64 }); 69 });
65 70
66 test("Single-subscription StreamController.pipeInto", () { 71 test("Single-subscription StreamController.pipeInto", () {
67 StreamController c = new StreamController(); 72 StreamController c = new StreamController();
68 var list = <int>[]; 73 var list = <int>[];
69 c.pipeInto(new CollectionSink<int>(list)) 74 Stream stream = c.stream;
75 stream.pipeInto(new CollectionSink<int>(list))
70 .whenComplete(expectAsync0(() { 76 .whenComplete(expectAsync0(() {
71 Expect.listEquals(<int>[1,2,9,3,9], list); 77 Expect.listEquals(<int>[1,2,9,3,9], list);
72 })); 78 }));
73 c.add(1); 79 c.add(1);
74 c.add(2); 80 c.add(2);
75 c.add(9); 81 c.add(9);
76 c.add(3); 82 c.add(3);
77 c.add(9); 83 c.add(9);
78 c.close(); 84 c.close();
79 }); 85 });
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 sink.add(5); // seen by stream 10 151 sink.add(5); // seen by stream 10
146 sink.close(); 152 sink.close();
147 }); 153 });
148 } 154 }
149 155
150 testExtraMethods() { 156 testExtraMethods() {
151 Events sentEvents = new Events()..add(7)..add(9)..add(13)..add(87)..close(); 157 Events sentEvents = new Events()..add(7)..add(9)..add(13)..add(87)..close();
152 158
153 test("firstMatching", () { 159 test("firstMatching", () {
154 StreamController c = new StreamController(); 160 StreamController c = new StreamController();
155 Future f = c.firstMatching((x) => (x % 3) == 0); 161 Future f = c.stream.firstMatching((x) => (x % 3) == 0);
156 f.then(expectAsync1((v) { Expect.equals(9, v); })); 162 f.then(expectAsync1((v) { Expect.equals(9, v); }));
157 sentEvents.replay(c); 163 sentEvents.replay(c);
158 }); 164 });
159 165
160 test("firstMatching 2", () { 166 test("firstMatching 2", () {
161 StreamController c = new StreamController(); 167 StreamController c = new StreamController();
162 Future f = c.firstMatching((x) => (x % 4) == 0); 168 Future f = c.stream.firstMatching((x) => (x % 4) == 0);
163 f.catchError(expectAsync1((e) {})); 169 f.catchError(expectAsync1((e) {}));
164 sentEvents.replay(c); 170 sentEvents.replay(c);
165 }); 171 });
166 172
167 test("firstMatching 3", () { 173 test("firstMatching 3", () {
168 StreamController c = new StreamController(); 174 StreamController c = new StreamController();
169 Future f = c.firstMatching((x) => (x % 4) == 0, defaultValue: () => 999); 175 Future f = c.stream.firstMatching((x) => (x % 4) == 0, defaultValue: () => 9 99);
170 f.then(expectAsync1((v) { Expect.equals(999, v); })); 176 f.then(expectAsync1((v) { Expect.equals(999, v); }));
171 sentEvents.replay(c); 177 sentEvents.replay(c);
172 }); 178 });
173 179
174 180
175 test("lastMatching", () { 181 test("lastMatching", () {
176 StreamController c = new StreamController(); 182 StreamController c = new StreamController();
177 Future f = c.lastMatching((x) => (x % 3) == 0); 183 Future f = c.stream.lastMatching((x) => (x % 3) == 0);
178 f.then(expectAsync1((v) { Expect.equals(87, v); })); 184 f.then(expectAsync1((v) { Expect.equals(87, v); }));
179 sentEvents.replay(c); 185 sentEvents.replay(c);
180 }); 186 });
181 187
182 test("lastMatching 2", () { 188 test("lastMatching 2", () {
183 StreamController c = new StreamController(); 189 StreamController c = new StreamController();
184 Future f = c.lastMatching((x) => (x % 4) == 0); 190 Future f = c.stream.lastMatching((x) => (x % 4) == 0);
185 f.catchError(expectAsync1((e) {})); 191 f.catchError(expectAsync1((e) {}));
186 sentEvents.replay(c); 192 sentEvents.replay(c);
187 }); 193 });
188 194
189 test("lastMatching 3", () { 195 test("lastMatching 3", () {
190 StreamController c = new StreamController(); 196 StreamController c = new StreamController();
191 Future f = c.lastMatching((x) => (x % 4) == 0, defaultValue: () => 999); 197 Future f = c.stream.lastMatching((x) => (x % 4) == 0, defaultValue: () => 99 9);
192 f.then(expectAsync1((v) { Expect.equals(999, v); })); 198 f.then(expectAsync1((v) { Expect.equals(999, v); }));
193 sentEvents.replay(c); 199 sentEvents.replay(c);
194 }); 200 });
195 201
196 test("singleMatching", () { 202 test("singleMatching", () {
197 StreamController c = new StreamController(); 203 StreamController c = new StreamController();
198 Future f = c.singleMatching((x) => (x % 9) == 0); 204 Future f = c.stream.singleMatching((x) => (x % 9) == 0);
199 f.then(expectAsync1((v) { Expect.equals(9, v); })); 205 f.then(expectAsync1((v) { Expect.equals(9, v); }));
200 sentEvents.replay(c); 206 sentEvents.replay(c);
201 }); 207 });
202 208
203 test("singleMatching 2", () { 209 test("singleMatching 2", () {
204 StreamController c = new StreamController(); 210 StreamController c = new StreamController();
205 Future f = c.singleMatching((x) => (x % 3) == 0); // Matches both 9 and 87. . 211 Future f = c.stream.singleMatching((x) => (x % 3) == 0); // Matches both 9 and 87..
206 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); })); 212 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); }));
207 sentEvents.replay(c); 213 sentEvents.replay(c);
208 }); 214 });
209 215
210 test("first", () { 216 test("first", () {
211 StreamController c = new StreamController(); 217 StreamController c = new StreamController();
212 Future f = c.first; 218 Future f = c.stream.first;
213 f.then(expectAsync1((v) { Expect.equals(7, v);})); 219 f.then(expectAsync1((v) { Expect.equals(7, v);}));
214 sentEvents.replay(c); 220 sentEvents.replay(c);
215 }); 221 });
216 222
217 test("first empty", () { 223 test("first empty", () {
218 StreamController c = new StreamController(); 224 StreamController c = new StreamController();
219 Future f = c.first; 225 Future f = c.stream.first;
220 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); })); 226 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); }));
221 Events emptyEvents = new Events()..close(); 227 Events emptyEvents = new Events()..close();
222 emptyEvents.replay(c); 228 emptyEvents.replay(c);
223 }); 229 });
224 230
225 test("first error", () { 231 test("first error", () {
226 StreamController c = new StreamController(); 232 StreamController c = new StreamController();
227 Future f = c.first; 233 Future f = c.stream.first;
228 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); })); 234 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); }));
229 Events errorEvents = new Events()..error("error")..close(); 235 Events errorEvents = new Events()..error("error")..close();
230 errorEvents.replay(c); 236 errorEvents.replay(c);
231 }); 237 });
232 238
233 test("first error 2", () { 239 test("first error 2", () {
234 StreamController c = new StreamController(); 240 StreamController c = new StreamController();
235 Future f = c.first; 241 Future f = c.stream.first;
236 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); })); 242 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); }));
237 Events errorEvents = new Events()..error("error")..error("error2")..close(); 243 Events errorEvents = new Events()..error("error")..error("error2")..close();
238 errorEvents.replay(c); 244 errorEvents.replay(c);
239 }); 245 });
240 246
241 test("last", () { 247 test("last", () {
242 StreamController c = new StreamController(); 248 StreamController c = new StreamController();
243 Future f = c.last; 249 Future f = c.stream.last;
244 f.then(expectAsync1((v) { Expect.equals(87, v);})); 250 f.then(expectAsync1((v) { Expect.equals(87, v);}));
245 sentEvents.replay(c); 251 sentEvents.replay(c);
246 }); 252 });
247 253
248 test("last empty", () { 254 test("last empty", () {
249 StreamController c = new StreamController(); 255 StreamController c = new StreamController();
250 Future f = c.last; 256 Future f = c.stream.last;
251 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); })); 257 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); }));
252 Events emptyEvents = new Events()..close(); 258 Events emptyEvents = new Events()..close();
253 emptyEvents.replay(c); 259 emptyEvents.replay(c);
254 }); 260 });
255 261
256 test("last error", () { 262 test("last error", () {
257 StreamController c = new StreamController(); 263 StreamController c = new StreamController();
258 Future f = c.last; 264 Future f = c.stream.last;
259 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); })); 265 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); }));
260 Events errorEvents = new Events()..error("error")..close(); 266 Events errorEvents = new Events()..error("error")..close();
261 errorEvents.replay(c); 267 errorEvents.replay(c);
262 }); 268 });
263 269
264 test("last error 2", () { 270 test("last error 2", () {
265 StreamController c = new StreamController(); 271 StreamController c = new StreamController();
266 Future f = c.last; 272 Future f = c.stream.last;
267 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); })); 273 f.catchError(expectAsync1((e) { Expect.equals("error", e.error); }));
268 Events errorEvents = new Events()..error("error")..error("error2")..close(); 274 Events errorEvents = new Events()..error("error")..error("error2")..close();
269 errorEvents.replay(c); 275 errorEvents.replay(c);
270 }); 276 });
271 277
272 test("elementAt", () { 278 test("elementAt", () {
273 StreamController c = new StreamController(); 279 StreamController c = new StreamController();
274 Future f = c.elementAt(2); 280 Future f = c.stream.elementAt(2);
275 f.then(expectAsync1((v) { Expect.equals(13, v);})); 281 f.then(expectAsync1((v) { Expect.equals(13, v);}));
276 sentEvents.replay(c); 282 sentEvents.replay(c);
277 }); 283 });
278 284
279 test("elementAt 2", () { 285 test("elementAt 2", () {
280 StreamController c = new StreamController(); 286 StreamController c = new StreamController();
281 Future f = c.elementAt(20); 287 Future f = c.stream.elementAt(20);
282 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); })); 288 f.catchError(expectAsync1((e) { Expect.isTrue(e.error is StateError); }));
283 sentEvents.replay(c); 289 sentEvents.replay(c);
284 }); 290 });
285 } 291 }
286 292
287 testPause() { 293 testPause() {
288 test("pause event-unpause", () { 294 test("pause event-unpause", () {
289 StreamController c = new StreamController(); 295 StreamController c = new StreamController();
290 Events actualEvents = new Events.capture(c); 296 Events actualEvents = new Events.capture(c.stream);
291 Events expectedEvents = new Events(); 297 Events expectedEvents = new Events();
292 expectedEvents.add(42); 298 expectedEvents.add(42);
293 c.add(42); 299 c.add(42);
294 Expect.listEquals(expectedEvents.events, actualEvents.events); 300 Expect.listEquals(expectedEvents.events, actualEvents.events);
295 Completer completer = new Completer(); 301 Completer completer = new Completer();
296 actualEvents.pause(completer.future); 302 actualEvents.pause(completer.future);
297 c..add(43)..add(44)..close(); 303 c..add(43)..add(44)..close();
298 Expect.listEquals(expectedEvents.events, actualEvents.events); 304 Expect.listEquals(expectedEvents.events, actualEvents.events);
299 completer.complete(); 305 completer.complete();
300 expectedEvents..add(43)..add(44)..close(); 306 expectedEvents..add(43)..add(44)..close();
301 actualEvents.onDone(expectAsync0(() { 307 actualEvents.onDone(expectAsync0(() {
302 Expect.listEquals(expectedEvents.events, actualEvents.events); 308 Expect.listEquals(expectedEvents.events, actualEvents.events);
303 })); 309 }));
304 }); 310 });
305 311
306 test("pause twice event-unpause", () { 312 test("pause twice event-unpause", () {
307 StreamController c = new StreamController(); 313 StreamController c = new StreamController();
308 Events actualEvents = new Events.capture(c); 314 Events actualEvents = new Events.capture(c.stream);
309 Events expectedEvents = new Events(); 315 Events expectedEvents = new Events();
310 expectedEvents.add(42); 316 expectedEvents.add(42);
311 c.add(42); 317 c.add(42);
312 Expect.listEquals(expectedEvents.events, actualEvents.events); 318 Expect.listEquals(expectedEvents.events, actualEvents.events);
313 Completer completer = new Completer(); 319 Completer completer = new Completer();
314 Completer completer2 = new Completer(); 320 Completer completer2 = new Completer();
315 actualEvents.pause(completer.future); 321 actualEvents.pause(completer.future);
316 actualEvents.pause(completer2.future); 322 actualEvents.pause(completer2.future);
317 c..add(43)..add(44)..close(); 323 c..add(43)..add(44)..close();
318 Expect.listEquals(expectedEvents.events, actualEvents.events); 324 Expect.listEquals(expectedEvents.events, actualEvents.events);
319 completer.complete(); 325 completer.complete();
320 Expect.listEquals(expectedEvents.events, actualEvents.events); 326 Expect.listEquals(expectedEvents.events, actualEvents.events);
321 completer2.complete(); 327 completer2.complete();
322 expectedEvents..add(43)..add(44)..close(); 328 expectedEvents..add(43)..add(44)..close();
323 actualEvents.onDone(expectAsync0((){ 329 actualEvents.onDone(expectAsync0((){
324 Expect.listEquals(expectedEvents.events, actualEvents.events); 330 Expect.listEquals(expectedEvents.events, actualEvents.events);
325 })); 331 }));
326 }); 332 });
327 333
328 test("pause twice direct-unpause", () { 334 test("pause twice direct-unpause", () {
329 StreamController c = new StreamController(); 335 StreamController c = new StreamController();
330 Events actualEvents = new Events.capture(c); 336 Events actualEvents = new Events.capture(c.stream);
331 Events expectedEvents = new Events(); 337 Events expectedEvents = new Events();
332 expectedEvents.add(42); 338 expectedEvents.add(42);
333 c.add(42); 339 c.add(42);
334 Expect.listEquals(expectedEvents.events, actualEvents.events); 340 Expect.listEquals(expectedEvents.events, actualEvents.events);
335 actualEvents.pause(); 341 actualEvents.pause();
336 actualEvents.pause(); 342 actualEvents.pause();
337 c.add(43); 343 c.add(43);
338 c.add(44); 344 c.add(44);
339 c.close(); 345 c.close();
340 Expect.listEquals(expectedEvents.events, actualEvents.events); 346 Expect.listEquals(expectedEvents.events, actualEvents.events);
341 actualEvents.resume(); 347 actualEvents.resume();
342 Expect.listEquals(expectedEvents.events, actualEvents.events); 348 Expect.listEquals(expectedEvents.events, actualEvents.events);
343 expectedEvents..add(43)..add(44)..close(); 349 expectedEvents..add(43)..add(44)..close();
344 actualEvents.onDone(expectAsync0(() { 350 actualEvents.onDone(expectAsync0(() {
345 Expect.listEquals(expectedEvents.events, actualEvents.events); 351 Expect.listEquals(expectedEvents.events, actualEvents.events);
346 })); 352 }));
347 actualEvents.resume(); 353 actualEvents.resume();
348 }); 354 });
349 355
350 test("pause twice direct-event-unpause", () { 356 test("pause twice direct-event-unpause", () {
351 StreamController c = new StreamController(); 357 StreamController c = new StreamController();
352 Events actualEvents = new Events.capture(c); 358 Events actualEvents = new Events.capture(c.stream);
353 Events expectedEvents = new Events(); 359 Events expectedEvents = new Events();
354 expectedEvents.add(42); 360 expectedEvents.add(42);
355 c.add(42); 361 c.add(42);
356 Expect.listEquals(expectedEvents.events, actualEvents.events); 362 Expect.listEquals(expectedEvents.events, actualEvents.events);
357 Completer completer = new Completer(); 363 Completer completer = new Completer();
358 actualEvents.pause(completer.future); 364 actualEvents.pause(completer.future);
359 actualEvents.pause(); 365 actualEvents.pause();
360 c.add(43); 366 c.add(43);
361 c.add(44); 367 c.add(44);
362 c.close(); 368 c.close();
363 Expect.listEquals(expectedEvents.events, actualEvents.events); 369 Expect.listEquals(expectedEvents.events, actualEvents.events);
364 actualEvents.resume(); 370 actualEvents.resume();
365 Expect.listEquals(expectedEvents.events, actualEvents.events); 371 Expect.listEquals(expectedEvents.events, actualEvents.events);
366 expectedEvents..add(43)..add(44)..close(); 372 expectedEvents..add(43)..add(44)..close();
367 actualEvents.onDone(expectAsync0(() { 373 actualEvents.onDone(expectAsync0(() {
368 Expect.listEquals(expectedEvents.events, actualEvents.events); 374 Expect.listEquals(expectedEvents.events, actualEvents.events);
369 })); 375 }));
370 completer.complete(); 376 completer.complete();
371 }); 377 });
372 378
373 test("pause twice direct-unpause", () { 379 test("pause twice direct-unpause", () {
374 StreamController c = new StreamController(); 380 StreamController c = new StreamController();
375 Events actualEvents = new Events.capture(c); 381 Events actualEvents = new Events.capture(c.stream);
376 Events expectedEvents = new Events(); 382 Events expectedEvents = new Events();
377 expectedEvents.add(42); 383 expectedEvents.add(42);
378 c.add(42); 384 c.add(42);
379 Expect.listEquals(expectedEvents.events, actualEvents.events); 385 Expect.listEquals(expectedEvents.events, actualEvents.events);
380 Completer completer = new Completer(); 386 Completer completer = new Completer();
381 actualEvents.pause(completer.future); 387 actualEvents.pause(completer.future);
382 actualEvents.pause(); 388 actualEvents.pause();
383 c.add(43); 389 c.add(43);
384 c.add(44); 390 c.add(44);
385 c.close(); 391 c.close();
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 testFuture("reduce", (s, act) => s.reduce(0, (a,b) => act(b))); 451 testFuture("reduce", (s, act) => s.reduce(0, (a,b) => act(b)));
446 } 452 }
447 453
448 main() { 454 main() {
449 testController(); 455 testController();
450 testSingleController(); 456 testSingleController();
451 testExtraMethods(); 457 testExtraMethods();
452 testPause(); 458 testPause();
453 testRethrow(); 459 testRethrow();
454 } 460 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698