[gxml] Fixed SerializableTreeMap lowercase node's name



commit da72e81b03bda6fcd691352e28f7b651f650f1f0
Author: Daniel Espinosa <esodan gmail com>
Date:   Thu May 7 13:22:12 2015 -0500

    Fixed SerializableTreeMap lowercase node's name
    
    * Added Unit Test

 gxml/SerializableGeeTreeMap.vala     |    2 +-
 test/SerializableGeeTreeMapTest.vala |   29 +++++++++++++++++++++++++++++
 test/gxml-performance.vala           |   13 +++++++++++++
 test/test-collection.xml             |    2 ++
 4 files changed, 45 insertions(+), 1 deletions(-)
---
diff --git a/gxml/SerializableGeeTreeMap.vala b/gxml/SerializableGeeTreeMap.vala
index 72d4323..c0639d6 100644
--- a/gxml/SerializableGeeTreeMap.vala
+++ b/gxml/SerializableGeeTreeMap.vala
@@ -131,7 +131,7 @@ public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<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/SerializableGeeTreeMapTest.vala b/test/SerializableGeeTreeMapTest.vala
index e5654bc..d3a1f13 100644
--- a/test/SerializableGeeTreeMapTest.vala
+++ b/test/SerializableGeeTreeMapTest.vala
@@ -247,5 +247,34 @@ class SerializableGeeTreeMapTest : GXmlTest
         assert_not_reached ();
       }
     });
+    Test.add_func ("/gxml/serializable/serializable_tree_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.resumes != null);
+        assert (b.resumes.size == 2);
+        var r = b.resumes.get ("II");
+        assert (r != null);
+        assert (r.chapter == "II");
+        assert (r.text == "Nothing to say");
+      } 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 fc5da59..bdff794 100644
--- a/test/gxml-performance.vala
+++ b/test/gxml-performance.vala
@@ -73,6 +73,16 @@ class Category : SerializableObjectModel, SerializableMapKey<string>
   public class Map : SerializableHashMap<string,Category> {}
 }
 
+
+class Resume : SerializableObjectModel, SerializableMapKey<string>
+{
+  public string chapter { get; set; }
+  public string text { get; set; }
+  public string get_map_key () { return chapter; }
+  public override string to_string () { return "Chapter: "+chapter+"\n"+text; }
+  public class Map : SerializableTreeMap<string,Resume> {}
+}
+
 class Book : SerializableContainer
 {
   public string year { get; set; }
@@ -81,6 +91,7 @@ class Book : SerializableContainer
   public Authors authors { get; set; }
   public Inventory.DualKeyMap inventory_registers { get; set; }
   public Category.Map categories { get; set; }
+  public Resume.Map resumes { get; set; }
   public override string to_string () { return @"$(name.get_name ()), $(year)"; }
   public override void init_containers ()
   {
@@ -88,6 +99,8 @@ class Book : SerializableContainer
       inventory_registers = new Inventory.DualKeyMap ();
     if (categories == null)
       categories = new Category.Map ();
+    if (resumes == null)
+      resumes = new Resume.Map ();
   }
   public class Array : SerializableArrayList<Book> {}
 }
diff --git a/test/test-collection.xml b/test/test-collection.xml
index a2f87f9..3bc0258 100644
--- a/test/test-collection.xml
+++ b/test/test-collection.xml
@@ -18,6 +18,8 @@
   <inventory number="1" row="5" inventory="K004"/>
   <category name="Fiction"/>
   <category name="Motivational"/>
+  <resume chapter = "I" text="Nothing to say"/>
+  <resume chapter = "II" text="Nothing to say"/>
  </book>
  <book year="2015" isbn="ISBN0000001">
   <name>Book2</name>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]