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

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

Issue 366813005: Don't consider controller.addError to be a zone-crossing. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add a new test. Created 6 years, 5 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) 2014, 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
9 /// StreamController in nested runZoned. Trivial.
10 test1() {
11 var events = [];
12 var done = new Completer();
13 runZoned(() {
14 runZoned(() {
15 var c = new StreamController();
16 c.stream.listen(
17 (x) => events.add("stream: $x"),
18 onError: (x) => events.add("stream: error $x"),
19 onDone: done.complete);
20 c.add(1);
21 c.addError(2);
22 c.close();
23 }, onError: (x) => events.add("rza: error $x"));
24 }, onError: (x) => events.add("rzb: error $x"));
25 return [done.future, () {
26 Expect.listEquals(["stream: 1", "stream: error 2"], events);
27 }];
28 }
29
30 /// Adding errors to the stream controller from an outside zone.
31 test2() {
32 var events = [];
33 var done = new Completer();
34 runZoned(() {
35 var c;
36 runZoned(() {
37 c = new StreamController();
38 c.stream.listen(
39 (x) => events.add("stream: $x"),
40 onError: (x) => events.add("stream: error $x"),
41 onDone: done.complete);
42 }, onError: (x) => events.add("rza: error $x"));
43 c.add(1);
44 c.addError(2);
45 c.close();
46 }, onError: (x) => events.add("rzb: error $x"));
47 return [done.future, () {
48 Expect.listEquals(["stream: 1", "stream: error 2"], events);
49 }];
50 }
51
52 /// Adding errors to the stream controller from a more nested zone.
53 test3() {
54 var events = [];
55 var done = new Completer();
56 runZoned(() {
57 var c = new StreamController();
58 c.stream.listen(
59 (x) => events.add("stream: $x"),
60 onError: (x) => events.add("stream: error $x"),
61 onDone: done.complete);
62 runZoned(() {
63 c.add(1);
64 c.addError(2);
65 c.close();
66 }, onError: (x) => events.add("rza: error $x"));
67 }, onError: (x) => events.add("rzb: error $x"));
68 return [done.future, () {
69 Expect.listEquals(["stream: 1", "stream: error 2"], events);
70 }];
71 }
72
73 /// Feeding a stream from a different zone into another controller.
74 test4() {
75 var events = [];
76 var done = new Completer();
77 runZoned(() {
78 var c = new StreamController();
79 c.stream.listen(
80 (x) => events.add("stream: $x"),
81 onError: (x) => events.add("stream: error $x"),
82 onDone: done.complete);
83 runZoned(() {
84 var c2 = new StreamController();
85 c.addStream(c2.stream).whenComplete(c.close);
86 c2.add(1);
87 c2.addError(2);
88 c2.close();
89 }, onError: (x) => events.add("rza: error $x"));
90 }, onError: (x) => events.add("rzb: error $x"));
91 return [done.future, () {
92 Expect.listEquals(["stream: 1", "stream: error 2"], events);
93 }];
94 }
95
96 /// Feeding a stream from a different zone into another controller.
97 /// This time nesting is reversed wrt test4.
98 test5() {
99 var events = [];
100 var done = new Completer();
101 runZoned(() {
102 var c;
103 runZoned(() {
104 c = new StreamController();
105 c.stream.listen(
106 (x) => events.add("stream: $x"),
107 onError: (x) => events.add("stream: error $x"),
108 onDone: done.complete);
109 }, onError: (x) => events.add("rza: error $x"));
110 var c2 = new StreamController();
111 c.addStream(c2.stream).whenComplete(c.close);
112 c2.add(1);
113 c2.addError(2);
114 c2.close();
115 }, onError: (x) => events.add("rzb: error $x"));
116 return [done.future, () {
117 Expect.listEquals(["stream: 1", "stream: error 2"], events);
118 }];
119 }
120
Lasse Reichstein Nielsen 2014/07/10 09:45:17 All the tests have nested zones. How about indepen
floitsch 2014/07/10 13:50:42 Done.
121 main() {
122 asyncStart();
123
124 var tests = [
125 test1(),
126 test2(),
127 test3(),
128 test4(),
129 test5(),
130 ];
131
132 Future.wait(tests.map((l) => l.first)).then((_) {
133 // Give time to complete all pending actions.
134 Timer.run(() {
135 tests.forEach((l) => (l.last)());
136 asyncEnd();
137 });
138 });
139 }
OLDNEW
« tests/lib/async/catch_errors27_test.dart ('K') | « tests/lib/async/catch_errors27_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698