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

Side by Side Diff: tests/lib/async/stream_subscription_cancel_test.dart

Issue 18915008: Let StreamSubscription.cancel return a Future. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Mark failing tests. Created 7 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tests/lib/async/stream_state_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 });
80
81 test('subscription.cancel before error (cancelOnError)', () {
82 var doneCompleter = new Completer();
83 StreamController controller = new StreamController(
84 onCancel: () {
85 doneCompleter.complete(true);
86 });
87
88 controller.addError("error");
89
90 void onError(e) {
91 fail("onError is unexpected");
92 }
93 controller.stream
94 .listen(null, onError: onError, cancelOnError: true)
95 .cancel();
96 expect(doneCompleter.future, completion(equals(true)));
97 });
98
99 test('subscription.cancel on error (cancelOnError)', () {
100 bool called = false;
101 StreamController controller = new StreamController(
102 onCancel: () {
103 expect(called, isFalse);
104 called = true;
105 });
106
107 controller.addError("error");
108
109 var doneCompleter = new Completer();
110 var sub;
111 void onError(e) {
112 expect(called, equals(true));
113 sub.cancel();
114 doneCompleter.complete(true);
115 }
116 sub = controller.stream
117 .listen(null, onError: onError, cancelOnError: true);
118 expect(doneCompleter.future, completion(equals(true)));
119 });
120
121 test('subscription.cancel before done', () {
122 var doneCompleter = new Completer();
123 StreamController controller = new StreamController(
124 onCancel: () {
125 doneCompleter.complete(true);
126 });
127
128 controller.close();
129
130 void onDone() {
131 fail("onDone is unexpected");
132 }
133 controller.stream
134 .listen(null, onDone: onDone)
135 .cancel();
136 expect(doneCompleter.future, completion(equals(true)));
137 });
138 }
OLDNEW
« no previous file with comments | « tests/lib/async/stream_state_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698