OLD | NEW |
1 // Copyright (c) 2011, 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 // Dart test program for testing isolate communication with | 4 // Dart test program for testing isolate communication with |
5 // typed objects. | 5 // typed objects. |
6 // VMOptions=--enable_type_checks --enable_asserts | 6 // VMOptions=--enable_type_checks --enable_asserts |
7 | 7 |
8 #library("TypedMessageTest"); | 8 #library("TypedMessageTest"); |
9 #import("dart:isolate"); | 9 #import("dart:isolate"); |
10 | 10 |
11 class TypedMessageTest { | 11 void logMessages() { |
12 static void testMain() { | 12 print("Starting log server."); |
13 LogClient.test(); | 13 port.receive((List<int> message, SendPort replyTo) { |
14 } | 14 print("Log $message"); |
15 } | 15 Expect.equals(5, message.length); |
16 | 16 Expect.equals(0, message[0]); |
17 | 17 Expect.equals(1, message[1]); |
18 class LogClient { | 18 Expect.equals(2, message[2]); |
19 static void test() { | 19 Expect.equals(3, message[3]); |
20 new LogIsolate().spawn().then((SendPort remote) { | 20 Expect.equals(4, message[4]); |
21 | 21 port.close(); |
22 List<int> msg = new List<int>(5); | 22 replyTo.send(1, null); |
23 for (int i = 0; i < 5; i++) { | 23 print("Stopping log server."); |
24 msg[i] = i; | 24 }); |
25 } | |
26 remote.call(msg).then((int message) { | |
27 Expect.equals(1, message); | |
28 }); | |
29 }); | |
30 } | |
31 } | |
32 | |
33 | |
34 class LogIsolate extends Isolate { | |
35 LogIsolate() : super() {} | |
36 | |
37 void main() { | |
38 print("Starting log server."); | |
39 | |
40 this.port.receive((List<int> message, SendPort replyTo) { | |
41 print("Log $message"); | |
42 Expect.equals(5, message.length); | |
43 Expect.equals(0, message[0]); | |
44 Expect.equals(1, message[1]); | |
45 Expect.equals(2, message[2]); | |
46 Expect.equals(3, message[3]); | |
47 Expect.equals(4, message[4]); | |
48 this.port.close(); | |
49 replyTo.send(1, null); | |
50 print("Stopping log server."); | |
51 }); | |
52 } | |
53 } | 25 } |
54 | 26 |
55 main() { | 27 main() { |
56 TypedMessageTest.testMain(); | 28 SendPort remote = spawnFunction(logMessages); |
| 29 List<int> msg = new List<int>(5); |
| 30 for (int i = 0; i < 5; i++) { |
| 31 msg[i] = i; |
| 32 } |
| 33 remote.call(msg).then((int message) { |
| 34 Expect.equals(1, message); |
| 35 }); |
57 } | 36 } |
OLD | NEW |