summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-01-21 01:25:41 +0300
committerAndrei Karas <akaras@inbox.ru>2016-01-21 01:25:41 +0300
commit3439b247f9528a55b8d83e98011e305fd8ff4e0d (patch)
tree1bd315178602306c00b528c1709b32fbc3c27fc0
parent05611825dcdeb729f7a7da758dcc3f0d96603aef (diff)
downloadmanaplus-3439b247f9528a55b8d83e98011e305fd8ff4e0d.tar.gz
manaplus-3439b247f9528a55b8d83e98011e305fd8ff4e0d.tar.bz2
manaplus-3439b247f9528a55b8d83e98011e305fd8ff4e0d.tar.xz
manaplus-3439b247f9528a55b8d83e98011e305fd8ff4e0d.zip
Add xml writing unit tests.
-rw-r--r--src/utils/xml_unittest.cc86
1 files changed, 85 insertions, 1 deletions
diff --git a/src/utils/xml_unittest.cc b/src/utils/xml_unittest.cc
index 24a025e4a..e5c194e21 100644
--- a/src/utils/xml_unittest.cc
+++ b/src/utils/xml_unittest.cc
@@ -39,6 +39,7 @@ TEST_CASE("xml doc")
ResourceManager::init();
resourceManager->addToSearchPath("data", Append_false);
resourceManager->addToSearchPath("../data", Append_false);
+ const char *const tempXmlName = "tempxml.xml";
SECTION("load1")
{
@@ -68,7 +69,6 @@ TEST_CASE("xml doc")
REQUIRE(xmlTypeEqual(doc.rootNode(), XML_ELEMENT_NODE) == true);
REQUIRE(XmlHasProp(doc.rootNode(), "option1") == false);
REQUIRE(XmlHasProp(doc.rootNode(), "option123") == false);
- logger->log("content: '%s'", doc.rootNode().first_child().child_value());
REQUIRE(XmlHaveChildContent(doc.rootNode()) == false);
}
@@ -242,4 +242,88 @@ TEST_CASE("xml doc")
REQUIRE(XML::Document::validateXml(
"graphics/gui/testfile123.xml") == false);
}
+
+ SECTION("save1")
+ {
+ // clean
+ ::remove(tempXmlName);
+
+ // save
+ FILE *const testFile = fopen(tempXmlName, "w");
+ REQUIRE(testFile);
+ fclose(testFile);
+ const XmlTextWriterPtr writer = XmlNewTextWriterFilename(
+ tempXmlName,
+ 0);
+ XmlTextWriterSetIndent(writer, 1);
+ XmlTextWriterStartDocument(writer, nullptr, nullptr, nullptr);
+ XmlTextWriterStartElement(writer, "root");
+ XmlTextWriterEndDocument(writer);
+ XmlFreeTextWriter(writer);
+
+ // load
+ XML::Document doc(tempXmlName,
+ UseResman_false,
+ SkipError_false);
+ REQUIRE(doc.isLoaded() == true);
+ REQUIRE(doc.isValid() == true);
+ REQUIRE(doc.rootNode() != nullptr);
+ REQUIRE(xmlNameEqual(doc.rootNode(), "root") == true);
+ REQUIRE(xmlNameEqual(doc.rootNode(), "skinset123") == false);
+ REQUIRE(xmlTypeEqual(doc.rootNode(), XML_ELEMENT_NODE) == true);
+// REQUIRE(XmlHaveChildContent(doc.rootNode()) == true);
+
+ // clean again
+ ::remove(tempXmlName);
+ }
+
+ SECTION("save2")
+ {
+ // clean
+ ::remove(tempXmlName);
+
+ // save
+ FILE *const testFile = fopen(tempXmlName, "w");
+ REQUIRE(testFile);
+ fclose(testFile);
+ const XmlTextWriterPtr writer = XmlNewTextWriterFilename(
+ tempXmlName,
+ 0);
+ XmlTextWriterSetIndent(writer, 1);
+ XmlTextWriterStartDocument(writer, nullptr, nullptr, nullptr);
+ XmlTextWriterStartElement(writer, "root");
+
+ XmlTextWriterStartElement(writer, "option");
+ XmlTextWriterWriteAttribute(writer, "name", "the name");
+ XmlTextWriterWriteAttribute(writer, "value", "the value");
+ XmlTextWriterEndElement(writer);
+
+ XmlTextWriterEndDocument(writer);
+ XmlFreeTextWriter(writer);
+
+ // load
+ XML::Document doc(tempXmlName,
+ UseResman_false,
+ SkipError_false);
+ REQUIRE(doc.isLoaded() == true);
+ REQUIRE(doc.isValid() == true);
+ REQUIRE(doc.rootNode() != nullptr);
+ REQUIRE(xmlNameEqual(doc.rootNode(), "root") == true);
+ REQUIRE(xmlNameEqual(doc.rootNode(), "skinset123") == false);
+ REQUIRE(xmlTypeEqual(doc.rootNode(), XML_ELEMENT_NODE) == true);
+// REQUIRE(XmlHaveChildContent(doc.rootNode()) == true);
+ XmlNodePtr node = XML::findFirstChildByName(doc.rootNode(), "option");
+ REQUIRE(node != nullptr);
+ REQUIRE(xmlTypeEqual(node, XML_ELEMENT_NODE) == true);
+ REQUIRE(xmlNameEqual(node, "option") == true);
+ REQUIRE(XmlHaveChildContent(node) == false);
+ REQUIRE(XmlHasProp(node, "name") == true);
+ REQUIRE(XmlHasProp(node, "value") == true);
+ REQUIRE(XmlHasProp(node, "option123") == false);
+ REQUIRE(XML::getProperty(node, "name", "") == "the name");
+ REQUIRE(XML::getProperty(node, "value", "") == "the value");
+
+ // clean again
+ ::remove(tempXmlName);
+ }
}