OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 RequestReplyTest; | 5 library RequestReplyTest; |
6 | 6 |
7 import 'dart:isolate'; | 7 import 'dart:isolate'; |
8 import '../../pkg/unittest/lib/unittest.dart'; | 8 import '../../pkg/unittest/lib/unittest.dart'; |
9 | 9 |
10 void entry() { | 10 void entry(initPort) { |
11 port.receive((message, SendPort replyTo) { | 11 ReceivePort port = new ReceivePort(); |
| 12 initPort.send(port.sendPort); |
| 13 port.listen((pair) { |
| 14 var message = pair[0]; |
| 15 SendPort replyTo = pair[1]; |
12 replyTo.send(message + 87); | 16 replyTo.send(message + 87); |
13 port.close(); | 17 port.close(); |
14 }); | 18 }); |
15 } | 19 } |
16 | 20 |
17 void main() { | 21 void main() { |
18 test("call", () { | |
19 SendPort port = spawnFunction(entry); | |
20 port.call(42).then(expectAsync1((message) { | |
21 expect(message, 42 + 87); | |
22 })); | |
23 }); | |
24 | |
25 test("send", () { | 22 test("send", () { |
26 SendPort port = spawnFunction(entry); | 23 ReceivePort init = new ReceivePort(); |
27 ReceivePort reply = new ReceivePort(); | 24 Isolate.spawn(entry, init.sendPort); |
28 port.send(99, reply.toSendPort()); | 25 init.first.then(expectAsync1((port) { |
29 reply.receive(expectAsync2((message, replyTo) { | 26 ReceivePort reply = new ReceivePort(); |
30 expect(message, 99 + 87); | 27 port.send([99, reply.sendPort]); |
31 reply.close(); | 28 reply.listen(expectAsync1((message) { |
| 29 expect(message, 99 + 87); |
| 30 reply.close(); |
| 31 })); |
32 })); | 32 })); |
33 }); | 33 }); |
34 } | 34 } |
OLD | NEW |