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; |