OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011, 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 // Dart test program for testing serialization of messages without spawning | |
6 // isolates. | |
7 | |
8 // --------------------------------------------------------------------------- | |
9 // Serialization test. | |
10 // --------------------------------------------------------------------------- | |
11 #library('SerializationTest'); | |
12 #import('dart:isolate'); | |
13 | |
14 main() { | |
15 // TODO(sigmund): fix once we can disable privacy for testing (bug #1882) | |
16 testAllTypes(TestingOnly.copy); | |
17 testAllTypes(TestingOnly.serialize); | |
18 } | |
19 | |
20 void testAllTypes(Function f) { | |
21 copyAndVerify(0, f); | |
22 copyAndVerify(499, f); | |
23 copyAndVerify(true, f); | |
24 copyAndVerify(false, f); | |
25 copyAndVerify("", f); | |
26 copyAndVerify("foo", f); | |
27 copyAndVerify([], f); | |
28 copyAndVerify([1, 2], f); | |
29 copyAndVerify([[]], f); | |
30 copyAndVerify([1, []], f); | |
31 copyAndVerify({}, f); | |
32 copyAndVerify({ 'a': 3 }, f); | |
33 copyAndVerify({ 'a': 3, 'b': 5, 'c': 8 }, f); | |
34 copyAndVerify({ 'a': [1, 2] }, f); | |
35 copyAndVerify({ 'b': { 'c' : 99 } }, f); | |
36 copyAndVerify([ { 'a': 499 }, { 'b': 42 } ], f); | |
37 | |
38 var port = new ReceivePort(); | |
39 Expect.throws(() => f(port)); | |
40 port.close(); | |
41 | |
42 var a = [ 1, 3, 5 ]; | |
43 var b = { 'b': 49 }; | |
44 var c = [ a, b, a, b, a ]; | |
45 var copied = f(c); | |
46 verify(c, copied); | |
47 Expect.isFalse(c === copied); | |
48 Expect.isTrue(copied[0] === copied[2]); | |
49 Expect.isTrue(copied[0] === copied[4]); | |
50 Expect.isTrue(copied[1] === copied[3]); | |
51 } | |
52 | |
53 void copyAndVerify(o, Function f) { | |
54 var copy = f(o); | |
55 verify(o, copy); | |
56 } | |
57 | |
58 void verify(o, copy) { | |
59 if ((o is bool) || (o is num) || (o is String)) { | |
60 Expect.equals(o, copy); | |
61 } else if (o is List) { | |
62 Expect.isTrue(copy is List); | |
63 Expect.equals(o.length, copy.length); | |
64 for (int i = 0; i < o.length; i++) { | |
65 verify(o[i], copy[i]); | |
66 } | |
67 } else if (o is Map) { | |
68 Expect.isTrue(copy is Map); | |
69 Expect.equals(o.length, copy.length); | |
70 o.forEach((key, value) { | |
71 Expect.isTrue(copy.containsKey(key)); | |
72 verify(value, copy[key]); | |
73 }); | |
74 } else { | |
75 Expect.fail("Unexpected object encountered"); | |
76 } | |
77 } | |
OLD | NEW |