Index: tests/isolate/message_stream_test.dart |
diff --git a/tests/isolate/message_stream_test.dart b/tests/isolate/message_stream_test.dart |
deleted file mode 100644 |
index bfd7d4c011a2289f5e6c7918bd4530e1108412d6..0000000000000000000000000000000000000000 |
--- a/tests/isolate/message_stream_test.dart |
+++ /dev/null |
@@ -1,144 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-// Dart test program for testing serialization of messages. |
-// VMOptions=--enable_type_checks --enable_asserts |
- |
-library MessageTest; |
-import 'dart:isolate'; |
-import '../../pkg/unittest/lib/unittest.dart'; |
- |
-// --------------------------------------------------------------------------- |
-// Message passing test. |
-// --------------------------------------------------------------------------- |
- |
-class MessageTest { |
- static const List list1 = const ["Hello", "World", "Hello", 0xfffffffffff]; |
- static const List list2 = const [null, list1, list1, list1, list1]; |
- static const List list3 = const [list2, 2.0, true, false, 0xfffffffffff]; |
- static const Map map1 = const { |
- "a=1" : 1, "b=2" : 2, "c=3" : 3, |
- }; |
- static const Map map2 = const { |
- "list1" : list1, "list2" : list2, "list3" : list3, |
- }; |
- static const List list4 = const [map1, map2]; |
- static const List elms = const [ |
- list1, list2, list3, list4, |
- ]; |
- |
- static void VerifyMap(Map expected, Map actual) { |
- expect(expected, isMap); |
- expect(actual, isMap); |
- expect(actual.length, expected.length); |
- testForEachMap(key, value) { |
- if (value is List) { |
- VerifyList(value, actual[key]); |
- } else { |
- expect(actual[key], value); |
- } |
- } |
- expected.forEach(testForEachMap); |
- } |
- |
- static void VerifyList(List expected, List actual) { |
- for (int i = 0; i < expected.length; i++) { |
- if (expected[i] is List) { |
- VerifyList(expected[i], actual[i]); |
- } else if (expected[i] is Map) { |
- VerifyMap(expected[i], actual[i]); |
- } else { |
- expect(actual[i], expected[i]); |
- } |
- } |
- } |
- |
- static void VerifyObject(int index, var actual) { |
- var expected = elms[index]; |
- expect(expected, isList); |
- expect(actual, isList); |
- expect(actual.length, expected.length); |
- VerifyList(expected, actual); |
- } |
-} |
- |
-pingPong() { |
- int count = 0; |
- bool isFirst = true; |
- IsolateSink replyTo; |
- stream.listen((var message) { |
- if (isFirst) { |
- isFirst = false; |
- replyTo = message; |
- return; |
- } |
- // Check if the received object is correct. |
- if (count < MessageTest.elms.length) { |
- MessageTest.VerifyObject(count, message); |
- } |
- // Bounce the received object back so that the sender |
- // can make sure that the object matches. |
- replyTo.add(message); |
- count++; |
- }, onDone: () { |
- replyTo.add(count); |
- replyTo.close(); |
- }); |
-} |
- |
-main() { |
- test("send objects and receive them back", () { |
- IsolateSink remote = streamSpawnFunction(pingPong); |
- MessageBox box = new MessageBox(); |
- remote.add(box.sink); |
- |
- // Send objects and receive them back. |
- for (int i = 0; i < MessageTest.elms.length; i++) { |
- var sentObject = MessageTest.elms[i]; |
- // TODO(asiva): remove this local var idx once thew new for-loop |
- // semantics for closures is implemented. |
- var idx = i; |
- remote.add(sentObject); |
- } |
- |
- // Send recursive objects and receive them back. |
- List local_list1 = ["Hello", "World", "Hello", 0xffffffffff]; |
- List local_list2 = [null, local_list1, local_list1 ]; |
- List local_list3 = [local_list2, 2.0, true, false, 0xffffffffff]; |
- List sendObject = new List(5); |
- sendObject[0] = local_list1; |
- sendObject[1] = sendObject; |
- sendObject[2] = local_list2; |
- sendObject[3] = sendObject; |
- sendObject[4] = local_list3; |
- remote.add(sendObject); |
- |
- // Shutdown the MessageServer. |
- remote.close(); |
- |
- int receivedCounter = 0; |
- box.stream.listen((message) { |
- if (receivedCounter < MessageTest.elms.length) { |
- MessageTest.VerifyObject(receivedCounter, message); |
- } else if (receivedCounter == MessageTest.elms.length) { |
- var replyObject = message; |
- expect(sendObject, isList); |
- expect(replyObject, isList); |
- expect(sendObject.length, equals(replyObject.length)); |
- expect(replyObject[1], same(replyObject)); |
- expect(replyObject[3], same(replyObject)); |
- expect(replyObject[0], same(replyObject[2][1])); |
- expect(replyObject[0], same(replyObject[2][2])); |
- expect(replyObject[2], same(replyObject[4][0])); |
- expect(replyObject[0][0], same(replyObject[0][2])); |
- // Bigint literals are not canonicalized so do a == check. |
- expect(replyObject[0][3], equals(replyObject[4][4])); |
- } else { |
- // Reply from done. |
- expect(message, MessageTest.elms.length + 1); |
- } |
- receivedCounter++; |
- }); |
- }); |
-} |