annotate tests/BaseClass.d @ 51:70df72d2299a default tip

Added unit tests for events.
author Jacob Carlborg <doob@me.com>
date Sat, 13 Aug 2011 17:06:35 +0200
parents beb4afce2f3e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
1 /**
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
2 * Copyright: Copyright (c) 2011 Jacob Carlborg. All rights reserved.
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
3 * Authors: Jacob Carlborg
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
4 * Version: Initial created: Aug 7, 2011
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
6 */
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
7 module tests.BaseClass;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
8
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
9 import orange.core.string;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
10 import orange.serialization.Serializer;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
11 import orange.serialization.archives.XMLArchive;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
12 import orange.test.UnitTester;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
13 import tests.Util;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
14
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
15 Serializer serializer;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
16 XMLArchive!(char) archive;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
17
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
18 class Base
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
19 {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
20 int a;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
21
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
22 int getA ()
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
23 {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
24 return a;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
25 }
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
26
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
27 int getB ()
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
28 {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
29 return a;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
30 }
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
31 }
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
32
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
33 class Sub : Base
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
34 {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
35 int b;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
36
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
37 int getB ()
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
38 {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
39 return b;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
40 }
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
41 }
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
42
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
43 Sub sub;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
44 Base base;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
45
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
46 unittest
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
47 {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
48 archive = new XMLArchive!(char);
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
49 serializer = new Serializer(archive);
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
50
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
51 sub = new Sub;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
52 sub.a = 3;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
53 sub.b = 4;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
54 base = sub;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
55
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
56 describe("serialize subclass through a base class reference") in {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
57 it("should return serialized subclass with the static type \"Base\" and the runtime type \"tests.BaseClass.Sub\"") in {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
58 serializer.reset;
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
59 serializer.register!(Sub);
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
60 serializer.serialize(base);
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
61
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
62 assert(archive.data().containsDefaultXmlContent());
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
63 assert(archive.data().containsXmlTag("object", `runtimeType="tests.BaseClass.Sub" type="Base" key="0" id="0"`));
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
64 assert(archive.data().containsXmlTag("int", `key="b" id="1"`, "4"));
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
65 assert(archive.data().containsXmlTag("base", `type="Base" key="1" id="2"`));
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
66 assert(archive.data().containsXmlTag("int", `key="a" id="3"`, "3"));
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
67 };
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
68 };
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
69
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
70 describe("deserialize subclass through a base class reference") in {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
71 it("should return a deserialized subclass with the static type \"Base\" and the runtime type \"tests.BaseClass.Sub\"") in {
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
72 auto subDeserialized = serializer.deserialize!(Base)(archive.untypedData);
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
73
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
74 assert(sub.a == subDeserialized.getA);
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
75 assert(sub.b == subDeserialized.getB);
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
76 };
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
77 };
beb4afce2f3e Fixed (de)serializing through base class reference, including unit test.
Jacob Carlborg <doob@me.com>
parents:
diff changeset
78 }