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

Unified Diff: tests/lib/async/stream_controller_test.dart

Issue 2223133002: Revert "Return futures on Stream.cancel when possible." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/async/stream_transformers.dart ('k') | tests/lib/async/stream_periodic_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/lib/async/stream_controller_test.dart
diff --git a/tests/lib/async/stream_controller_test.dart b/tests/lib/async/stream_controller_test.dart
index 5b019320843378c7cb6cc2ba66f7d3a595bf4847..afc7bb53cd909c379478df5e835a8ee3bd7f5c31 100644
--- a/tests/lib/async/stream_controller_test.dart
+++ b/tests/lib/async/stream_controller_test.dart
@@ -16,274 +16,237 @@ fail(e) { Expect.fail("Unexepected error: $e"); }
void testMultiController() {
// Test normal flow.
- {
- var c = new StreamController(sync: true);
- Events expectedEvents = new Events()
- ..add(42)
- ..add("dibs")
- ..error("error!")
- ..error("error too!")
- ..close();
- CaptureEvents actualEvents =
- new Events.capture(c.stream.asBroadcastStream());
- expectedEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ var c = new StreamController(sync: true);
+ Events expectedEvents = new Events()
+ ..add(42)
+ ..add("dibs")
+ ..error("error!")
+ ..error("error too!")
+ ..close();
+ CaptureEvents actualEvents = new Events.capture(c.stream.asBroadcastStream());
+ expectedEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test automatic unsubscription on error.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add(42)..error("error");
- var actualEvents = new Events.capture(c.stream.asBroadcastStream(),
- cancelOnError: true);
- Events sentEvents =
- new Events()..add(42)..error("error")..add("Are you there?");
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add(42)..error("error");
+ actualEvents = new Events.capture(c.stream.asBroadcastStream(),
+ cancelOnError: true);
+ Events sentEvents =
+ new Events()..add(42)..error("error")..add("Are you there?");
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test manual unsubscription.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add(42)..error("error")..add(37);
- var actualEvents = new Events.capture(c.stream.asBroadcastStream(),
- cancelOnError: false);
- expectedEvents.replay(c);
- actualEvents.subscription.cancel();
- c.add("Are you there"); // Not sent to actualEvents.
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add(42)..error("error")..add(37);
+ actualEvents = new Events.capture(c.stream.asBroadcastStream(),
+ cancelOnError: false);
+ expectedEvents.replay(c);
+ actualEvents.subscription.cancel();
+ c.add("Are you there"); // Not sent to actualEvents.
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test filter.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()
- ..add("a string")..add("another string")..close();
- var sentEvents = new Events()
- ..add("a string")..add(42)..add("another string")..close();
- var actualEvents = new Events.capture(c.stream
- .asBroadcastStream()
- .where((v) => v is String));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()
+ ..add("a string")..add("another string")..close();
+ sentEvents = new Events()
+ ..add("a string")..add(42)..add("another string")..close();
+ actualEvents = new Events.capture(c.stream
+ .asBroadcastStream()
+ .where((v) => v is String));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test map.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add("abab")..error("error")..close();
- var sentEvents = new Events()..add("ab")..error("error")..close();
- var actualEvents = new Events.capture(c.stream
- .asBroadcastStream()
- .map((v) => "$v$v"));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add("abab")..error("error")..close();
+ sentEvents = new Events()..add("ab")..error("error")..close();
+ actualEvents = new Events.capture(c.stream
+ .asBroadcastStream()
+ .map((v) => "$v$v"));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test handleError.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add("ab")..error("[foo]");
- var sentEvents = new Events()..add("ab")..error("foo")..add("ab")..close();
- var actualEvents = new Events.capture(c.stream
- .asBroadcastStream()
- .handleError((error) {
- if (error is String) {
- // TODO(floitsch): this test originally changed the stacktrace.
- throw "[${error}]";
- }
- }), cancelOnError: true);
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add("ab")..error("[foo]");
+ sentEvents = new Events()..add("ab")..error("foo")..add("ab")..close();
+ actualEvents = new Events.capture(c.stream
+ .asBroadcastStream()
+ .handleError((error) {
+ if (error is String) {
+ // TODO(floitsch): this test originally changed the stacktrace.
+ throw "[${error}]";
+ }
+ }), cancelOnError: true);
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// reduce is tested asynchronously and therefore not in this file.
// Test expand
- {
- var c = new StreamController(sync: true);
- var sentEvents = new Events()..add(3)..add(2)..add(4)..close();
- var expectedEvents = new Events()..add(1)..add(2)..add(3)
- ..add(1)..add(2)
- ..add(1)..add(2)..add(3)..add(4)
- ..close();
- var actualEvents =
- new Events.capture(c.stream.asBroadcastStream().expand((v) {
- var l = [];
- for (int i = 0; i < v; i++) l.add(i + 1);
- return l;
- }));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ sentEvents = new Events()..add(3)..add(2)..add(4)..close();
+ expectedEvents = new Events()..add(1)..add(2)..add(3)
+ ..add(1)..add(2)
+ ..add(1)..add(2)..add(3)..add(4)
+ ..close();
+ actualEvents = new Events.capture(c.stream.asBroadcastStream().expand((v) {
+ var l = [];
+ for (int i = 0; i < v; i++) l.add(i + 1);
+ return l;
+ }));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test transform.
- {
- var c = new StreamController(sync: true);
- var sentEvents = new Events()..add("a")..error(42)..add("b")..close();
- var expectedEvents =
- new Events()..error("a")..add(42)..error("b")..add("foo")..close();
- var actualEvents =
- new Events.capture(c.stream.asBroadcastStream().transform(
- new StreamTransformer.fromHandlers(
- handleData: (v, s) { s.addError(v); },
- handleError: (e, st, s) { s.add(e); },
- handleDone: (s) {
- s.add("foo");
- s.close();
- })));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ sentEvents = new Events()..add("a")..error(42)..add("b")..close();
+ expectedEvents =
+ new Events()..error("a")..add(42)..error("b")..add("foo")..close();
+ actualEvents = new Events.capture(c.stream.asBroadcastStream().transform(
+ new StreamTransformer.fromHandlers(
+ handleData: (v, s) { s.addError(v); },
+ handleError: (e, st, s) { s.add(e); },
+ handleDone: (s) {
+ s.add("foo");
+ s.close();
+ })));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test multiple filters.
- {
- var c = new StreamController(sync: true);
- var sentEvents = new Events()..add(42)
- ..add("snugglefluffy")
- ..add(7)
- ..add("42")
- ..error("not FormatException") // Unsubscribes.
- ..close();
- var expectedEvents = new Events()..add(42)..error("not FormatException");
- var actualEvents = new Events.capture(
- c.stream.asBroadcastStream().where((v) => v is String)
- .map((v) => int.parse(v))
- .handleError((error) {
- if (error is! FormatException) throw error;
- })
- .where((v) => v > 10),
- cancelOnError: true);
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ sentEvents = new Events()..add(42)
+ ..add("snugglefluffy")
+ ..add(7)
+ ..add("42")
+ ..error("not FormatException") // Unsubscribes.
+ ..close();
+ expectedEvents = new Events()..add(42)..error("not FormatException");
+ actualEvents = new Events.capture(
+ c.stream.asBroadcastStream().where((v) => v is String)
+ .map((v) => int.parse(v))
+ .handleError((error) {
+ if (error is! FormatException) throw error;
+ })
+ .where((v) => v > 10),
+ cancelOnError: true);
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test subscription changes while firing.
- {
- var c = new StreamController(sync: true);
- var sink = c.sink;
- var stream = c.stream.asBroadcastStream();
- var counter = 0;
- var subscription = stream.listen(null);
- subscription.onData((data) {
- counter += data;
- subscription.cancel();
- stream.listen((data) {
- counter += 10 * data;
- });
- var subscription2 = stream.listen(null);
- subscription2.onData((data) {
- counter += 100 * data;
- if (data == 4) subscription2.cancel();
- });
+ c = new StreamController(sync: true);
+ var sink = c.sink;
+ var stream = c.stream.asBroadcastStream();
+ var counter = 0;
+ var subscription = stream.listen(null);
+ subscription.onData((data) {
+ counter += data;
+ subscription.cancel();
+ stream.listen((data) {
+ counter += 10 * data;
});
- sink.add(1); // seen by stream 1
- sink.add(2); // seen by stream 10 and 100
- sink.add(3); // -"-
- sink.add(4); // -"-
- sink.add(5); // seen by stream 10
- Expect.equals(1 + 20 + 200 + 30 + 300 + 40 + 400 + 50, counter);
- }
+ var subscription2 = stream.listen(null);
+ subscription2.onData((data) {
+ counter += 100 * data;
+ if (data == 4) subscription2.cancel();
+ });
+ });
+ sink.add(1); // seen by stream 1
+ sink.add(2); // seen by stream 10 and 100
+ sink.add(3); // -"-
+ sink.add(4); // -"-
+ sink.add(5); // seen by stream 10
+ Expect.equals(1 + 20 + 200 + 30 + 300 + 40 + 400 + 50, counter);
}
testSingleController() {
// Test normal flow.
- {
- var c = new StreamController(sync: true);
- Events expectedEvents = new Events()
- ..add(42)
- ..add("dibs")
- ..error("error!")
- ..error("error too!")
- ..close();
- CaptureEvents actualEvents = new Events.capture(c.stream);
- expectedEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ var c = new StreamController(sync: true);
+ Events expectedEvents = new Events()
+ ..add(42)
+ ..add("dibs")
+ ..error("error!")
+ ..error("error too!")
+ ..close();
+ CaptureEvents actualEvents = new Events.capture(c.stream);
+ expectedEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test automatic unsubscription on error.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add(42)..error("error");
- var actualEvents = new Events.capture(c.stream, cancelOnError: true);
- Events sentEvents =
- new Events()..add(42)..error("error")..add("Are you there?");
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add(42)..error("error");
+ actualEvents = new Events.capture(c.stream, cancelOnError: true);
+ Events sentEvents =
+ new Events()..add(42)..error("error")..add("Are you there?");
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test manual unsubscription.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add(42)..error("error")..add(37);
- var actualEvents = new Events.capture(c.stream, cancelOnError: false);
- expectedEvents.replay(c);
- actualEvents.subscription.cancel();
- c.add("Are you there"); // Not sent to actualEvents.
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add(42)..error("error")..add(37);
+ actualEvents = new Events.capture(c.stream, cancelOnError: false);
+ expectedEvents.replay(c);
+ actualEvents.subscription.cancel();
+ c.add("Are you there"); // Not sent to actualEvents.
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test filter.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()
- ..add("a string")..add("another string")..close();
- var sentEvents = new Events()
- ..add("a string")..add(42)..add("another string")..close();
- var actualEvents = new Events.capture(c.stream.where((v) => v is String));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()
+ ..add("a string")..add("another string")..close();
+ sentEvents = new Events()
+ ..add("a string")..add(42)..add("another string")..close();
+ actualEvents = new Events.capture(c.stream.where((v) => v is String));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test map.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add("abab")..error("error")..close();
- var sentEvents = new Events()..add("ab")..error("error")..close();
- var actualEvents = new Events.capture(c.stream.map((v) => "$v$v"));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add("abab")..error("error")..close();
+ sentEvents = new Events()..add("ab")..error("error")..close();
+ actualEvents = new Events.capture(c.stream.map((v) => "$v$v"));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test handleError.
- {
- var c = new StreamController(sync: true);
- var expectedEvents = new Events()..add("ab")..error("[foo]");
- var sentEvents = new Events()..add("ab")..error("foo")..add("ab")..close();
- var actualEvents = new Events.capture(c.stream.handleError((error) {
- if (error is String) {
- // TODO(floitsch): this error originally changed the stack trace.
- throw "[${error}]";
- }
- }), cancelOnError: true);
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ expectedEvents = new Events()..add("ab")..error("[foo]");
+ sentEvents = new Events()..add("ab")..error("foo")..add("ab")..close();
+ actualEvents = new Events.capture(c.stream.handleError((error) {
+ if (error is String) {
+ // TODO(floitsch): this error originally changed the stack trace.
+ throw "[${error}]";
+ }
+ }), cancelOnError: true);
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// reduce is tested asynchronously and therefore not in this file.
// Test expand
- {
- var c = new StreamController(sync: true);
- var sentEvents = new Events()..add(3)..add(2)..add(4)..close();
- var expectedEvents = new Events()..add(1)..add(2)..add(3)
- ..add(1)..add(2)
- ..add(1)..add(2)..add(3)..add(4)
- ..close();
- var actualEvents = new Events.capture(c.stream.expand((v) {
- var l = [];
- for (int i = 0; i < v; i++) l.add(i + 1);
- return l;
- }));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ sentEvents = new Events()..add(3)..add(2)..add(4)..close();
+ expectedEvents = new Events()..add(1)..add(2)..add(3)
+ ..add(1)..add(2)
+ ..add(1)..add(2)..add(3)..add(4)
+ ..close();
+ actualEvents = new Events.capture(c.stream.expand((v) {
+ var l = [];
+ for (int i = 0; i < v; i++) l.add(i + 1);
+ return l;
+ }));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// test contains.
{
- var c = new StreamController(sync: true);
+ c = new StreamController(sync: true);
// Error after match is not important.
- var sentEvents = new Events()..add("a")..add("x")..error("FAIL")..close();
+ sentEvents = new Events()..add("a")..add("x")..error("FAIL")..close();
Future<bool> contains = c.stream.contains("x");
contains.then((var c) {
Expect.isTrue(c);
@@ -292,9 +255,9 @@ testSingleController() {
}
{
- var c = new StreamController(sync: true);
+ c = new StreamController(sync: true);
// Not matching is ok.
- var sentEvents = new Events()..add("a")..add("x")..add("b")..close();
+ sentEvents = new Events()..add("a")..add("x")..add("b")..close();
Future<bool> contains = c.stream.contains("y");
contains.then((var c) {
Expect.isFalse(c);
@@ -303,9 +266,9 @@ testSingleController() {
}
{
- var c = new StreamController(sync: true);
+ c = new StreamController(sync: true);
// Error before match makes future err.
- var sentEvents = new Events()..add("a")..error("FAIL")..add("b")..close();
+ sentEvents = new Events()..add("a")..error("FAIL")..add("b")..close();
Future<bool> contains = c.stream.contains("b");
contains.then((var c) {
Expect.fail("no value expected");
@@ -316,57 +279,51 @@ testSingleController() {
}
// Test transform.
- {
- var c = new StreamController(sync: true);
- var sentEvents = new Events()..add("a")..error(42)..add("b")..close();
- var expectedEvents =
- new Events()..error("a")..add(42)..error("b")..add("foo")..close();
- var actualEvents = new Events.capture(c.stream.transform(
- new StreamTransformer.fromHandlers(
- handleData: (v, s) { s.addError(v); },
- handleError: (e, st, s) { s.add(e); },
- handleDone: (s) {
- s.add("foo");
- s.close();
- })));
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ sentEvents = new Events()..add("a")..error(42)..add("b")..close();
+ expectedEvents =
+ new Events()..error("a")..add(42)..error("b")..add("foo")..close();
+ actualEvents = new Events.capture(c.stream.transform(
+ new StreamTransformer.fromHandlers(
+ handleData: (v, s) { s.addError(v); },
+ handleError: (e, st, s) { s.add(e); },
+ handleDone: (s) {
+ s.add("foo");
+ s.close();
+ })));
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test multiple filters.
- {
- var c = new StreamController(sync: true);
- var sentEvents = new Events()..add(42)
- ..add("snugglefluffy")
- ..add(7)
- ..add("42")
- ..error("not FormatException") // Unsubscribes.
- ..close();
- var expectedEvents = new Events()..add(42)..error("not FormatException");
- var actualEvents = new Events.capture(
- c.stream.where((v) => v is String)
- .map((v) => int.parse(v))
- .handleError((error) {
- if (error is! FormatException) throw error;
- })
- .where((v) => v > 10),
- cancelOnError: true);
- sentEvents.replay(c);
- Expect.listEquals(expectedEvents.events, actualEvents.events);
- }
+ c = new StreamController(sync: true);
+ sentEvents = new Events()..add(42)
+ ..add("snugglefluffy")
+ ..add(7)
+ ..add("42")
+ ..error("not FormatException") // Unsubscribes.
+ ..close();
+ expectedEvents = new Events()..add(42)..error("not FormatException");
+ actualEvents = new Events.capture(
+ c.stream.where((v) => v is String)
+ .map((v) => int.parse(v))
+ .handleError((error) {
+ if (error is! FormatException) throw error;
+ })
+ .where((v) => v > 10),
+ cancelOnError: true);
+ sentEvents.replay(c);
+ Expect.listEquals(expectedEvents.events, actualEvents.events);
// Test that only one subscription is allowed.
- {
- var c = new StreamController(sync: true);
- var sink = c.sink;
- var stream = c.stream;
- var counter = 0;
- var subscription = stream.listen((data) { counter += data; });
- Expect.throws(() => stream.listen(null), (e) => e is StateError);
- sink.add(1);
- Expect.equals(1, counter);
- c.close();
- }
+ c = new StreamController(sync: true);
+ var sink = c.sink;
+ var stream = c.stream;
+ var counter = 0;
+ var subscription = stream.listen((data) { counter += data; });
+ Expect.throws(() => stream.listen(null), (e) => e is StateError);
+ sink.add(1);
+ Expect.equals(1, counter);
+ c.close();
}
testExtraMethods() {
« no previous file with comments | « sdk/lib/async/stream_transformers.dart ('k') | tests/lib/async/stream_periodic_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698