Mercurial > projects > orange
diff tests/AssociativeArrayReference.d @ 40:02dbd18b7fe9
Moved all tests into its own modules.
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sat, 06 Aug 2011 13:27:21 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/AssociativeArrayReference.d Sat Aug 06 13:27:21 2011 +0200 @@ -0,0 +1,75 @@ +/** + * Copyright: Copyright (c) 2011 Jacob Carlborg. All rights reserved. + * Authors: Jacob Carlborg + * Version: Initial created: Aug 6, 2011 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module tests.AssociativeArrayReference; + +import orange.core.string; +import orange.serialization.Serializer; +import orange.serialization.archives.XMLArchive; +import orange.test.UnitTester; +import tests.Util; + +Serializer serializer; +XMLArchive!(char) archive; + +class K +{ + int[int] a; + int[int] b; +} + +K k; + +unittest +{ + archive = new XMLArchive!(char); + serializer = new Serializer(archive); + + k = new K; + k.a = [3 : 4, 1 : 2, 39 : 472, 6 : 7]; + k.b = k.a; + + describe("serialize associative array references") in { + it("should return a serialized associative array and a serialized reference") in { + serializer.reset(); + serializer.serialize(k); + + assert(archive.data().containsDefaultXmlContent()); + assert(archive.data().containsXmlTag("object", `runtimeType="tests.AssociativeArrayReference.K" type="K" key="0" id="0"`)); + version (Tango) assert(archive.data().containsXmlTag("associativeArray", `keyType="int" valueType="int" length="4" key="a" id="1"`)); + + assert(archive.data().containsXmlTag("key", `key="0"`)); + assert(archive.data().containsXmlTag("int", `key="0" id="2"`, "1")); + assert(archive.data().containsXmlTag("value", `key="0"`)); + assert(archive.data().containsXmlTag("int", `key="0" id="3"`, "2")); + + assert(archive.data().containsXmlTag("key", `key="1"`)); + assert(archive.data().containsXmlTag("int", `key="1" id="4"`, "3")); + assert(archive.data().containsXmlTag("value", `key="1"`)); + assert(archive.data().containsXmlTag("int", `key="1" id="5"`, "4")); + + assert(archive.data().containsXmlTag("key", `key="2"`)); + assert(archive.data().containsXmlTag("int", `key="2" id="6"`, "6")); + assert(archive.data().containsXmlTag("value", `key="2"`)); + assert(archive.data().containsXmlTag("int", `key="2" id="7"`, "7")); + + assert(archive.data().containsXmlTag("key", `key="3"`)); + assert(archive.data().containsXmlTag("int", `key="3" id="8"`, "39")); + assert(archive.data().containsXmlTag("value", `key="3"`)); + assert(archive.data().containsXmlTag("int", `key="3" id="9"`, "472")); + + assert(archive.data().containsXmlTag("reference", `key="b"`, "1")); + }; + }; + + describe("deserialize associative array references") in { + it("should return two deserialized associative arrays pointing to the same data") in { + auto kDeserialized = serializer.deserialize!(K)(archive.untypedData); + + assert(kDeserialized.a is kDeserialized.b); + }; + }; +} \ No newline at end of file