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

Side by Side Diff: test/ports_test.dart

Issue 928663003: Add IsolateRunner as a helper around Isolate. (Closed) Base URL: https://github.com/dart-lang/isolate.git@master
Patch Set: Add .status. Created 5 years, 10 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
« no previous file with comments | « test/isolaterunner_test.dart ('k') | test/registry_test.dart » ('j') | 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) 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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library dart.pkg.isolate.isolaterunner_test;
6
7 import "package:isolate/ports.dart";
8 import "package:unittest/unittest.dart";
9 import "dart:async";
10 import "dart:isolate";
11
12 const Duration MS = const Duration(milliseconds: 1);
13
14 main() {
15 testSingleCallbackPort();
16 testSingleCompletePort();
17 testSingleResponseFuture();
18 testSingleResultFuture();
19 }
20
21 void testSingleCallbackPort() {
22 test("singleCallbackValue", () {
23 Completer completer = new Completer.sync();
24 SendPort p = singleCallbackPort(completer.complete);
25 p.send(42);
26 return completer.future.then((v) {
27 expect(v, 42);
28 });
29 });
30
31 test("singleCallbackFirstValue", () {
32 Completer completer = new Completer.sync();
33 SendPort p = singleCallbackPort(completer.complete);
34 p.send(42);
35 p.send(37);
36 return completer.future.then((v) {
37 expect(v, 42);
38 });
39 });
40 test("singleCallbackValue", () {
41 Completer completer = new Completer.sync();
42 SendPort p = singleCallbackPort(completer.complete);
43 p.send(42);
44 return completer.future.then((v) {
45 expect(v, 42);
46 });
47 });
48
49 test("singleCallbackValueBeforeTimeout", () {
50 Completer completer = new Completer.sync();
51 SendPort p = singleCallbackPort(completer.complete,
52 timeout: MS * 500);
53 p.send(42);
54 return completer.future.then((v) {
55 expect(v, 42);
56 });
57 });
58
59 test("singleCallbackTimeout", () {
60 Completer completer = new Completer.sync();
61 singleCallbackPort(completer.complete,
62 timeout: MS * 100,
63 timeoutValue: 37);
64 return completer.future.then((v) {
65 expect(v, 37);
66 });
67 });
68
69 test("singleCallbackTimeoutFirst", () {
70 Completer completer = new Completer.sync();
71 SendPort p = singleCallbackPort(completer.complete,
72 timeout: MS * 100,
73 timeoutValue: 37);
74 new Timer(MS * 500, () => p.send(42));
75 return completer.future.then((v) {
76 expect(v, 37);
77 });
78 });
79 }
80
81
82 void testSingleCompletePort() {
83 test("singleCompleteValue", () {
84 Completer completer = new Completer.sync();
85 SendPort p = singleCompletePort(completer);
86 p.send(42);
87 return completer.future.then((v) {
88 expect(v, 42);
89 });
90 });
91
92 test("singleCompleteValueCallback", () {
93 Completer completer = new Completer.sync();
94 SendPort p = singleCompletePort(completer,
95 callback: (v) {
96 expect(42, v);
97 return 87;
98 });
99 p.send(42);
100 return completer.future.then((v) {
101 expect(v, 87);
102 });
103 });
104
105 test("singleCompleteValueCallbackFuture", () {
106 Completer completer = new Completer.sync();
107 SendPort p = singleCompletePort(completer,
108 callback: (v) {
109 expect(42, v);
110 return new Future.delayed(MS * 500,
111 () => 88);
112 });
113 p.send(42);
114 return completer.future.then((v) {
115 expect(v, 88);
116 });
117 });
118
119 test("singleCompleteValueCallbackThrows", () {
120 Completer completer = new Completer.sync();
121 SendPort p = singleCompletePort(completer,
122 callback: (v) {
123 expect(42, v);
124 throw 89;
125 });
126 p.send(42);
127 return completer.future.then((v) {
128 fail("unreachable");
129 }, onError: (e, s) {
130 expect(e, 89);
131 });
132 });
133
134 test("singleCompleteValueCallbackThrowsFuture", () {
135 Completer completer = new Completer.sync();
136 SendPort p = singleCompletePort(completer,
137 callback: (v) {
138 expect(42, v);
139 return new Future.error(90);
140 });
141 p.send(42);
142 return completer.future.then((v) {
143 fail("unreachable");
144 }, onError: (e, s) {
145 expect(e, 90);
146 });
147 });
148
149 test("singleCompleteFirstValue", () {
150 Completer completer = new Completer.sync();
151 SendPort p = singleCompletePort(completer);
152 p.send(42);
153 p.send(37);
154 return completer.future.then((v) {
155 expect(v, 42);
156 });
157 });
158
159 test("singleCompleteFirstValueCallback", () {
160 Completer completer = new Completer.sync();
161 SendPort p = singleCompletePort(completer, callback: (v) {
162 expect(v, 42);
163 return 87;
164 });
165 p.send(42);
166 p.send(37);
167 return completer.future.then((v) {
168 expect(v, 87);
169 });
170 });
171
172 test("singleCompleteValueBeforeTimeout", () {
173 Completer completer = new Completer.sync();
174 SendPort p = singleCompletePort(completer,
175 timeout: MS * 500);
176 p.send(42);
177 return completer.future.then((v) {
178 expect(v, 42);
179 });
180 });
181
182 test("singleCompleteTimeout", () {
183 Completer completer = new Completer.sync();
184 singleCompletePort(completer,
185 timeout: MS * 100);
186 return completer.future.then((v) {
187 fail("unreachable");
188 }, onError: (e, s) {
189 expect(e is TimeoutException, isTrue);
190 });
191 });
192
193 test("singleCompleteTimeoutCallback", () {
194 Completer completer = new Completer.sync();
195 singleCompletePort(completer,
196 timeout: MS * 100,
197 onTimeout: () => 87);
198 return completer.future.then((v) {
199 expect(v, 87);
200 });
201 });
202
203 test("singleCompleteTimeoutCallbackThrows", () {
204 Completer completer = new Completer.sync();
205 singleCompletePort(completer,
206 timeout: MS * 100,
207 onTimeout: () => throw 91);
208 return completer.future.then((v) {
209 fail("unreachable");
210 }, onError: (e, s) {
211 expect(e, 91);
212 });
213 });
214
215 test("singleCompleteTimeoutCallbackFuture", () {
216 Completer completer = new Completer.sync();
217 singleCompletePort(completer,
218 timeout: MS * 100,
219 onTimeout: () => new Future.value(87));
220 return completer.future.then((v) {
221 expect(v, 87);
222 });
223 });
224
225 test("singleCompleteTimeoutCallbackThrowsFuture", () {
226 Completer completer = new Completer.sync();
227 singleCompletePort(completer,
228 timeout: MS * 100,
229 onTimeout: () => new Future.error(92));
230 return completer.future.then((v) {
231 fail("unreachable");
232 }, onError: (e, s) {
233 expect(e, 92);
234 });
235 });
236
237 test("singleCompleteTimeoutCallbackSLow", () {
238 Completer completer = new Completer.sync();
239 singleCompletePort(
240 completer,
241 timeout: MS * 100,
242 onTimeout: () => new Future.delayed(MS * 500, () => 87));
243 return completer.future.then((v) {
244 expect(v, 87);
245 });
246 });
247
248 test("singleCompleteTimeoutCallbackThrowsSlow", () {
249 Completer completer = new Completer.sync();
250 singleCompletePort(
251 completer,
252 timeout: MS * 100,
253 onTimeout: () => new Future.delayed(MS * 500, () => throw 87));
254 return completer.future.then((v) {
255 fail("unreachable");
256 }, onError: (e, s) {
257 expect(e, 87);
258 });
259 });
260
261 test("singleCompleteTimeoutFirst", () {
262 Completer completer = new Completer.sync();
263 SendPort p = singleCompletePort(completer,
264 timeout: MS * 100,
265 onTimeout: () => 37);
266 new Timer(MS * 500, () => p.send(42));
267 return completer.future.then((v) {
268 expect(v, 37);
269 });
270 });
271 }
272
273 void testSingleResponseFuture() {
274 test("singleResponseFutureValue", () {
275 return singleResponseFuture((SendPort p) {
276 p.send(42);
277 }).then((v) {
278 expect(v, 42);
279 });
280 });
281
282 test("singleResponseFutureValueFirst", () {
283 return singleResponseFuture((SendPort p) {
284 p.send(42);
285 p.send(37);
286 }).then((v) {
287 expect(v, 42);
288 });
289 });
290
291 test("singleResponseFutureError", () {
292 return singleResponseFuture((SendPort p) {
293 throw 93;
294 }).then((v) {
295 fail("unreachable");
296 }, onError: (e, s) {
297 expect(e, 93);
298 });
299 });
300
301 test("singleResponseFutureTimeout", () {
302 return singleResponseFuture((SendPort p) {
303 // no-op.
304 }, timeout: MS * 100).then((v) {
305 expect(v, null);
306 });
307 });
308
309 test("singleResponseFutureTimeoutValue", () {
310 return singleResponseFuture((SendPort p) {
311 // no-op.
312 }, timeout: MS * 100, timeoutValue: 42).then((v) {
313 expect(v, 42);
314 });
315 });
316 }
317
318 void testSingleResultFuture() {
319 test("singleResultFutureValue", () {
320 return singleResultFuture((SendPort p) {
321 sendFutureResult(new Future.value(42), p);
322 }).then((v) {
323 expect(v, 42);
324 });
325 });
326
327 test("singleResultFutureValueFirst", () {
328 return singleResultFuture((SendPort p) {
329 sendFutureResult(new Future.value(42), p);
330 sendFutureResult(new Future.value(37), p);
331 }).then((v) {
332 expect(v, 42);
333 });
334 });
335
336 test("singleResultFutureError", () {
337 return singleResultFuture((SendPort p) {
338 sendFutureResult(new Future.error(94), p);
339 }).then((v) {
340 fail("unreachable");
341 }, onError: (e, s) {
342 expect(e is RemoteError, isTrue);
343 });
344 });
345
346 test("singleResultFutureErrorFirst", () {
347 return singleResultFuture((SendPort p) {
348 sendFutureResult(new Future.error(95), p);
349 sendFutureResult(new Future.error(96), p);
350 }).then((v) {
351 fail("unreachable");
352 }, onError: (e, s) {
353 expect(e is RemoteError, isTrue);
354 });
355 });
356
357 test("singleResultFutureError", () {
358 return singleResultFuture((SendPort p) {
359 throw 93;
360 }).then((v) {
361 fail("unreachable");
362 }, onError: (e, s) {
363 expect(e is RemoteError, isTrue);
364 });
365 });
366
367 test("singleResultFutureTimeout", () {
368 return singleResultFuture((SendPort p) {
369 // no-op.
370 }, timeout: MS * 100).then((v) {
371 fail("unreachable");
372 }, onError: (e, s) {
373 expect(e is TimeoutException, isTrue);
374 });
375 });
376
377 test("singleResultFutureTimeoutValue", () {
378 return singleResultFuture((SendPort p) {
379 // no-op.
380 }, timeout: MS * 100, onTimeout: () => 42).then((v) {
381 expect(v, 42);
382 });
383 });
384
385 test("singleResultFutureTimeoutError", () {
386 return singleResultFuture((SendPort p) {
387 // no-op.
388 }, timeout: MS * 100, onTimeout: () => throw 97).then((v) {
389 expect(v, 42);
390 }, onError: (e, s) {
391 expect(e, 97);
392 });
393 });
394 }
OLDNEW
« no previous file with comments | « test/isolaterunner_test.dart ('k') | test/registry_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698