Index: packages/async/test/stream_completer_test.dart |
diff --git a/packages/async/test/stream_completer_test.dart b/packages/async/test/stream_completer_test.dart |
index cd3ceb9fa49a78fce51ac6f299db7a31a8c02dd9..2e9ff9be9e909df92dd599387948240ad84da523 100644 |
--- a/packages/async/test/stream_completer_test.dart |
+++ b/packages/async/test/stream_completer_test.dart |
@@ -27,9 +27,9 @@ main() { |
test("cancel before linking a stream doesn't listen on stream", () async { |
var completer = new StreamCompleter(); |
var subscription = completer.stream.listen(null); |
- subscription.pause(); // Should be ignored. |
+ subscription.pause(); // Should be ignored. |
subscription.cancel(); |
- completer.setSourceStream(new UnusableStream()); // Doesn't throw. |
+ completer.setSourceStream(new UnusableStream()); // Doesn't throw. |
}); |
test("listen and pause before linking stream", () async { |
@@ -78,14 +78,13 @@ main() { |
var lastEvent = -1; |
var controller = new StreamController(); |
var subscription; |
- subscription = completer.stream.listen( |
- (value) { |
- expect(value, lessThan(3)); |
- lastEvent = value; |
- if (value == 2) { |
- subscription.cancel(); |
- } |
- }, |
+ subscription = completer.stream.listen((value) { |
+ expect(value, lessThan(3)); |
+ lastEvent = value; |
+ if (value == 2) { |
+ subscription.cancel(); |
+ } |
+ }, |
onError: unreachable("error"), |
onDone: unreachable("done"), |
cancelOnError: true); |
@@ -110,27 +109,23 @@ main() { |
var completer = new StreamCompleter(); |
completer.setEmpty(); |
var done = new Completer(); |
- completer.stream.listen( |
- unreachable("data"), |
- onError: unreachable("error"), |
- onDone: done.complete); |
+ completer.stream.listen(unreachable("data"), |
+ onError: unreachable("error"), onDone: done.complete); |
await done.future; |
}); |
test("complete with setEmpty after listening", () async { |
var completer = new StreamCompleter(); |
var done = new Completer(); |
- completer.stream.listen( |
- unreachable("data"), |
- onError: unreachable("error"), |
- onDone: done.complete); |
+ completer.stream.listen(unreachable("data"), |
+ onError: unreachable("error"), onDone: done.complete); |
completer.setEmpty(); |
await done.future; |
}); |
test("source stream isn't listened to until completer stream is", () async { |
var completer = new StreamCompleter(); |
- var controller; |
+ StreamController controller; |
controller = new StreamController(onListen: () { |
scheduleMicrotask(controller.close); |
}); |
@@ -147,17 +142,13 @@ main() { |
var completer = new StreamCompleter(); |
var lastEvent = -1; |
var controller = new StreamController(); |
- completer.stream.listen( |
- (value) { |
- expect(value, lessThan(3)); |
- lastEvent = value; |
- }, |
- onError: (value) { |
- expect(value, "3"); |
- lastEvent = value; |
- }, |
- onDone: unreachable("done"), |
- cancelOnError: true); |
+ completer.stream.listen((value) { |
+ expect(value, lessThan(3)); |
+ lastEvent = value; |
+ }, onError: (value) { |
+ expect(value, "3"); |
+ lastEvent = value; |
+ }, onDone: unreachable("done"), cancelOnError: true); |
completer.setSourceStream(controller.stream); |
expect(controller.hasListener, isTrue); |
@@ -188,17 +179,13 @@ main() { |
controller.add(1); |
expect(controller.hasListener, isFalse); |
- completer.stream.listen( |
- (value) { |
- expect(value, lessThan(3)); |
- lastEvent = value; |
- }, |
- onError: (value) { |
- expect(value, "3"); |
- lastEvent = value; |
- }, |
- onDone: unreachable("done"), |
- cancelOnError: true); |
+ completer.stream.listen((value) { |
+ expect(value, lessThan(3)); |
+ lastEvent = value; |
+ }, onError: (value) { |
+ expect(value, "3"); |
+ lastEvent = value; |
+ }, onDone: unreachable("done"), cancelOnError: true); |
expect(controller.hasListener, isTrue); |
@@ -281,7 +268,7 @@ main() { |
var completer = new StreamCompleter(); |
var controller = new StreamController(); |
var subscription = completer.stream.listen(null); |
- var lastEvent = 0; |
+ Object lastEvent = 0; |
subscription.onData((value) => lastEvent = value); |
subscription.onError((value) => lastEvent = "$value"); |
subscription.onDone(() => lastEvent = -1); |
@@ -324,8 +311,8 @@ main() { |
test("asFuture with error accross setting stream", () async { |
var completer = new StreamCompleter(); |
var controller = new StreamController(); |
- var subscription = completer.stream.listen(unreachable("data"), |
- cancelOnError: false); |
+ var subscription = |
+ completer.stream.listen(unreachable("data"), cancelOnError: false); |
var done = subscription.asFuture(); |
expect(controller.hasListener, isFalse); |
completer.setSourceStream(controller.stream); |
@@ -337,6 +324,30 @@ main() { |
}); |
expect(controller.hasListener, isFalse); |
}); |
+ |
+ group("setError()", () { |
+ test("produces a stream that emits a single error", () { |
+ var completer = new StreamCompleter(); |
+ completer.stream.listen(unreachable("data"), |
+ onError: expectAsync2((error, stackTrace) { |
+ expect(error, equals("oh no")); |
+ }), onDone: expectAsync0(() {})); |
+ |
+ completer.setError("oh no"); |
+ }); |
+ |
+ test("produces a stream that emits a single error on a later listen", |
+ () async { |
+ var completer = new StreamCompleter(); |
+ completer.setError("oh no"); |
+ await flushMicrotasks(); |
+ |
+ completer.stream.listen(unreachable("data"), |
+ onError: expectAsync2((error, stackTrace) { |
+ expect(error, equals("oh no")); |
+ }), onDone: expectAsync0(() {})); |
+ }); |
+ }); |
} |
Stream<int> createStream() async* { |