| Index: tests/lib/async/stream_controller_async_test.dart
|
| diff --git a/tests/lib/async/stream_controller_async_test.dart b/tests/lib/async/stream_controller_async_test.dart
|
| index 65e658f32b259b8cf2f236ae969566fe3061d698..7c134055bc249134739f8f69a72e0a50b0bb5738 100644
|
| --- a/tests/lib/async/stream_controller_async_test.dart
|
| +++ b/tests/lib/async/stream_controller_async_test.dart
|
| @@ -10,6 +10,7 @@ import 'dart:async';
|
| import 'dart:isolate';
|
| import '../../../pkg/unittest/lib/unittest.dart';
|
| import 'event_helper.dart';
|
| +import 'stream_state_helper.dart';
|
|
|
| testController() {
|
| // Test fold
|
| @@ -266,111 +267,91 @@ testExtraMethods() {
|
|
|
| testPause() {
|
| test("pause event-unpause", () {
|
| - StreamController c = new StreamController();
|
| - Events actualEvents = new Events.capture(c.stream);
|
| - Events expectedEvents = new Events();
|
| - expectedEvents.add(42);
|
| - c.add(42);
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| + StreamProtocolTest test = new StreamProtocolTest();
|
| Completer completer = new Completer();
|
| - actualEvents.pause(completer.future);
|
| - c..add(43)..add(44)..close();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - completer.complete();
|
| - expectedEvents..add(43)..add(44)..close();
|
| - actualEvents.onDone(expectAsync0(() {
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - }));
|
| + test..expectListen()
|
| + ..expectData(42, () { test.pause(completer.future); })
|
| + ..expectPause(() {
|
| + completer.complete(null);
|
| + })
|
| + ..expectData(43)
|
| + ..expectData(44)
|
| + ..expectDone()
|
| + ..expectCancel();
|
| + test.listen();
|
| + test.add(42);
|
| + test.add(43);
|
| + test.add(44);
|
| + test.close();
|
| });
|
|
|
| test("pause twice event-unpause", () {
|
| - StreamController c = new StreamController();
|
| - Events actualEvents = new Events.capture(c.stream);
|
| - Events expectedEvents = new Events();
|
| - expectedEvents.add(42);
|
| - c.add(42);
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| + StreamProtocolTest test = new StreamProtocolTest();
|
| Completer completer = new Completer();
|
| Completer completer2 = new Completer();
|
| - actualEvents.pause(completer.future);
|
| - actualEvents.pause(completer2.future);
|
| - c..add(43)..add(44)..close();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - completer.complete();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - completer2.complete();
|
| - expectedEvents..add(43)..add(44)..close();
|
| - actualEvents.onDone(expectAsync0((){
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - }));
|
| + test..expectListen()
|
| + ..expectData(42, () {
|
| + test.pause(completer.future);
|
| + test.pause(completer2.future);
|
| + })
|
| + ..expectPause(() {
|
| + completer.future.then(completer2.complete);
|
| + completer.complete(null);
|
| + })
|
| + ..expectData(43)
|
| + ..expectData(44)
|
| + ..expectDone()
|
| + ..expectCancel();
|
| + test..listen()
|
| + ..add(42)
|
| + ..add(43)
|
| + ..add(44)
|
| + ..close();
|
| });
|
|
|
| test("pause twice direct-unpause", () {
|
| - StreamController c = new StreamController();
|
| - Events actualEvents = new Events.capture(c.stream);
|
| - Events expectedEvents = new Events();
|
| - expectedEvents.add(42);
|
| - c.add(42);
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - actualEvents.pause();
|
| - actualEvents.pause();
|
| - c.add(43);
|
| - c.add(44);
|
| - c.close();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - actualEvents.resume();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - expectedEvents..add(43)..add(44)..close();
|
| - actualEvents.onDone(expectAsync0(() {
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - }));
|
| - actualEvents.resume();
|
| + StreamProtocolTest test = new StreamProtocolTest();
|
| + test..expectListen()
|
| + ..expectData(42, () {
|
| + test.pause();
|
| + test.pause();
|
| + })
|
| + ..expectPause(() {
|
| + test.resume();
|
| + test.resume();
|
| + })
|
| + ..expectData(43)
|
| + ..expectData(44)
|
| + ..expectDone()
|
| + ..expectCancel();
|
| + test..listen()
|
| + ..add(42)
|
| + ..add(43)
|
| + ..add(44)
|
| + ..close();
|
| });
|
|
|
| test("pause twice direct-event-unpause", () {
|
| - StreamController c = new StreamController();
|
| - Events actualEvents = new Events.capture(c.stream);
|
| - Events expectedEvents = new Events();
|
| - expectedEvents.add(42);
|
| - c.add(42);
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - Completer completer = new Completer();
|
| - actualEvents.pause(completer.future);
|
| - actualEvents.pause();
|
| - c.add(43);
|
| - c.add(44);
|
| - c.close();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - actualEvents.resume();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - expectedEvents..add(43)..add(44)..close();
|
| - actualEvents.onDone(expectAsync0(() {
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - }));
|
| - completer.complete();
|
| - });
|
| -
|
| - test("pause twice direct-unpause", () {
|
| - StreamController c = new StreamController();
|
| - Events actualEvents = new Events.capture(c.stream);
|
| - Events expectedEvents = new Events();
|
| - expectedEvents.add(42);
|
| - c.add(42);
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| + StreamProtocolTest test = new StreamProtocolTest();
|
| Completer completer = new Completer();
|
| - actualEvents.pause(completer.future);
|
| - actualEvents.pause();
|
| - c.add(43);
|
| - c.add(44);
|
| - c.close();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - completer.complete();
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - expectedEvents..add(43)..add(44)..close();
|
| - actualEvents.onDone(expectAsync0(() {
|
| - Expect.listEquals(expectedEvents.events, actualEvents.events);
|
| - }));
|
| - actualEvents.resume();
|
| + test..expectListen()
|
| + ..expectData(42, () {
|
| + test.pause();
|
| + test.pause(completer.future);
|
| + test.add(43);
|
| + test.add(44);
|
| + test.close();
|
| + })
|
| + ..expectPause(() {
|
| + completer.future.then((v) => test.resume());
|
| + completer.complete(null);
|
| + })
|
| + ..expectData(43)
|
| + ..expectData(44)
|
| + ..expectDone()
|
| + ..expectCancel();
|
| + test..listen()
|
| + ..add(42);
|
| });
|
| }
|
|
|
| @@ -431,75 +412,89 @@ testRethrow() {
|
|
|
| void testBroadcastController() {
|
| test("broadcast-controller-basic", () {
|
| - StreamController<int> c = new StreamController.broadcast(
|
| - onListen: expectAsync0(() {}),
|
| - onCancel: expectAsync0(() {})
|
| - );
|
| - Stream<int> s = c.stream;
|
| - s.listen(expectAsync1((x) { expect(x, equals(42)); }));
|
| - c.add(42);
|
| - c.close();
|
| + StreamProtocolTest test = new StreamProtocolTest.broadcast();
|
| + test..expectListen()
|
| + ..expectData(42)
|
| + ..expectDone()
|
| + ..expectCancel(test.terminate);
|
| + test..listen()
|
| + ..add(42)
|
| + ..close();
|
| });
|
|
|
| test("broadcast-controller-listen-twice", () {
|
| - StreamController<int> c = new StreamController.broadcast(
|
| - onListen: expectAsync0(() {}),
|
| - onCancel: expectAsync0(() {})
|
| - );
|
| - c.stream.listen(expectAsync1((x) { expect(x, equals(42)); }, count: 2));
|
| - c.add(42);
|
| - c.stream.listen(expectAsync1((x) { expect(x, equals(42)); }));
|
| - c.add(42);
|
| - c.close();
|
| + StreamProtocolTest test = new StreamProtocolTest.broadcast();
|
| + test..expectListen()
|
| + ..expectData(42, () {
|
| + test.listen();
|
| + test.add(37);
|
| + test.close();
|
| + })
|
| + // Order is not guaranteed between subscriptions if not sync.
|
| + ..expectData(37)
|
| + ..expectData(37)
|
| + ..expectDone()
|
| + ..expectDone()
|
| + ..expectCancel(test.terminate);
|
| + test.listen();
|
| + test.add(42);
|
| });
|
|
|
| test("broadcast-controller-listen-twice-non-overlap", () {
|
| - StreamController<int> c = new StreamController.broadcast(
|
| - onListen: expectAsync0(() {}, count: 2),
|
| - onCancel: expectAsync0(() {}, count: 2)
|
| - );
|
| - var sub = c.stream.listen(expectAsync1((x) { expect(x, equals(42)); }));
|
| - c.add(42);
|
| - sub.cancel();
|
| - c.stream.listen(expectAsync1((x) { expect(x, equals(42)); }));
|
| - c.add(42);
|
| - c.close();
|
| + StreamProtocolTest test = new StreamProtocolTest.broadcast();
|
| + test
|
| + ..expectListen(() {
|
| + test.add(42);
|
| + })
|
| + ..expectData(42, () {
|
| + test.cancel();
|
| + })
|
| + ..expectCancel(() {
|
| + test.listen();
|
| + })..expectListen(() {
|
| + test.add(37);
|
| + })
|
| + ..expectData(37, () {
|
| + test.close();
|
| + })
|
| + ..expectDone()
|
| + ..expectCancel(test.terminate);
|
| + test.listen();
|
| });
|
|
|
| test("broadcast-controller-individual-pause", () {
|
| - StreamController<int> c = new StreamController.broadcast(
|
| - onListen: expectAsync0(() {}),
|
| - onCancel: expectAsync0(() {})
|
| - );
|
| - var sub1 = c.stream.listen(expectAsync1((x) { expect(x, equals(42)); }));
|
| - var sub2 = c.stream.listen(expectAsync1((x) { expect(x, equals(42)); },
|
| - count: 3));
|
| - c.add(42);
|
| - sub1.pause();
|
| - c.add(42);
|
| - sub1.cancel();
|
| - var sub3 = c.stream.listen(expectAsync1((x) { expect(x, equals(42)); }));
|
| - c.add(42);
|
| - c.close();
|
| + StreamProtocolTest test = new StreamProtocolTest.broadcast();
|
| + test.trace = true;
|
| + var sub1;
|
| + test..expectListen()
|
| + ..expectData(42)
|
| + ..expectData(42, () { sub1.pause(); })
|
| + ..expectData(43, () {
|
| + sub1.cancel();
|
| + test.listen();
|
| + test.add(44);
|
| + test.expectData(44);
|
| + test.expectData(44, test.terminate);
|
| + });
|
| + sub1 = test.listen();
|
| + test.listen();
|
| + test.add(42);
|
| + test.add(43);
|
| });
|
|
|
| test("broadcast-controller-add-in-callback", () {
|
| - StreamController<int> c;
|
| - c = new StreamController(
|
| - onListen: expectAsync0(() {}),
|
| - onCancel: expectAsync0(() {
|
| - c.add(42);
|
| - })
|
| - );
|
| - var sub;
|
| - sub = c.stream.asBroadcastStream().listen(expectAsync1((v) {
|
| - Expect.equals(37, v);
|
| - c.add(21);
|
| + StreamProtocolTest test = new StreamProtocolTest.broadcast();
|
| + test.expectListen();
|
| + var sub = test.listen();
|
| + test.add(42);
|
| + sub.expectData(42, () {
|
| + test.add(87);
|
| sub.cancel();
|
| - }));
|
| - c.add(37); // Triggers listener, which adds 21 and removes itself.
|
| - // Removing listener triggers onCancel which adds another 42.
|
| - // Both 21 and 42 are lost because there are no listeners.
|
| + });
|
| + test.expectCancel(() {
|
| + test.add(37);
|
| + test.terminate();
|
| + });
|
| });
|
| }
|
|
|
|
|