OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import "dart:async"; | 5 import "dart:async"; |
6 | 6 |
7 import "package:async/async.dart" show StreamCompleter; | 7 import "package:async/async.dart" show StreamCompleter; |
8 import "package:test/test.dart"; | 8 import "package:test/test.dart"; |
9 | 9 |
10 import "utils.dart"; | 10 import "utils.dart"; |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 expect(controller.hasListener, isFalse); | 330 expect(controller.hasListener, isFalse); |
331 completer.setSourceStream(controller.stream); | 331 completer.setSourceStream(controller.stream); |
332 await flushMicrotasks(); | 332 await flushMicrotasks(); |
333 expect(controller.hasListener, isTrue); | 333 expect(controller.hasListener, isTrue); |
334 controller.addError(42); | 334 controller.addError(42); |
335 await done.then(unreachable("data"), onError: (error) { | 335 await done.then(unreachable("data"), onError: (error) { |
336 expect(error, 42); | 336 expect(error, 42); |
337 }); | 337 }); |
338 expect(controller.hasListener, isFalse); | 338 expect(controller.hasListener, isFalse); |
339 }); | 339 }); |
| 340 |
| 341 group("setError()", () { |
| 342 test("produces a stream that emits a single error", () { |
| 343 var completer = new StreamCompleter(); |
| 344 completer.stream.listen( |
| 345 unreachable("data"), |
| 346 onError: expectAsync((error, stackTrace) { |
| 347 expect(error, equals("oh no")); |
| 348 }), |
| 349 onDone: expectAsync(() {})); |
| 350 |
| 351 completer.setError("oh no"); |
| 352 }); |
| 353 |
| 354 test("produces a stream that emits a single error on a later listen", |
| 355 () async { |
| 356 var completer = new StreamCompleter(); |
| 357 completer.setError("oh no"); |
| 358 await flushMicrotasks(); |
| 359 |
| 360 completer.stream.listen( |
| 361 unreachable("data"), |
| 362 onError: expectAsync((error, stackTrace) { |
| 363 expect(error, equals("oh no")); |
| 364 }), |
| 365 onDone: expectAsync(() {})); |
| 366 }); |
| 367 }); |
340 } | 368 } |
341 | 369 |
342 Stream<int> createStream() async* { | 370 Stream<int> createStream() async* { |
343 yield 1; | 371 yield 1; |
344 await flushMicrotasks(); | 372 await flushMicrotasks(); |
345 yield 2; | 373 yield 2; |
346 await flushMicrotasks(); | 374 await flushMicrotasks(); |
347 yield 3; | 375 yield 3; |
348 await flushMicrotasks(); | 376 await flushMicrotasks(); |
349 yield 4; | 377 yield 4; |
350 } | 378 } |
OLD | NEW |