1 /**
2  * Copyright: Copyright (c) 2011 Jacob Carlborg. All rights reserved.
3  * Authors: Jacob Carlborg
4  * Version: Initial created: Aug 6, 2011
5  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
6  */
7 module tests.Event;
8 
9 import orange.serialization.Serializer;
10 import orange.serialization.Events;
11 import orange.serialization.archives.XmlArchive;
12 import orange.test.UnitTester;
13 import tests.Util;
14 
15 Serializer serializer;
16 XmlArchive!(char) archive;
17 
18 int[] arr;
19 
20 class Foo
21 {
22 
23     void serializing ()
24     {
25         arr ~= 1;
26     }
27 
28     void serialized ()
29     {
30         arr ~= 2;
31     }
32 
33     void deserializing ()
34     {
35         arr ~= 3;
36     }
37 
38     void deserialized ()
39     {
40         arr ~= 4;
41     }
42 
43     mixin OnSerializing!(serializing);
44     mixin OnSerialized!(serialized);
45     mixin OnDeserializing!(deserializing);
46     mixin OnDeserialized!(deserialized);
47 }
48 
49 unittest
50 {
51     archive = new XmlArchive!(char);
52     serializer = new Serializer(archive);
53 
54     describe("serialization events") in {
55         it("all four events should be triggered when serializing and deserializing") in {
56             serializer.serialize(new Foo);
57             serializer.deserialize!(Foo)(archive.untypedData);
58 
59             assert(arr == [1, 2, 3, 4]);
60         };
61     };
62 }