OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
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. | |
4 | |
5 import 'package:async_helper/async_helper.dart'; | |
6 import "package:expect/expect.dart"; | |
7 import 'dart:async'; | |
8 import 'catch_errors.dart'; | |
9 | |
10 main() { | |
11 asyncStart(); | |
12 | |
13 var events = []; | |
14 bool onDoneWasCalled = false; | |
15 var controller = new StreamController(); | |
16 // Test that streams that are never closed keep the `catchError` alive. | |
17 catchErrors(() { | |
18 catchErrors(() { | |
19 controller.stream.map((x) { | |
20 throw x; | |
21 }).listen((x) { | |
22 // Should not happen. | |
23 events.add("bad: $x"); | |
24 }); | |
25 }).listen((x) { | |
26 events.add("caught: $x"); | |
27 }, onDone: () { | |
28 events.add("done"); | |
29 }); | |
30 }).listen((x) { | |
31 events.add("outer: $x"); | |
32 }, onDone: () { | |
33 onDoneWasCalled = true; | |
34 }); | |
35 | |
36 [1, 2, 3, 4].forEach(controller.add); | |
37 | |
38 new Timer(const Duration(milliseconds: 20), () { | |
39 Expect.isFalse(onDoneWasCalled); | |
40 Expect.listEquals([ | |
41 "caught: 1", | |
42 "caught: 2", | |
43 "caught: 3", | |
44 "caught: 4", | |
45 ], events); | |
46 asyncEnd(); | |
47 }); | |
48 } | |
OLD | NEW |