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 // Dart test program for testing serialization of messages. | 5 // Dart test program for testing serialization of messages. |
6 // VMOptions=--enable_type_checks --enable_asserts | 6 // VMOptions=--enable_type_checks --enable_asserts |
7 | 7 |
8 library MessageTest; | 8 library MessageTest; |
9 import 'dart:isolate'; | 9 import 'dart:isolate'; |
10 import 'dart:async'; | 10 import 'dart:async'; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 ReceivePort receivePort = new ReceivePort(); | 92 ReceivePort receivePort = new ReceivePort(); |
93 port.send([message, receivePort.sendPort]); | 93 port.send([message, receivePort.sendPort]); |
94 return receivePort.first; | 94 return receivePort.first; |
95 } | 95 } |
96 | 96 |
97 void main([args, port]) { | 97 void main([args, port]) { |
98 if (testRemote(main, port)) return; | 98 if (testRemote(main, port)) return; |
99 test("send objects and receive them back", () { | 99 test("send objects and receive them back", () { |
100 ReceivePort port = new ReceivePort(); | 100 ReceivePort port = new ReceivePort(); |
101 Isolate.spawn(pingPong, port.sendPort); | 101 Isolate.spawn(pingPong, port.sendPort); |
102 port.first.then(expectAsync1((remote) { | 102 port.first.then(expectAsync((remote) { |
103 // Send objects and receive them back. | 103 // Send objects and receive them back. |
104 for (int i = 0; i < MessageTest.elms.length; i++) { | 104 for (int i = 0; i < MessageTest.elms.length; i++) { |
105 var sentObject = MessageTest.elms[i]; | 105 var sentObject = MessageTest.elms[i]; |
106 remoteCall(remote, sentObject).then(expectAsync1((var receivedObject) { | 106 remoteCall(remote, sentObject).then(expectAsync((var receivedObject) { |
107 MessageTest.VerifyObject(i, receivedObject); | 107 MessageTest.VerifyObject(i, receivedObject); |
108 })); | 108 })); |
109 } | 109 } |
110 | 110 |
111 // Send recursive objects and receive them back. | 111 // Send recursive objects and receive them back. |
112 List local_list1 = ["Hello", "World", "Hello", 0xffffffffff]; | 112 List local_list1 = ["Hello", "World", "Hello", 0xffffffffff]; |
113 List local_list2 = [null, local_list1, local_list1 ]; | 113 List local_list2 = [null, local_list1, local_list1 ]; |
114 List local_list3 = [local_list2, 2.0, true, false, 0xffffffffff]; | 114 List local_list3 = [local_list2, 2.0, true, false, 0xffffffffff]; |
115 List sendObject = new List(5); | 115 List sendObject = new List(5); |
116 sendObject[0] = local_list1; | 116 sendObject[0] = local_list1; |
117 sendObject[1] = sendObject; | 117 sendObject[1] = sendObject; |
118 sendObject[2] = local_list2; | 118 sendObject[2] = local_list2; |
119 sendObject[3] = sendObject; | 119 sendObject[3] = sendObject; |
120 sendObject[4] = local_list3; | 120 sendObject[4] = local_list3; |
121 remoteCall(remote, sendObject).then((var replyObject) { | 121 remoteCall(remote, sendObject).then((var replyObject) { |
122 expect(sendObject, isList); | 122 expect(sendObject, isList); |
123 expect(replyObject, isList); | 123 expect(replyObject, isList); |
124 expect(sendObject.length, equals(replyObject.length)); | 124 expect(sendObject.length, equals(replyObject.length)); |
125 expect(replyObject[1], same(replyObject)); | 125 expect(replyObject[1], same(replyObject)); |
126 expect(replyObject[3], same(replyObject)); | 126 expect(replyObject[3], same(replyObject)); |
127 expect(replyObject[0], same(replyObject[2][1])); | 127 expect(replyObject[0], same(replyObject[2][1])); |
128 expect(replyObject[0], same(replyObject[2][2])); | 128 expect(replyObject[0], same(replyObject[2][2])); |
129 expect(replyObject[2], same(replyObject[4][0])); | 129 expect(replyObject[2], same(replyObject[4][0])); |
130 expect(replyObject[0][0], same(replyObject[0][2])); | 130 expect(replyObject[0][0], same(replyObject[0][2])); |
131 // Bigint literals are not canonicalized so do a == check. | 131 // Bigint literals are not canonicalized so do a == check. |
132 expect(replyObject[0][3], equals(replyObject[4][4])); | 132 expect(replyObject[0][3], equals(replyObject[4][4])); |
133 }); | 133 }); |
134 | 134 |
135 // Shutdown the MessageServer. | 135 // Shutdown the MessageServer. |
136 remoteCall(remote, -1).then(expectAsync1((int message) { | 136 remoteCall(remote, -1).then(expectAsync((int message) { |
137 expect(message, MessageTest.elms.length + 1); | 137 expect(message, MessageTest.elms.length + 1); |
138 })); | 138 })); |
139 })); | 139 })); |
140 }); | 140 }); |
141 } | 141 } |
OLD | NEW |