[gxml] Implemented TwDocument.to_string(). Added Unit Test
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Implemented TwDocument.to_string(). Added Unit Test
- Date: Sat, 9 May 2015 03:46:51 +0000 (UTC)
commit d555388d765da4dca42bf370eda7102c40a4edb6
Author: Daniel Espinosa <esodan gmail com>
Date: Fri May 8 22:45:34 2015 -0500
Implemented TwDocument.to_string(). Added Unit Test
gxml/SerializableObjectModel.vala | 2 +-
gxml/TwDocument.vala | 31 +++++++++++++---------------
gxml/xlibxml.c | 5 ++++
gxml/xlibxml.h | 1 +
test/SerializableObjectModel-Tw-Test.vala | 4 +-
test/TwDocumentTest.vala | 13 ++++++++++++
vapi/xlibxml-1.0.vapi | 2 +
7 files changed, 38 insertions(+), 20 deletions(-)
---
diff --git a/gxml/SerializableObjectModel.vala b/gxml/SerializableObjectModel.vala
index fa2648d..5ae1aff 100644
--- a/gxml/SerializableObjectModel.vala
+++ b/gxml/SerializableObjectModel.vala
@@ -183,7 +183,7 @@ public abstract class GXml.SerializableObjectModel : Object, Serializable
string t = "";
if (serialized_xml_node_value != null)
t = serialized_xml_node_value;
- var tn = element.content = t;
+ element.content = t;
#if DEBUG
stdout.printf (@"SET CONTENT FOR: $(get_type ().name ()): $(element.name): content '$t'\n");
#endif
diff --git a/gxml/TwDocument.vala b/gxml/TwDocument.vala
index 3f114fc..fd03105 100644
--- a/gxml/TwDocument.vala
+++ b/gxml/TwDocument.vala
@@ -86,12 +86,16 @@ public class GXml.TwDocument : GXml.TwNode, GXml.Document
public bool save_to (GLib.File f, GLib.Cancellable? cancellable = null)
{
var tw = new Xml.TextWriter.filename (f.get_path ());
+ write_document (tw);
+ return true;
+ }
+ public virtual void write_document (Xml.TextWriter tw)
+ {
tw.start_document ();
tw.set_indent (indent);
// Root
if (root == null) {
tw.end_document ();
- return true;
}
#if DEBUG
GLib.message ("Starting writting Document Root node");
@@ -110,9 +114,8 @@ public class GXml.TwDocument : GXml.TwNode, GXml.Document
#endif
tw.end_document ();
tw.flush ();
- return true;
}
- public void start_node (Xml.TextWriter tw, GXml.Node node)
+ public virtual void start_node (Xml.TextWriter tw, GXml.Node node)
{
int size = 0;
#if DEBUG
@@ -184,21 +187,15 @@ public class GXml.TwDocument : GXml.TwNode, GXml.Document
}
public override string to_string ()
{
- GLib.message ("TwDocument: to_string ()");
- try {
- var f = GLib.File.new_tmp (null, null);
- save_to (f);
- uint8 buffer[10000];
- var istream = f.read ();
- istream.read (buffer);
- istream.close ();
- f.delete ();
- return (string) buffer;
- } catch (GLib.Error e) {
#if DEBUG
- GLib.message ("Error on stringify this TwDocuent: "+e.message);
+ GLib.message ("TwDocument: to_string ()");
#endif
- }
- return "";
+ Xml.Doc doc = new Xml.Doc ();
+ Xml.TextWriter* tw = Xmlx.new_text_writer_doc (ref doc);
+ write_document (tw);
+ string str;
+ int size;
+ doc.dump_memory (out str, out size);
+ return str;
}
}
diff --git a/gxml/xlibxml.c b/gxml/xlibxml.c
index c9371a4..7c1ecdc 100644
--- a/gxml/xlibxml.c
+++ b/gxml/xlibxml.c
@@ -45,3 +45,8 @@ xmlNsPtr* gxml_doc_get_ns_list (xmlDoc* doc, xmlNode* node)
{
return xmlGetNsList (doc, node);
}
+
+xmlTextWriterPtr gxml_new_text_writer_doc (xmlDoc** doc)
+{
+ return xmlNewTextWriterDoc (doc, 0);
+}
diff --git a/gxml/xlibxml.h b/gxml/xlibxml.h
index da25682..82daed1 100644
--- a/gxml/xlibxml.h
+++ b/gxml/xlibxml.h
@@ -23,6 +23,7 @@
#include <libxml/tree.h>
#include <libxml/parser.h>
+#include <libxml/xmlwriter.h>
void* gxml_doc_get_intsubset_entities (xmlDoc *doc);
int gxml_validate_name (xmlChar* name, int space);
diff --git a/test/SerializableObjectModel-Tw-Test.vala b/test/SerializableObjectModel-Tw-Test.vala
index 361b98a..d7bcf29 100644
--- a/test/SerializableObjectModel-Tw-Test.vala
+++ b/test/SerializableObjectModel-Tw-Test.vala
@@ -285,9 +285,9 @@ class SerializableObjectModelTwTest : GXmlTest
Test.add_func ("/gxml/tw/serializable/object_model/set_namespace", () => {
try {
var ns = new NameSpace ();
- var doc = new xDocument ();
+ var doc = new TwDocument ();
ns.serialize (doc);
- assert (doc.document_element.to_string () == "<gxml:namespace
xmlns:gxml=\"http://www.gnome.org/GXml\"/>");
+ assert (doc.root.to_string () == "<gxml:namespace xmlns:gxml=\"http://www.gnome.org/GXml\"/>");
} catch (GLib.Error e) {
#if DEBUG
GLib.message ("ERROR: "+e.message);
diff --git a/test/TwDocumentTest.vala b/test/TwDocumentTest.vala
index 5ba7ebb..a9bfa4a 100644
--- a/test/TwDocumentTest.vala
+++ b/test/TwDocumentTest.vala
@@ -302,5 +302,18 @@ class TwDocumentTest : GXmlTest {
assert_not_reached ();
}
});
+
+ Test.add_func ("/gxml/tw-document/to_string", () => {
+ var doc = new TwDocument ();
+ var r = doc.create_element ("root");
+ doc.childs.add (r);
+#if DEBUG
+ GLib.message (@"$(doc)");
+#endif
+ GLib.message (@"\n$(doc)");
+ string str = doc.to_string ();
+ assert ("<?xml version=\"1.0\"?>" in str);
+ assert ("<root/>" in str);
+ });
}
}
diff --git a/vapi/xlibxml-1.0.vapi b/vapi/xlibxml-1.0.vapi
index c524a76..a5a7801 100644
--- a/vapi/xlibxml-1.0.vapi
+++ b/vapi/xlibxml-1.0.vapi
@@ -36,4 +36,6 @@ namespace Xmlx {
public static Xml.Error* get_last_error ();
[CCode (cname = "gxml_doc_get_ns_list", array_null_terminated = true, cheader_filename = "gxml/xlibxml.h")]
public static Xml.Ns*[] doc_get_ns_list (Xml.Doc* doc, Xml.Node* node);
+ [CCode (cname = "gxml_new_text_writer_doc", cheader_filename = "gxml/xlibxml.h")]
+ public static Xml.TextWriter new_text_writer_doc (ref Xml.Doc doc);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]