Mercurial > projects > orange
diff orange/serialization/Serializer.d @ 27:fc315d786f24 experimental
Added unit testing.
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Fri, 19 Nov 2010 11:14:55 +0100 |
parents | 78e5fef4bbf2 |
children | bffcbc8c392b |
line wrap: on
line diff
--- a/orange/serialization/Serializer.d Tue Oct 19 10:22:10 2010 +0200 +++ b/orange/serialization/Serializer.d Fri Nov 19 11:14:55 2010 +0100 @@ -956,103 +956,20 @@ return annotations; } } - - - -debug (OrangeUnitTest) -{ - import orange.serialization.archives.XMLArchive; - - enum Foo { a, b, c } - typedef int Int; - - class A {} - struct B {} - class C { string str; } - class D { int[] arr; } - class E { int[int] aa; } - class F { int value; int* ptr; } - class G { Foo foo; } - - class H - { - bool bool_; - byte byte_; - //cdouble cdouble_; // currently not suppported by to!() - //cent cent_; // currently not implemented but a reserved keyword - //cfloat cfloat_; // currently not suppported by to!() - char char_; - //creal creal_; // currently not suppported by to!() - dchar dchar_; - double double_; - float float_; - //idouble idouble_; // currently not suppported by to!() - //ifloat ifloat_; // currently not suppported by to!() - int int_; - //ireal ireal_; // currently not suppported by to!() - long long_; - real real_; - short short_; - ubyte ubyte_; - //ucent ucent_; // currently not implemented but a reserved keyword - uint uint_; - ulong ulong_; - ushort ushort_; - wchar wchar_; - - equals_t opEquals (Object other) - { - if (auto o = cast(H) other) - { - return bool_ == o.bool_ && - byte_ == o.byte_ && - //cdouble_ == o.cdouble_ && // currently not suppported by to!() - //cent_ == o.cent_ && // currently not implemented but a reserved keyword - //cfloat_ == o.cfloat_ && // currently not suppported by to!() - char_ == o.char_ && - //creal_ == o.creal_ && // currently not suppported by to!() - dchar_ == o.dchar_ && - double_ == o.double_ && - float_ == o.float_ && - //idouble_ == o.idouble_ && // currently not suppported by to!() - //ifloat_ == o.ifloat_ && // currently not suppported by to!() - int_ == o.int_ && - //ireal_ == o.ireal_ && // currently not suppported by to!() - long_ == o.long_ && - real_ == o.real_ && - short_ == o.short_ && - ubyte_ == o.ubyte_ && - //ucent_ == o.ucent_ && // currently not implemented but a reserved keyword - uint_ == o.uint_ && - ulong_ == o.ulong_ && - ushort_ == o.ushort_ && - wchar_ == o.wchar_; - } - - return false; - } - } - - class I - { - Int a; - } - +version (none): void main () { - auto archive = new XMLArchive!(char); - auto serializer = new Serializer(archive); - string data; + void serializeObject () { serializer.reset; data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <struct type="B" key="0"/> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <struct type="B" key="0"/> + </data> + </archive>`; serializer.serialize(B()); assert(archive.data == data); @@ -1062,11 +979,11 @@ { serializer.reset; data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <struct type="B" key="0"/> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <struct type="tests.Serializer.B" key="0"/> + </data> + </archive>`; serializer.serialize(B()); assert(archive.data == data); @@ -1080,13 +997,13 @@ serializer.reset; data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <object runtimeType="orange.serialization.Serializer.C" type="C" key="0" id="0"> - <string type="char" length="3" key="str" id="1">foo</string> - </object> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <object runtimeType="orange.serialization.Serializer.C" type="C" key="0" id="0"> + <string type="char" length="3" key="str" id="1">foo</string> + </object> + </data> + </archive>`; auto c = new C; c.str = "foo"; @@ -1099,23 +1016,23 @@ assert(c.str == cDeserialized.str); // Array - + serializer.reset; data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <object runtimeType="orange.serialization.Serializer.D" type="D" key="0" id="0"> - <array type="int" length="6" key="arr" id="1"> - <int key="0">27</int> - <int key="1">382</int> - <int key="2">283</int> - <int key="3">3820</int> - <int key="4">32</int> - <int key="5">832</int> - </array> - </object> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <object runtimeType="orange.serialization.Serializer.D" type="D" key="0" id="0"> + <array type="int" length="6" key="arr" id="1"> + <int key="0">27</int> + <int key="1">382</int> + <int key="2">283</int> + <int key="3">3820</int> + <int key="4">32</int> + <int key="5">832</int> + </array> + </object> + </data> + </archive>`; auto d = new D; d.arr = [27, 382, 283, 3820, 32, 832]; @@ -1131,38 +1048,38 @@ serializer.reset(); data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <object runtimeType="orange.serialization.Serializer.E" type="E" key="0" id="0"> - <associativeArray keyType="int" valueType="int" length="4" key="aa"> - <key key="0"> - <int key="0">1</int> - </key> - <value key="0"> - <int key="0">2</int> - </value> - <key key="1"> - <int key="1">3</int> - </key> - <value key="1"> - <int key="1">4</int> - </value> - <key key="2"> - <int key="2">6</int> - </key> - <value key="2"> - <int key="2">7</int> - </value> - <key key="3"> - <int key="3">39</int> - </key> - <value key="3"> - <int key="3">472</int> - </value> - </associativeArray> - </object> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <object runtimeType="orange.serialization.Serializer.E" type="E" key="0" id="0"> + <associativeArray keyType="int" valueType="int" length="4" key="aa"> + <key key="0"> + <int key="0">1</int> + </key> + <value key="0"> + <int key="0">2</int> + </value> + <key key="1"> + <int key="1">3</int> + </key> + <value key="1"> + <int key="1">4</int> + </value> + <key key="2"> + <int key="2">6</int> + </key> + <value key="2"> + <int key="2">7</int> + </value> + <key key="3"> + <int key="3">39</int> + </key> + <value key="3"> + <int key="3">472</int> + </value> + </associativeArray> + </object> + </data> + </archive>`; auto e = new E; e.aa = [3 : 4, 1 : 2, 39 : 472, 6 : 7]; @@ -1178,16 +1095,16 @@ serializer.reset(); data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <object runtimeType="orange.serialization.Serializer.F" type="F" key="0" id="0"> - <pointer key="ptr" id="2"> - <int key="1">9</int> - </pointer> - <int key="value">9</int> - </object> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <object runtimeType="orange.serialization.Serializer.F" type="F" key="0" id="0"> + <pointer key="ptr" id="2"> + <int key="1">9</int> + </pointer> + <int key="value">9</int> + </object> + </data> + </archive>`; auto f = new F; f.value = 9; @@ -1204,13 +1121,13 @@ serializer.reset(); data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <object runtimeType="orange.serialization.Serializer.G" type="G" key="0" id="0"> - <enum type="Foo" baseType="int" key="foo">1</enum> - </object> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <object runtimeType="orange.serialization.Serializer.G" type="G" key="0" id="0"> + <enum type="Foo" baseType="int" key="foo">1</enum> + </object> + </data> + </archive>`; auto g = new G; g.foo = Foo.b; @@ -1226,27 +1143,27 @@ serializer.reset; data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <object runtimeType="orange.serialization.Serializer.H" type="H" key="0" id="0"> - <byte key="byte_">1</byte> - <char key="char_">a</char> - <dchar key="dchar_">b</dchar> - <double key="double_">0</double> - <float key="float_">0</float> - <int key="int_">1</int> - <long key="long_">1</long> - <real key="real_">0</real> - <short key="short_">1</short> - <ubyte key="ubyte_">1</ubyte> - <uint key="uint_">1</uint> - <ulong key="ulong_">1</ulong> - <ushort key="ushort_">1</ushort> - <wchar key="wchar_">c</wchar> - <bool key="bool_">true</bool> - </object> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <object runtimeType="orange.serialization.Serializer.H" type="H" key="0" id="0"> + <byte key="byte_">1</byte> + <char key="char_">a</char> + <dchar key="dchar_">b</dchar> + <double key="double_">0</double> + <float key="float_">0</float> + <int key="int_">1</int> + <long key="long_">1</long> + <real key="real_">0</real> + <short key="short_">1</short> + <ubyte key="ubyte_">1</ubyte> + <uint key="uint_">1</uint> + <ulong key="ulong_">1</ulong> + <ushort key="ushort_">1</ushort> + <wchar key="wchar_">c</wchar> + <bool key="bool_">true</bool> + </object> + </data> + </archive>`; auto h = new H; @@ -1284,15 +1201,15 @@ serializer.reset(); data = `<?xml version="1.0" encoding="UTF-8"?> -<archive type="org.dsource.orange.xml" version="1.0.0"> - <data> - <object runtimeType="orange.serialization.Serializer.I" type="I" key="0" id="0"> - <typedef type="Int" key="a"> - <int key="1">1</int> - </typedef> - </object> - </data> -</archive>`; + <archive type="org.dsource.orange.xml" version="1.0.0"> + <data> + <object runtimeType="orange.serialization.Serializer.I" type="I" key="0" id="0"> + <typedef type="Int" key="a"> + <int key="1">1</int> + </typedef> + </object> + </data> + </archive>`; auto i = new I; i.a = 1; @@ -1306,4 +1223,3 @@ println("unit tests successful"); } -} \ No newline at end of file