From d76f311c9cf9e230fbd21bf08e79b348d829fb02 Mon Sep 17 00:00:00 2001 From: Daniel Espinosa Date: Thu, 7 May 2015 13:13:31 -0500 Subject: [PATCH] Fixed SerializableHashMap lowercase node's name * Added Unit Test --- gxml/SerializableGeeHashMap.vala | 2 +- test/SerializableGeeHashMapTest.vala | 28 ++++++++++++++++++++++++++++ test/gxml-performance.vala | 11 +++++++++++ test/test-collection.xml | 2 ++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala index 5176a57c..3b1bb4e0 100644 --- a/gxml/SerializableGeeHashMap.vala +++ b/gxml/SerializableGeeHashMap.vala @@ -128,7 +128,7 @@ public class GXml.SerializableHashMap : Gee.HashMap, Serializable, Ser stdout.printf (@"Node $(node.name) for type '$(get_type ().name ())'\n"); #endif var obj = Object.new (value_type); - if (n.name == ((Serializable) obj).node_name ()) { + if (n.name.down () == ((Serializable) obj).node_name ().down ()) { ((Serializable) obj).deserialize (n); @set (((SerializableMapKey) obj).get_map_key (), obj); } diff --git a/test/SerializableGeeHashMapTest.vala b/test/SerializableGeeHashMapTest.vala index 2295e563..6709d72d 100644 --- a/test/SerializableGeeHashMapTest.vala +++ b/test/SerializableGeeHashMapTest.vala @@ -353,5 +353,33 @@ class SerializableGeeHashMapTest : GXmlTest assert_not_reached (); } }); + Test.add_func ("/gxml/serializable/serializable_hash_map/deserialize-node-names", + () => { + try { + var d = new xDocument.from_path (GXmlTestConfig.TEST_DIR + "/test-collection.xml"); + var bs = new BookStore (); + bs.deserialize (d); + assert (bs.name == "The Great Book"); + assert (bs.books.size == 3); + var b = bs.books.first (); + assert (b != null); + assert (b.name != null); + assert (b.name.get_name () == "Book1"); + assert (b.year == "2015"); + assert (b.authors != null); + assert (b.authors.array != null); + assert (b.authors.array.size == 2); + assert (b.categories != null); + assert (b.categories.size == 2); + var c = b.categories.get ("Fiction"); + assert (c != null); + assert (c.name == "Fiction"); + } catch (GLib.Error e) { +#if DEBUG + GLib.message ("ERROR: "+e.message); +#endif + assert_not_reached (); + } + }); } } diff --git a/test/gxml-performance.vala b/test/gxml-performance.vala index 722bedf7..fc5da59a 100644 --- a/test/gxml-performance.vala +++ b/test/gxml-performance.vala @@ -65,6 +65,14 @@ class Inventory : SerializableObjectModel, SerializableMapDualKey public class DualKeyMap : SerializableDualKeyMap {} } +class Category : SerializableObjectModel, SerializableMapKey +{ + public string name { get; set; } + public string get_map_key () { return name; } + public override string to_string () { return "Category: "+name; } + public class Map : SerializableHashMap {} +} + class Book : SerializableContainer { public string year { get; set; } @@ -72,11 +80,14 @@ class Book : SerializableContainer public Name name { get; set; } public Authors authors { get; set; } public Inventory.DualKeyMap inventory_registers { get; set; } + public Category.Map categories { get; set; } public override string to_string () { return @"$(name.get_name ()), $(year)"; } public override void init_containers () { if (inventory_registers == null) inventory_registers = new Inventory.DualKeyMap (); + if (categories == null) + categories = new Category.Map (); } public class Array : SerializableArrayList {} } diff --git a/test/test-collection.xml b/test/test-collection.xml index 5e16b21d..a2f87f92 100644 --- a/test/test-collection.xml +++ b/test/test-collection.xml @@ -16,6 +16,8 @@ + + Book2 -- GitLab