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

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: Remove dir stuff. 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
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 });
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 }
OLDNEW
« tests/lib/async/stream_state_test.dart ('K') | « 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