OLD | NEW |
---|---|
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library dart.pkg.isolate.isolaterunner_test; | 5 library dart.pkg.isolate.isolaterunner_test; |
6 | 6 |
7 import "package:isolate/ports.dart"; | 7 import "package:isolate/ports.dart"; |
8 import "package:unittest/unittest.dart"; | 8 import "package:unittest/unittest.dart"; |
9 import "dart:async"; | 9 import "dart:async"; |
10 import "dart:isolate"; | 10 import "dart:isolate"; |
(...skipping 30 matching lines...) Expand all Loading... | |
41 Completer completer = new Completer.sync(); | 41 Completer completer = new Completer.sync(); |
42 SendPort p = singleCallbackPort(completer.complete); | 42 SendPort p = singleCallbackPort(completer.complete); |
43 p.send(42); | 43 p.send(42); |
44 return completer.future.then((v) { | 44 return completer.future.then((v) { |
45 expect(v, 42); | 45 expect(v, 42); |
46 }); | 46 }); |
47 }); | 47 }); |
48 | 48 |
49 test("singleCallbackValueBeforeTimeout", () { | 49 test("singleCallbackValueBeforeTimeout", () { |
50 Completer completer = new Completer.sync(); | 50 Completer completer = new Completer.sync(); |
51 SendPort p = singleCallbackPort(completer.complete, | 51 SendPort p = singleCallbackPort(completer.complete, timeout: MS * 500); |
52 timeout: MS * 500); | |
53 p.send(42); | 52 p.send(42); |
54 return completer.future.then((v) { | 53 return completer.future.then((v) { |
55 expect(v, 42); | 54 expect(v, 42); |
56 }); | 55 }); |
57 }); | 56 }); |
58 | 57 |
59 test("singleCallbackTimeout", () { | 58 test("singleCallbackTimeout", () { |
60 Completer completer = new Completer.sync(); | 59 Completer completer = new Completer.sync(); |
61 singleCallbackPort(completer.complete, | 60 singleCallbackPort(completer.complete, timeout: MS * 100, timeoutValue: 37); |
62 timeout: MS * 100, | |
63 timeoutValue: 37); | |
64 return completer.future.then((v) { | 61 return completer.future.then((v) { |
65 expect(v, 37); | 62 expect(v, 37); |
66 }); | 63 }); |
67 }); | 64 }); |
68 | 65 |
69 test("singleCallbackTimeoutFirst", () { | 66 test("singleCallbackTimeoutFirst", () { |
70 Completer completer = new Completer.sync(); | 67 Completer completer = new Completer.sync(); |
71 SendPort p = singleCallbackPort(completer.complete, | 68 SendPort p = singleCallbackPort(completer.complete, |
72 timeout: MS * 100, | 69 timeout: MS * 100, timeoutValue: 37); |
Lasse Reichstein Nielsen
2015/02/26 10:59:15
Indent to after '(' or put completer.complete on n
| |
73 timeoutValue: 37); | |
74 new Timer(MS * 500, () => p.send(42)); | 70 new Timer(MS * 500, () => p.send(42)); |
75 return completer.future.then((v) { | 71 return completer.future.then((v) { |
76 expect(v, 37); | 72 expect(v, 37); |
77 }); | 73 }); |
78 }); | 74 }); |
79 } | 75 } |
80 | 76 |
81 | |
82 void testSingleCompletePort() { | 77 void testSingleCompletePort() { |
83 test("singleCompleteValue", () { | 78 test("singleCompleteValue", () { |
84 Completer completer = new Completer.sync(); | 79 Completer completer = new Completer.sync(); |
85 SendPort p = singleCompletePort(completer); | 80 SendPort p = singleCompletePort(completer); |
86 p.send(42); | 81 p.send(42); |
87 return completer.future.then((v) { | 82 return completer.future.then((v) { |
88 expect(v, 42); | 83 expect(v, 42); |
89 }); | 84 }); |
90 }); | 85 }); |
91 | 86 |
92 test("singleCompleteValueCallback", () { | 87 test("singleCompleteValueCallback", () { |
93 Completer completer = new Completer.sync(); | 88 Completer completer = new Completer.sync(); |
94 SendPort p = singleCompletePort(completer, | 89 SendPort p = singleCompletePort(completer, callback: (v) { |
95 callback: (v) { | 90 expect(42, v); |
96 expect(42, v); | 91 return 87; |
97 return 87; | 92 }); |
Lasse Reichstein Nielsen
2015/02/26 10:59:15
This is much better!
| |
98 }); | |
99 p.send(42); | 93 p.send(42); |
100 return completer.future.then((v) { | 94 return completer.future.then((v) { |
101 expect(v, 87); | 95 expect(v, 87); |
102 }); | 96 }); |
103 }); | 97 }); |
104 | 98 |
105 test("singleCompleteValueCallbackFuture", () { | 99 test("singleCompleteValueCallbackFuture", () { |
106 Completer completer = new Completer.sync(); | 100 Completer completer = new Completer.sync(); |
107 SendPort p = singleCompletePort(completer, | 101 SendPort p = singleCompletePort(completer, callback: (v) { |
108 callback: (v) { | 102 expect(42, v); |
109 expect(42, v); | 103 return new Future.delayed(MS * 500, () => 88); |
110 return new Future.delayed(MS * 500, | 104 }); |
111 () => 88); | |
112 }); | |
113 p.send(42); | 105 p.send(42); |
114 return completer.future.then((v) { | 106 return completer.future.then((v) { |
115 expect(v, 88); | 107 expect(v, 88); |
116 }); | 108 }); |
117 }); | 109 }); |
118 | 110 |
119 test("singleCompleteValueCallbackThrows", () { | 111 test("singleCompleteValueCallbackThrows", () { |
120 Completer completer = new Completer.sync(); | 112 Completer completer = new Completer.sync(); |
121 SendPort p = singleCompletePort(completer, | 113 SendPort p = singleCompletePort(completer, callback: (v) { |
122 callback: (v) { | 114 expect(42, v); |
123 expect(42, v); | 115 throw 89; |
124 throw 89; | 116 }); |
125 }); | |
126 p.send(42); | 117 p.send(42); |
127 return completer.future.then((v) { | 118 return completer.future.then((v) { |
128 fail("unreachable"); | 119 fail("unreachable"); |
129 }, onError: (e, s) { | 120 }, onError: (e, s) { |
130 expect(e, 89); | 121 expect(e, 89); |
131 }); | 122 }); |
132 }); | 123 }); |
133 | 124 |
134 test("singleCompleteValueCallbackThrowsFuture", () { | 125 test("singleCompleteValueCallbackThrowsFuture", () { |
135 Completer completer = new Completer.sync(); | 126 Completer completer = new Completer.sync(); |
136 SendPort p = singleCompletePort(completer, | 127 SendPort p = singleCompletePort(completer, callback: (v) { |
137 callback: (v) { | 128 expect(42, v); |
138 expect(42, v); | 129 return new Future.error(90); |
139 return new Future.error(90); | 130 }); |
140 }); | |
141 p.send(42); | 131 p.send(42); |
142 return completer.future.then((v) { | 132 return completer.future.then((v) { |
143 fail("unreachable"); | 133 fail("unreachable"); |
144 }, onError: (e, s) { | 134 }, onError: (e, s) { |
145 expect(e, 90); | 135 expect(e, 90); |
146 }); | 136 }); |
147 }); | 137 }); |
148 | 138 |
149 test("singleCompleteFirstValue", () { | 139 test("singleCompleteFirstValue", () { |
150 Completer completer = new Completer.sync(); | 140 Completer completer = new Completer.sync(); |
151 SendPort p = singleCompletePort(completer); | 141 SendPort p = singleCompletePort(completer); |
152 p.send(42); | 142 p.send(42); |
153 p.send(37); | 143 p.send(37); |
154 return completer.future.then((v) { | 144 return completer.future.then((v) { |
155 expect(v, 42); | 145 expect(v, 42); |
156 }); | 146 }); |
157 }); | 147 }); |
158 | 148 |
159 test("singleCompleteFirstValueCallback", () { | 149 test("singleCompleteFirstValueCallback", () { |
160 Completer completer = new Completer.sync(); | 150 Completer completer = new Completer.sync(); |
161 SendPort p = singleCompletePort(completer, callback: (v) { | 151 SendPort p = singleCompletePort(completer, callback: (v) { |
162 expect(v, 42); | 152 expect(v, 42); |
163 return 87; | 153 return 87; |
164 }); | 154 }); |
165 p.send(42); | 155 p.send(42); |
166 p.send(37); | 156 p.send(37); |
167 return completer.future.then((v) { | 157 return completer.future.then((v) { |
168 expect(v, 87); | 158 expect(v, 87); |
169 }); | 159 }); |
170 }); | 160 }); |
171 | 161 |
172 test("singleCompleteValueBeforeTimeout", () { | 162 test("singleCompleteValueBeforeTimeout", () { |
173 Completer completer = new Completer.sync(); | 163 Completer completer = new Completer.sync(); |
174 SendPort p = singleCompletePort(completer, | 164 SendPort p = singleCompletePort(completer, timeout: MS * 500); |
175 timeout: MS * 500); | |
176 p.send(42); | 165 p.send(42); |
177 return completer.future.then((v) { | 166 return completer.future.then((v) { |
178 expect(v, 42); | 167 expect(v, 42); |
179 }); | 168 }); |
180 }); | 169 }); |
181 | 170 |
182 test("singleCompleteTimeout", () { | 171 test("singleCompleteTimeout", () { |
183 Completer completer = new Completer.sync(); | 172 Completer completer = new Completer.sync(); |
184 singleCompletePort(completer, | 173 singleCompletePort(completer, timeout: MS * 100); |
185 timeout: MS * 100); | |
186 return completer.future.then((v) { | 174 return completer.future.then((v) { |
187 fail("unreachable"); | 175 fail("unreachable"); |
188 }, onError: (e, s) { | 176 }, onError: (e, s) { |
189 expect(e is TimeoutException, isTrue); | 177 expect(e is TimeoutException, isTrue); |
190 }); | 178 }); |
191 }); | 179 }); |
192 | 180 |
193 test("singleCompleteTimeoutCallback", () { | 181 test("singleCompleteTimeoutCallback", () { |
194 Completer completer = new Completer.sync(); | 182 Completer completer = new Completer.sync(); |
195 singleCompletePort(completer, | 183 singleCompletePort(completer, timeout: MS * 100, onTimeout: () => 87); |
196 timeout: MS * 100, | |
197 onTimeout: () => 87); | |
198 return completer.future.then((v) { | 184 return completer.future.then((v) { |
199 expect(v, 87); | 185 expect(v, 87); |
200 }); | 186 }); |
201 }); | 187 }); |
202 | 188 |
203 test("singleCompleteTimeoutCallbackThrows", () { | 189 test("singleCompleteTimeoutCallbackThrows", () { |
204 Completer completer = new Completer.sync(); | 190 Completer completer = new Completer.sync(); |
205 singleCompletePort(completer, | 191 singleCompletePort(completer, timeout: MS * 100, onTimeout: () => throw 91); |
206 timeout: MS * 100, | |
207 onTimeout: () => throw 91); | |
208 return completer.future.then((v) { | 192 return completer.future.then((v) { |
209 fail("unreachable"); | 193 fail("unreachable"); |
210 }, onError: (e, s) { | 194 }, onError: (e, s) { |
211 expect(e, 91); | 195 expect(e, 91); |
212 }); | 196 }); |
213 }); | 197 }); |
214 | 198 |
215 test("singleCompleteTimeoutCallbackFuture", () { | 199 test("singleCompleteTimeoutCallbackFuture", () { |
216 Completer completer = new Completer.sync(); | 200 Completer completer = new Completer.sync(); |
217 singleCompletePort(completer, | 201 singleCompletePort(completer, |
218 timeout: MS * 100, | 202 timeout: MS * 100, onTimeout: () => new Future.value(87)); |
219 onTimeout: () => new Future.value(87)); | |
220 return completer.future.then((v) { | 203 return completer.future.then((v) { |
221 expect(v, 87); | 204 expect(v, 87); |
222 }); | 205 }); |
223 }); | 206 }); |
224 | 207 |
225 test("singleCompleteTimeoutCallbackThrowsFuture", () { | 208 test("singleCompleteTimeoutCallbackThrowsFuture", () { |
226 Completer completer = new Completer.sync(); | 209 Completer completer = new Completer.sync(); |
227 singleCompletePort(completer, | 210 singleCompletePort(completer, |
228 timeout: MS * 100, | 211 timeout: MS * 100, onTimeout: () => new Future.error(92)); |
229 onTimeout: () => new Future.error(92)); | |
230 return completer.future.then((v) { | 212 return completer.future.then((v) { |
231 fail("unreachable"); | 213 fail("unreachable"); |
232 }, onError: (e, s) { | 214 }, onError: (e, s) { |
233 expect(e, 92); | 215 expect(e, 92); |
234 }); | 216 }); |
235 }); | 217 }); |
236 | 218 |
237 test("singleCompleteTimeoutCallbackSLow", () { | 219 test("singleCompleteTimeoutCallbackSLow", () { |
238 Completer completer = new Completer.sync(); | 220 Completer completer = new Completer.sync(); |
239 singleCompletePort( | 221 singleCompletePort(completer, |
240 completer, | |
241 timeout: MS * 100, | 222 timeout: MS * 100, |
242 onTimeout: () => new Future.delayed(MS * 500, () => 87)); | 223 onTimeout: () => new Future.delayed(MS * 500, () => 87)); |
243 return completer.future.then((v) { | 224 return completer.future.then((v) { |
244 expect(v, 87); | 225 expect(v, 87); |
245 }); | 226 }); |
246 }); | 227 }); |
247 | 228 |
248 test("singleCompleteTimeoutCallbackThrowsSlow", () { | 229 test("singleCompleteTimeoutCallbackThrowsSlow", () { |
249 Completer completer = new Completer.sync(); | 230 Completer completer = new Completer.sync(); |
250 singleCompletePort( | 231 singleCompletePort(completer, |
251 completer, | |
252 timeout: MS * 100, | 232 timeout: MS * 100, |
253 onTimeout: () => new Future.delayed(MS * 500, () => throw 87)); | 233 onTimeout: () => new Future.delayed(MS * 500, () => throw 87)); |
254 return completer.future.then((v) { | 234 return completer.future.then((v) { |
255 fail("unreachable"); | 235 fail("unreachable"); |
256 }, onError: (e, s) { | 236 }, onError: (e, s) { |
257 expect(e, 87); | 237 expect(e, 87); |
258 }); | 238 }); |
259 }); | 239 }); |
260 | 240 |
261 test("singleCompleteTimeoutFirst", () { | 241 test("singleCompleteTimeoutFirst", () { |
262 Completer completer = new Completer.sync(); | 242 Completer completer = new Completer.sync(); |
263 SendPort p = singleCompletePort(completer, | 243 SendPort p = |
264 timeout: MS * 100, | 244 singleCompletePort(completer, timeout: MS * 100, onTimeout: () => 37); |
265 onTimeout: () => 37); | |
266 new Timer(MS * 500, () => p.send(42)); | 245 new Timer(MS * 500, () => p.send(42)); |
267 return completer.future.then((v) { | 246 return completer.future.then((v) { |
268 expect(v, 37); | 247 expect(v, 37); |
269 }); | 248 }); |
270 }); | 249 }); |
271 } | 250 } |
272 | 251 |
273 void testSingleResponseFuture() { | 252 void testSingleResponseFuture() { |
274 test("singleResponseFutureValue", () { | 253 test("singleResponseFutureValue", () { |
275 return singleResponseFuture((SendPort p) { | 254 return singleResponseFuture((SendPort p) { |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
385 test("singleResultFutureTimeoutError", () { | 364 test("singleResultFutureTimeoutError", () { |
386 return singleResultFuture((SendPort p) { | 365 return singleResultFuture((SendPort p) { |
387 // no-op. | 366 // no-op. |
388 }, timeout: MS * 100, onTimeout: () => throw 97).then((v) { | 367 }, timeout: MS * 100, onTimeout: () => throw 97).then((v) { |
389 expect(v, 42); | 368 expect(v, 42); |
390 }, onError: (e, s) { | 369 }, onError: (e, s) { |
391 expect(e, 97); | 370 expect(e, 97); |
392 }); | 371 }); |
393 }); | 372 }); |
394 } | 373 } |
OLD | NEW |