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 // Test the StreamSubscription.cancel return Future. | |
6 library stream_subscription_cancel; | |
7 | |
8 import 'dart:async'; | |
9 import 'package:unittest/unittest.dart'; | |
10 | |
11 void main() { | |
12 test('subscription.cancel', () { | |
13 var completer = new Completer(); | |
14 StreamController controller = new StreamController( | |
15 onCancel: () => completer.future); | |
16 | |
17 bool done = false; | |
18 expect(controller.stream.listen(null).cancel().then((_) => done), | |
19 completion(equals(true))); | |
20 | |
21 new Timer(const Duration(milliseconds: 10), () { | |
22 done = true; | |
23 completer.complete(); | |
24 }); | |
25 }); | |
26 | |
27 test('subscription.cancel after close', () { | |
28 var completer = new Completer(); | |
29 StreamController controller = new StreamController( | |
30 onCancel: completer.complete); | |
31 | |
32 controller.close(); | |
33 | |
34 var sub; | |
35 void onDone() { | |
36 expect(sub.cancel(), isNull); | |
37 } | |
38 | |
39 sub = controller.stream.listen(null, onDone: onDone); | |
40 expect(completer.future, completes); | |
41 }); | |
42 | |
43 test('subscription.cancel after error', () { | |
44 var completer = new Completer(); | |
45 StreamController controller = new StreamController( | |
46 onCancel: () => completer.future); | |
47 | |
48 controller.addError("error"); | |
49 | |
50 bool done = false; | |
51 | |
52 var subscription; | |
53 var doneCompleter = new Completer(); | |
54 void onError(e) { | |
55 subscription.cancel().then((_) => doneCompleter.complete(done)); | |
56 done = true; | |
57 completer.complete(); | |
58 } | |
59 subscription = controller.stream.listen(null, onError: onError); | |
60 expect(doneCompleter.future, completion(equals(true))); | |
61 }); | |
62 | |
63 test('subscription.cancel after error (cancelOnError)', () { | |
64 bool called = false; | |
65 StreamController controller = new StreamController( | |
66 onCancel: () { | |
67 called = true; | |
68 }); | |
69 | |
70 controller.addError("error"); | |
71 | |
72 var doneCompleter = new Completer(); | |
73 void onError(e) { | |
74 expect(called, equals(true)); | |
75 doneCompleter.complete(true); | |
76 } | |
77 controller.stream.listen(null, onError: onError, cancelOnError: true); | |
78 expect(doneCompleter.future, completion(equals(true))); | |
79 }); | |
floitsch
2013/10/12 18:53:57
Add test that a cancel after a cancelOnError will
Anders Johnsen
2013/10/16 11:52:21
Done.
| |
80 } | |
OLD | NEW |