Index: tests/lib/async/stream_state_test.dart |
diff --git a/tests/lib/async/stream_state_test.dart b/tests/lib/async/stream_state_test.dart |
index 08cb7a164a460bbac2fb73402538325fb57b232e..d6d873f028a513a22b9f7d7bb496d80e4540092b 100644 |
--- a/tests/lib/async/stream_state_test.dart |
+++ b/tests/lib/async/stream_state_test.dart |
@@ -20,10 +20,10 @@ mainTest(bool broadcast) { |
var p = broadcast ? "BC" : "SC"; |
test("$p-sub-data-done", () { |
var t = new StreamProtocolTest(broadcast); |
- t..expectSubscription() |
+ t..expectSubscription(true, false) |
..expectData(42) |
..expectDone() |
- ..expectCancel(); |
+ ..expectSubscription(false, false); |
t..subscribe()..add(42)..close(); |
}); |
@@ -32,33 +32,33 @@ mainTest(bool broadcast) { |
if (broadcast) { |
t..expectDone(); |
} else { |
- t..expectSubscription() |
+ t..expectSubscription(true, false) |
..expectData(42) |
..expectDone() |
- ..expectCancel(); |
+ ..expectSubscription(false, false); |
} |
t..add(42)..close()..subscribe(); |
}); |
test("$p-sub-data/pause+resume-done", () { |
var t = new StreamProtocolTest(broadcast); |
- t..expectSubscription() |
+ t..expectSubscription(true, false) |
..expectData(42, () { |
t.pause(); |
t.resume(); |
t.close(); |
}) |
..expectDone() |
- ..expectCancel(); |
+ ..expectSubscription(false, false); |
t..subscribe()..add(42); |
}); |
test("$p-sub-data-unsubonerror", () { |
var t = new StreamProtocolTest(broadcast); |
- t..expectSubscription() |
+ t..expectSubscription(true, false) |
..expectData(42) |
..expectError("bad") |
- ..expectCancel(); |
+ ..expectSubscription(false, !broadcast); |
t..subscribe(cancelOnError: true) |
..add(42) |
..error("bad") |
@@ -68,12 +68,12 @@ mainTest(bool broadcast) { |
test("$p-sub-data-no-unsubonerror", () { |
var t = new StreamProtocolTest(broadcast); |
- t..expectSubscription() |
+ t..expectSubscription(true, false) |
..expectData(42) |
..expectError("bad") |
..expectData(43) |
..expectDone() |
- ..expectCancel(); |
+ ..expectSubscription(false, false); |
t..subscribe(cancelOnError: false) |
..add(42) |
..error("bad") |
@@ -83,15 +83,62 @@ mainTest(bool broadcast) { |
test("$p-pause-resume-during-event", () { |
var t = new StreamProtocolTest(broadcast); |
- t..expectSubscription() |
+ t..expectSubscription(true, false) |
..expectData(42, () { |
t.pause(); |
t.resume(); |
}) |
..expectDone() |
- ..expectCancel(); |
+ ..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. |
+ }); |
} |