[gxml] Fixed SerializableHashMap lowercase node's name
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Fixed SerializableHashMap lowercase node's name
- Date: Thu, 7 May 2015 18:15:37 +0000 (UTC)
commit d76f311c9cf9e230fbd21bf08e79b348d829fb02
Author: Daniel Espinosa <esodan gmail com>
Date: Thu May 7 13:13:31 2015 -0500
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 deletions(-)
---
diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala
index 5176a57..3b1bb4e 100644
--- a/gxml/SerializableGeeHashMap.vala
+++ b/gxml/SerializableGeeHashMap.vala
@@ -128,7 +128,7 @@ public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, 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<K>) obj).get_map_key (), obj);
}
diff --git a/test/SerializableGeeHashMapTest.vala b/test/SerializableGeeHashMapTest.vala
index 2295e56..6709d72 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 722bedf..fc5da59 100644
--- a/test/gxml-performance.vala
+++ b/test/gxml-performance.vala
@@ -65,6 +65,14 @@ class Inventory : SerializableObjectModel, SerializableMapDualKey<int,string>
public class DualKeyMap : SerializableDualKeyMap<int, string, Inventory> {}
}
+class Category : SerializableObjectModel, SerializableMapKey<string>
+{
+ public string name { get; set; }
+ public string get_map_key () { return name; }
+ public override string to_string () { return "Category: "+name; }
+ public class Map : SerializableHashMap<string,Category> {}
+}
+
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<Book> {}
}
diff --git a/test/test-collection.xml b/test/test-collection.xml
index 5e16b21..a2f87f9 100644
--- a/test/test-collection.xml
+++ b/test/test-collection.xml
@@ -16,6 +16,8 @@
<inventory number="1" row="5" inventory="K002"/>
<inventory number="1" row="5" inventory="K003"/>
<inventory number="1" row="5" inventory="K004"/>
+ <category name="Fiction"/>
+ <category name="Motivational"/>
</book>
<book year="2015" isbn="ISBN0000001">
<name>Book2</name>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]