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 spec.serialization.Object;
8 
9 import dspec.Dsl;
10 
11 import mambo.core..string;
12 import mambo.serialization.Serializer;
13 import mambo.serialization.archives.XmlArchive;
14 import spec.serialization.Util;
15 
16 Serializer serializer;
17 XmlArchive!(char) archive;
18 
19 class A
20 {
21 	override equals_t opEquals (Object other)
22 	{
23 		if (auto o = cast(A) other)
24 			return true;
25 		
26 		return false;
27 	}
28 }
29 
30 A a;
31 
32 unittest
33 {
34 	archive = new XmlArchive!(char);
35 	serializer = new Serializer(archive);
36 
37 	a = new A;
38 
39 	describe! "serialize object" in {
40 		it! "should return a serialized object" in {
41 			serializer.reset;
42 			serializer.serialize(a);
43 	
44 			assert(archive.data().containsDefaultXmlContent());
45 			assert(archive.data().contains(`<object runtimeType="spec.serialization.Object.A" type="spec.serialization.Object.A" key="0" id="0"/>`));
46 		};
47 	};
48 	
49 	describe! "deserialize object" in {
50 		it! "should return a deserialized object equal to the original object" in {
51 			auto aDeserialized = serializer.deserialize!(A)(archive.untypedData);
52 			assert(a == aDeserialized);
53 		};
54 	};
55 }