Mercurial > projects > orange
changeset 47:9c9bbef6bf5e
Implemented unarchiveBaseClass. Enabled the unit tests for deserialize subclasses.
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sat, 13 Aug 2011 15:23:03 +0200 |
parents | d6fbd0b3586e |
children | a7dea44fa9e3 |
files | orange/serialization/Serializer.d orange/serialization/archives/Archive.d orange/serialization/archives/XMLArchive.d tests/Subclass.d |
diffstat | 4 files changed, 18 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/orange/serialization/Serializer.d Tue Aug 09 11:38:50 2011 +0200 +++ b/orange/serialization/Serializer.d Sat Aug 13 15:23:03 2011 +0200 @@ -792,7 +792,7 @@ static if (!is(Base == Object)) { - archive.unarchiveBaseClass!(Base)(nextKey); + archive.unarchiveBaseClass(nextKey); Base base = value; objectStructDeserializeHelper(base); }
--- a/orange/serialization/archives/Archive.d Tue Aug 09 11:38:50 2011 +0200 +++ b/orange/serialization/archives/Archive.d Sat Aug 13 15:23:03 2011 +0200 @@ -138,7 +138,7 @@ ushort unarchiveEnumUshort (string key); wchar unarchiveEnumWchar (string key); - // Object unarchiveBaseClass (string key); + void unarchiveBaseClass (string key); // void unarchiveNull (string key); void unarchiveObject (string key, out Id id, out Object result, void delegate () dg); Id unarchivePointer (string key, void delegate () dg);
--- a/orange/serialization/archives/XMLArchive.d Tue Aug 09 11:38:50 2011 +0200 +++ b/orange/serialization/archives/XMLArchive.d Sat Aug 13 15:23:03 2011 +0200 @@ -701,6 +701,14 @@ return fromData!(T)(element.value); } + void unarchiveBaseClass (string key) + { + auto element = getElement(Tags.baseTag, key); + + if (element.isValid) + lastElement = element; + } + void unarchiveObject (string key, out Id id, out Object result, void delegate () dg) { restore(lastElement) in {
--- a/tests/Subclass.d Tue Aug 09 11:38:50 2011 +0200 +++ b/tests/Subclass.d Sat Aug 13 15:23:03 2011 +0200 @@ -49,12 +49,12 @@ }; }; - // describe("deserialize class with a base class") in { - // it("should return a deserialized string equal to the original string") in { - // auto subDeserialized = serializer.deserialize!(Sub)(archive.untypedData); - // - // assert(sub.a == subDeserialized.a); - // assert(sub.b == subDeserialized.b); - // }; - // }; + describe("deserialize class with a base class") in { + it("should return a deserialized string equal to the original string") in { + auto subDeserialized = serializer.deserialize!(Sub)(archive.untypedData); + + assert(sub.a == subDeserialized.a); + assert(sub.b == subDeserialized.b); + }; + }; } \ No newline at end of file