| Index: tests/lib/async/stream_state_helper.dart
|
| diff --git a/tests/lib/async/stream_state_test.dart b/tests/lib/async/stream_state_helper.dart
|
| similarity index 59%
|
| copy from tests/lib/async/stream_state_test.dart
|
| copy to tests/lib/async/stream_state_helper.dart
|
| index d71a45dca7e298576cc46eaca5682364b2657407..86d71a1cdb2adde31c515f8b93fbef20958ba9c0 100644
|
| --- a/tests/lib/async/stream_state_test.dart
|
| +++ b/tests/lib/async/stream_state_helper.dart
|
| @@ -2,228 +2,11 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| -// Test the event/callback protocol of the stream implementations.
|
| +library stream_state_helper;
|
|
|
| import "../../../pkg/unittest/lib/unittest.dart";
|
| -import "dart:collection";
|
| import "dart:async";
|
| -
|
| -const ms5 = const Duration(milliseconds: 5);
|
| -
|
| -main() {
|
| - mainTest(false);
|
| - mainTest(true);
|
| -}
|
| -
|
| -mainTest(bool broadcast) {
|
| - var p = broadcast ? "BC" : "SC";
|
| - test("$p-sub-data-done", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42)
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()..add(42)..close();
|
| - });
|
| -
|
| - test("$p-data-done-sub", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - if (broadcast) {
|
| - t..expectDone();
|
| - } else {
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42)
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - }
|
| - t..add(42)..close()..subscribe();
|
| - });
|
| -
|
| - test("$p-sub-data/pause-done", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.pause(new Future.delayed(ms5, () => null));
|
| - })
|
| - ..expectPause(true)
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - // We are calling "close" while the controller is actually paused,
|
| - // and it will stay paused until the pending events are sent.
|
| - t..subscribe()..add(42)..close();
|
| - });
|
| -
|
| - test("$p-sub-data/pause-resume/done", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.pause(new Future.delayed(ms5, () => null));
|
| - })
|
| - ..expectPause(true)
|
| - ..expectPause(false, () { t.close(); })
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()..add(42);
|
| - });
|
| -
|
| - test("$p-sub-data/pause/resume/pause/resume-done", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.pause();
|
| - })
|
| - ..expectPause(true, () { t.resume(); })
|
| - ..expectPause(false, () { t.pause(); })
|
| - ..expectPause(true, () { t.resume(); })
|
| - ..expectPause(false, () { t.close(); })
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()..add(42);
|
| - });
|
| -
|
| - test("$p-sub-data/pause+resume-done", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.pause();
|
| - t.resume();
|
| - t.close();
|
| - })
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()..add(42);
|
| - });
|
| -
|
| - test("$p-sub-data/data+pause-data-resume-done", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.add(43);
|
| - t.pause(new Future.delayed(ms5, () => null));
|
| - // Should now be paused until the future finishes.
|
| - // After that, the controller stays paused until the pending queue
|
| - // is empty.
|
| - })
|
| - ..expectPause(true)
|
| - ..expectData(43)
|
| - ..expectPause(false, () { t.close(); })
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()..add(42);
|
| - });
|
| -
|
| - test("$p-sub-data-unsubonerror", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42)
|
| - ..expectError("bad")
|
| - ..expectSubscription(false, !broadcast);
|
| - t..subscribe(unsubscribeOnError: true)
|
| - ..add(42)
|
| - ..error("bad")
|
| - ..add(43)
|
| - ..close();
|
| - });
|
| -
|
| - test("$p-sub-data-no-unsubonerror", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42)
|
| - ..expectError("bad")
|
| - ..expectData(43)
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe(unsubscribeOnError: false)
|
| - ..add(42)
|
| - ..error("bad")
|
| - ..add(43)
|
| - ..close();
|
| - });
|
| -
|
| - test("$p-pause-during-callback", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.pause();
|
| - })
|
| - ..expectPause(true, () {
|
| - t.resume();
|
| - })
|
| - ..expectPause(false, () {
|
| - t.pause();
|
| - t.resume();
|
| - t.close();
|
| - })
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()
|
| - ..add(42);
|
| - });
|
| -
|
| - test("$p-pause-resume-during-event", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.pause();
|
| - t.resume();
|
| - })
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()
|
| - ..add(42)
|
| - ..close();
|
| - });
|
| -
|
| - test("$p-cancel-sub-during-event", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.cancel();
|
| - t.subscribe();
|
| - })
|
| - ..expectData(43)
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()
|
| - ..add(42)
|
| - ..add(43)
|
| - ..close();
|
| - });
|
| -
|
| - test("$p-cancel-sub-during-callback", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectData(42, () {
|
| - t.pause();
|
| - })
|
| - ..expectPause(true, () {
|
| - t.cancel(); // Cancels pause
|
| - t.subscribe();
|
| - })
|
| - ..expectPause(false)
|
| - ..expectData(43)
|
| - ..expectDone()
|
| - ..expectSubscription(false, false);
|
| - t..subscribe()
|
| - ..add(42)
|
| - ..add(43)
|
| - ..close();
|
| - });
|
| -
|
| - test("$p-sub-after-done-is-done", () {
|
| - var t = new StreamProtocolTest(broadcast);
|
| - t..expectSubscription(true, false)
|
| - ..expectDone()
|
| - ..expectSubscription(false, false)
|
| - ..expectDone();
|
| - t..subscribe()
|
| - ..close()
|
| - ..subscribe(); // Subscribe after done does not cause callbacks at all.
|
| - });
|
| -}
|
| -
|
| -// --------------------------------------------------------------------
|
| -// Utility classes.
|
| +import "dart:collection";
|
|
|
| class StreamProtocolTest {
|
| StreamController _controller;
|
|
|