Mercurial > projects > orange
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 |
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 } |