[gxml] Fixed SerializableHashMap lowercase node's name



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]