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

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

Issue 17490002: Make asBroadcastStream take two callbacks. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Reintroduce zone. Created 7 years, 6 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 | « sdk/lib/html/dartium/html_dartium.dart ('k') | tests/lib/async/stream_controller_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) 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 "package:expect/expect.dart"; 8 import "package:expect/expect.dart";
9 import 'dart:async'; 9 import 'dart:async';
10 import 'dart:isolate'; 10 import 'dart:isolate';
11 import '../../../pkg/unittest/lib/unittest.dart'; 11 import '../../../pkg/unittest/lib/unittest.dart';
12 import 'event_helper.dart'; 12 import 'event_helper.dart';
13 import 'stream_state_helper.dart'; 13 import 'stream_state_helper.dart';
14 14
15 void cancelSub(StreamSubscription sub) { sub.cancel(); }
16
15 testController() { 17 testController() {
16 // Test fold 18 // Test fold
17 test("StreamController.fold", () { 19 test("StreamController.fold", () {
18 StreamController c = new StreamController(); 20 StreamController c = new StreamController();
19 Stream stream = c.stream.asBroadcastStream(); 21 Stream stream = c.stream.asBroadcastStream(onCancel: cancelSub);
20 stream.fold(0, (a,b) => a + b) 22 stream.fold(0, (a,b) => a + b)
21 .then(expectAsync1((int v) { 23 .then(expectAsync1((int v) {
22 Expect.equals(42, v); 24 Expect.equals(42, v);
23 })); 25 }));
24 c.add(10); 26 c.add(10);
25 c.add(32); 27 c.add(32);
26 c.close(); 28 c.close();
27 }); 29 });
28 30
29 test("StreamController.fold throws", () { 31 test("StreamController.fold throws", () {
30 StreamController c = new StreamController(); 32 StreamController c = new StreamController();
31 Stream stream = c.stream.asBroadcastStream(); 33 Stream stream = c.stream.asBroadcastStream(onCancel: cancelSub);
32 stream.fold(0, (a,b) { throw "Fnyf!"; }) 34 stream.fold(0, (a,b) { throw "Fnyf!"; })
33 .catchError(expectAsync1((error) { Expect.equals("Fnyf!", error); })); 35 .catchError(expectAsync1((error) { Expect.equals("Fnyf!", error); }));
34 c.add(42); 36 c.add(42);
35 }); 37 });
36 } 38 }
37 39
38 testSingleController() { 40 testSingleController() {
39 test("Single-subscription StreamController.fold", () { 41 test("Single-subscription StreamController.fold", () {
40 StreamController c = new StreamController(); 42 StreamController c = new StreamController();
41 Stream stream = c.stream; 43 Stream stream = c.stream;
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 Future f = c.stream.drain(); 262 Future f = c.stream.drain();
261 f.catchError(expectAsync1((error) { Expect.equals("error", error); })); 263 f.catchError(expectAsync1((error) { Expect.equals("error", error); }));
262 Events errorEvents = new Events()..error("error")..error("error2")..close(); 264 Events errorEvents = new Events()..error("error")..error("error2")..close();
263 errorEvents.replay(c); 265 errorEvents.replay(c);
264 }); 266 });
265 267
266 } 268 }
267 269
268 testPause() { 270 testPause() {
269 test("pause event-unpause", () { 271 test("pause event-unpause", () {
272
270 StreamProtocolTest test = new StreamProtocolTest(); 273 StreamProtocolTest test = new StreamProtocolTest();
271 Completer completer = new Completer(); 274 Completer completer = new Completer();
272 test..expectListen() 275 test..expectListen()
273 ..expectData(42, () { test.pause(completer.future); }) 276 ..expectData(42, () { test.pause(completer.future); })
274 ..expectPause(() { 277 ..expectPause(() {
275 completer.complete(null); 278 completer.complete(null);
276 }) 279 })
277 ..expectData(43) 280 ..expectData(43)
278 ..expectData(44) 281 ..expectData(44)
279 ..expectDone() 282 ..expectDone()
280 ..expectCancel(); 283 ..expectCancel(test.terminate);
281 test.listen(); 284 test.listen();
282 test.add(42); 285 test.add(42);
283 test.add(43); 286 test.add(43);
284 test.add(44); 287 test.add(44);
285 test.close(); 288 test.close();
286 }); 289 });
287 290
288 test("pause twice event-unpause", () { 291 test("pause twice event-unpause", () {
289 StreamProtocolTest test = new StreamProtocolTest(); 292 StreamProtocolTest test = new StreamProtocolTest();
290 Completer completer = new Completer(); 293 Completer completer = new Completer();
291 Completer completer2 = new Completer(); 294 Completer completer2 = new Completer();
292 test..expectListen() 295 test..expectListen()
293 ..expectData(42, () { 296 ..expectData(42, () {
294 test.pause(completer.future); 297 test.pause(completer.future);
295 test.pause(completer2.future); 298 test.pause(completer2.future);
296 }) 299 })
297 ..expectPause(() { 300 ..expectPause(() {
298 completer.future.then(completer2.complete); 301 completer.future.then(completer2.complete);
299 completer.complete(null); 302 completer.complete(null);
300 }) 303 })
301 ..expectData(43) 304 ..expectData(43)
302 ..expectData(44) 305 ..expectData(44)
303 ..expectDone() 306 ..expectDone()
304 ..expectCancel(); 307 ..expectCancel(test.terminate);
305 test..listen() 308 test..listen()
306 ..add(42) 309 ..add(42)
307 ..add(43) 310 ..add(43)
308 ..add(44) 311 ..add(44)
309 ..close(); 312 ..close();
310 }); 313 });
311 314
312 test("pause twice direct-unpause", () { 315 test("pause twice direct-unpause", () {
313 StreamProtocolTest test = new StreamProtocolTest(); 316 StreamProtocolTest test = new StreamProtocolTest();
314 test..expectListen() 317 test..expectListen()
315 ..expectData(42, () { 318 ..expectData(42, () {
316 test.pause(); 319 test.pause();
317 test.pause(); 320 test.pause();
318 }) 321 })
319 ..expectPause(() { 322 ..expectPause(() {
320 test.resume(); 323 test.resume();
321 test.resume(); 324 test.resume();
322 }) 325 })
323 ..expectData(43) 326 ..expectData(43)
324 ..expectData(44) 327 ..expectData(44)
325 ..expectDone() 328 ..expectDone()
326 ..expectCancel(); 329 ..expectCancel(test.terminate);
327 test..listen() 330 test..listen()
328 ..add(42) 331 ..add(42)
329 ..add(43) 332 ..add(43)
330 ..add(44) 333 ..add(44)
331 ..close(); 334 ..close();
332 }); 335 });
333 336
334 test("pause twice direct-event-unpause", () { 337 test("pause twice direct-event-unpause", () {
335 StreamProtocolTest test = new StreamProtocolTest(); 338 StreamProtocolTest test = new StreamProtocolTest();
336 Completer completer = new Completer(); 339 Completer completer = new Completer();
337 test..expectListen() 340 test..expectListen()
338 ..expectData(42, () { 341 ..expectData(42, () {
339 test.pause(); 342 test.pause();
340 test.pause(completer.future); 343 test.pause(completer.future);
341 test.add(43); 344 test.add(43);
342 test.add(44); 345 test.add(44);
343 test.close(); 346 test.close();
344 }) 347 })
345 ..expectPause(() { 348 ..expectPause(() {
346 completer.future.then((v) => test.resume()); 349 completer.future.then((v) => test.resume());
347 completer.complete(null); 350 completer.complete(null);
348 }) 351 })
349 ..expectData(43) 352 ..expectData(43)
350 ..expectData(44) 353 ..expectData(44)
351 ..expectDone() 354 ..expectDone()
352 ..expectCancel(); 355 ..expectCancel(test.terminate);
353 test..listen() 356 test..listen()
354 ..add(42); 357 ..add(42);
355 }); 358 });
356 } 359 }
357 360
358 class TestError { const TestError(); } 361 class TestError { const TestError(); }
359 362
360 testRethrow() { 363 testRethrow() {
361 TestError error = const TestError(); 364 TestError error = const TestError();
362 365
363
364 testStream(name, streamValueTransform) { 366 testStream(name, streamValueTransform) {
365 test("rethrow-$name-value", () { 367 test("rethrow-$name-value", () {
366 StreamController c = new StreamController(); 368 StreamController c = new StreamController();
367 Stream s = streamValueTransform(c.stream, (v) { throw error; }); 369 Stream s = streamValueTransform(c.stream, (v) { throw error; });
368 s.listen((_) { Expect.fail("unexpected value"); }, onError: expectAsync1( 370 s.listen((_) { Expect.fail("unexpected value"); }, onError: expectAsync1(
369 (e) { Expect.identical(error, e); })); 371 (e) { Expect.identical(error, e); }));
370 c.add(null); 372 c.add(null);
371 c.close(); 373 c.close();
372 }); 374 });
373 } 375 }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 test.add(87); 493 test.add(87);
492 sub.cancel(); 494 sub.cancel();
493 }); 495 });
494 test.expectCancel(() { 496 test.expectCancel(() {
495 test.add(37); 497 test.add(37);
496 test.terminate(); 498 test.terminate();
497 }); 499 });
498 }); 500 });
499 } 501 }
500 502
503 void testAsBroadcast() {
504 test("asBroadcast-not-canceled", () {
505 StreamProtocolTest test = new StreamProtocolTest.asBroadcast();
506 var sub;
507 test..expectListen()
508 ..expectBroadcastListen((_) {
509 test.add(42);
510 })
511 ..expectData(42, () {
512 sub.cancel();
513 })
514 ..expectBroadcastCancel((_) {
515 sub = test.listen();
516 })
517 ..expectBroadcastListen((_) {
518 test.terminate();
519 });
520 sub = test.listen();
521 });
522
523 test("asBroadcast-canceled", () {
524 StreamProtocolTest test = new StreamProtocolTest.asBroadcast();
525 var sub;
526 test..expectListen()
527 ..expectBroadcastListen((_) {
528 test.add(42);
529 })
530 ..expectData(42, () {
531 sub.cancel();
532 })
533 ..expectBroadcastCancel((originalSub) {
534 originalSub.cancel();
535 })
536 ..expectCancel(test.terminate);
537 sub = test.listen();
538 });
539
540 test("asBroadcast-pause-original", () {
541 StreamProtocolTest test = new StreamProtocolTest.asBroadcast();
542 var sub;
543 test..expectListen()
544 ..expectBroadcastListen((_) {
545 test.add(42);
546 test.add(43);
547 })
548 ..expectData(42, () {
549 sub.cancel();
550 })
551 ..expectBroadcastCancel((originalSub) {
552 originalSub.pause(); // Pause before sending 43 from original sub.
553 })
554 ..expectPause(() {
555 sub = test.listen();
556 })
557 ..expectBroadcastListen((originalSub) {
558 originalSub.resume();
559 })
560 ..expectData(43)
561 ..expectResume(() {
562 test.close();
563 })
564 ..expectDone()
565 ..expectBroadcastCancel()
566 ..expectCancel(test.terminate);
567 sub = test.listen();
568 });
569 }
570
501 main() { 571 main() {
502 testController(); 572 testController();
503 testSingleController(); 573 testSingleController();
504 testExtraMethods(); 574 testExtraMethods();
505 testPause(); 575 testPause();
506 testRethrow(); 576 testRethrow();
507 testBroadcastController(); 577 testBroadcastController();
578 testAsBroadcast();
508 } 579 }
OLDNEW
« no previous file with comments | « sdk/lib/html/dartium/html_dartium.dart ('k') | tests/lib/async/stream_controller_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698