[gxml] Fixes on SerializableBool implementation and on SerializableProperty interface
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Fixes on SerializableBool implementation and on SerializableProperty interface
- Date: Tue, 29 Sep 2015 21:36:21 +0000 (UTC)
commit 42fff0eb58ff266dc16975543557461f438f45f3
Author: Daniel Espinosa <esodan gmail com>
Date: Sat Sep 26 17:58:37 2015 -0700
Fixes on SerializableBool implementation and on SerializableProperty interface
gxml/SerializableBool.vala | 9 +++++-
test/SerializablePropertyBoolTest.vala | 48 ++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 1 deletions(-)
---
diff --git a/gxml/SerializableBool.vala b/gxml/SerializableBool.vala
index d16dea4..60509e4 100644
--- a/gxml/SerializableBool.vala
+++ b/gxml/SerializableBool.vala
@@ -30,8 +30,15 @@ public class GXml.SerializableBool : SerializableObjectModel, SerializableProper
private string _val = null;
private string _name = null;
public SerializableBool.with_name (string name) { _name = name; }
+ public bool get_value () { return bool.parse (_val); }
+ public void set_value (bool val) { _val = val.to_string (); }
public string get_serializable_property_value () { return _val; }
- public void set_serializable_property_value (string val) { _val = (bool.parse (val)).to_string (); }
+ public void set_serializable_property_value (string? val) {
+ if (val == null)
+ _val = val;
+ else
+ _val = (bool.parse (val)).to_string ();
+ }
public string get_serializable_property_name () { return _name; }
public void set_serializable_property_name (string name) { _name = name; }
public override GXml.Node? serialize (GXml.Node node) throws GLib.Error
diff --git a/test/SerializablePropertyBoolTest.vala b/test/SerializablePropertyBoolTest.vala
index e2ca3e1..cc59e1f 100644
--- a/test/SerializablePropertyBoolTest.vala
+++ b/test/SerializablePropertyBoolTest.vala
@@ -40,6 +40,7 @@ class SerializablePropertyBoolTest : GXmlTest {
var bn = new BoolNode ();
var doc = new xDocument ();
bn.serialize (doc);
+ Test.message ("XML:\n"+doc.to_string ());
var element = doc.document_element;
var b = element.get_attribute_node ("boolean");
assert (b == null);
@@ -52,5 +53,52 @@ class SerializablePropertyBoolTest : GXmlTest {
assert_not_reached ();
}
});
+ Test.add_func ("/gxml/serializable/Bool/changes",
+ () => {
+ try {
+ var bn = new BoolNode ();
+ var doc = new xDocument ();
+ bn.boolean = new SerializableBool.with_name ("boolean");
+ bn.serialize (doc);
+ Test.message ("XML:\n"+doc.to_string ());
+ var element = doc.document_element;
+ var b = element.get_attribute_node ("boolean");
+ assert (b == null);
+ var s = element.get_attribute_node ("name");
+ assert (s == null);
+ var i = element.get_attribute_node ("integer");
+ assert (i.value == "0");
+ // Change values
+ // set to TRUE
+ bn.boolean.set_value (true);
+ var doc2 = new xDocument ();
+ bn.serialize (doc2);
+ Test.message ("XML2:\n"+doc2.to_string ());
+ var element2 = doc2.document_element;
+ var b2 = element2.get_attribute_node ("boolean");
+ assert (b2 != null);
+ assert (b2.value == "true");
+ // set to FALSE
+ bn.boolean.set_value (false);
+ var doc3 = new xDocument ();
+ bn.serialize (doc3);
+ Test.message ("XML3:\n"+doc3.to_string ());
+ var element3 = doc3.document_element;
+ var b3 = element3.get_attribute_node ("boolean");
+ assert (b3 != null);
+ assert (b3.value == "false");
+ // set to NULL/IGNORE
+ bn.boolean.set_serializable_property_value (null);
+ var doc4= new xDocument ();
+ bn.serialize (doc4);
+ Test.message ("XML3:\n"+doc4.to_string ());
+ var element4 = doc4.document_element;
+ var b4 = element4.get_attribute_node ("boolean");
+ assert (b4 == null);
+ } catch (GLib.Error e) {
+ Test.message (@"ERROR: $(e.message)");
+ assert_not_reached ();
+ }
+ });
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]