8e6f238f86
Replace === null with == null. BUG=http://dartbug.com/6380 Review URL: https://codereview.chromium.org//11361190 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14794 260f80e4-7a28-3924-810f-c04153c831b5
78 lines
2.2 KiB
Dart
78 lines
2.2 KiB
Dart
// Copyright (c) 2011, 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 without spawning
|
|
// isolates.
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Serialization test.
|
|
// ---------------------------------------------------------------------------
|
|
library SerializationTest;
|
|
import 'dart:isolate';
|
|
|
|
main() {
|
|
// TODO(sigmund): fix once we can disable privacy for testing (bug #1882)
|
|
testAllTypes(TestingOnly.copy);
|
|
testAllTypes(TestingOnly.serialize);
|
|
}
|
|
|
|
void testAllTypes(Function f) {
|
|
copyAndVerify(0, f);
|
|
copyAndVerify(499, f);
|
|
copyAndVerify(true, f);
|
|
copyAndVerify(false, f);
|
|
copyAndVerify("", f);
|
|
copyAndVerify("foo", f);
|
|
copyAndVerify([], f);
|
|
copyAndVerify([1, 2], f);
|
|
copyAndVerify([[]], f);
|
|
copyAndVerify([1, []], f);
|
|
copyAndVerify({}, f);
|
|
copyAndVerify({ 'a': 3 }, f);
|
|
copyAndVerify({ 'a': 3, 'b': 5, 'c': 8 }, f);
|
|
copyAndVerify({ 'a': [1, 2] }, f);
|
|
copyAndVerify({ 'b': { 'c' : 99 } }, f);
|
|
copyAndVerify([ { 'a': 499 }, { 'b': 42 } ], f);
|
|
|
|
var port = new ReceivePort();
|
|
Expect.throws(() => f(port));
|
|
port.close();
|
|
|
|
var a = [ 1, 3, 5 ];
|
|
var b = { 'b': 49 };
|
|
var c = [ a, b, a, b, a ];
|
|
var copied = f(c);
|
|
verify(c, copied);
|
|
Expect.isFalse(identical(c, copied));
|
|
Expect.identical(copied[0], copied[2]);
|
|
Expect.identical(copied[0], copied[4]);
|
|
Expect.identical(copied[1], copied[3]);
|
|
}
|
|
|
|
void copyAndVerify(o, Function f) {
|
|
var copy = f(o);
|
|
verify(o, copy);
|
|
}
|
|
|
|
void verify(o, copy) {
|
|
if ((o is bool) || (o is num) || (o is String)) {
|
|
Expect.equals(o, copy);
|
|
} else if (o is List) {
|
|
Expect.isTrue(copy is List);
|
|
Expect.equals(o.length, copy.length);
|
|
for (int i = 0; i < o.length; i++) {
|
|
verify(o[i], copy[i]);
|
|
}
|
|
} else if (o is Map) {
|
|
Expect.isTrue(copy is Map);
|
|
Expect.equals(o.length, copy.length);
|
|
o.forEach((key, value) {
|
|
Expect.isTrue(copy.containsKey(key));
|
|
verify(value, copy[key]);
|
|
});
|
|
} else {
|
|
Expect.fail("Unexpected object encountered");
|
|
}
|
|
}
|