📄 xmlparsertestcase.cpp
字号:
#include "XMLParserTestCase.h"#include <iostream>#include "libxml/parser.h"#include "libxml/xpath.h"#include "Log.h"#include "XMLParserException.h"using namespace std;using namespace Davis;CPPUNIT_TEST_SUITE_REGISTRATION( XMLParserTestCase );XMLParserTestCase::XMLParserTestCase(){}XMLParserTestCase::~XMLParserTestCase(){}void XMLParserTestCase::CreateXMLFile(){ xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0"); xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST"root"); xmlDocSetRootElement(doc,root_node); xmlNodePtr node = xmlNewNode(NULL, BAD_CAST "Printers"); xmlAddChild(root_node,node); xmlNodePtr printer1 = xmlNewNode(NULL, BAD_CAST "Printer1"); xmlAddChild(node,printer1); xmlNodePtr port1 = xmlNewNode(NULL, BAD_CAST "Port"); xmlNodePtr port1_content = xmlNewText(BAD_CAST"123"); xmlAddChild(printer1,port1); xmlAddChild(port1,port1_content); xmlNewProp(port1,BAD_CAST"name",BAD_CAST "Port1"); xmlNodePtr printer2 = xmlNewNode(NULL, BAD_CAST "Printer2"); xmlAddChild(node,printer2); xmlNodePtr port2 = xmlNewNode(NULL, BAD_CAST "Port"); xmlNodePtr port2_content = xmlNewText(BAD_CAST"456"); xmlAddChild(printer2,port2); xmlAddChild(port2,port2_content); xmlNewProp(port2,BAD_CAST"name",BAD_CAST "Port2"); xmlNodePtr printer3 = xmlNewNode(NULL, BAD_CAST "Printer3"); xmlAddChild(node,printer3); xmlNodePtr port3 = xmlNewNode(NULL, BAD_CAST "Port"); xmlNodePtr port3_content = xmlNewText(BAD_CAST"789"); xmlAddChild(printer3,port3); xmlAddChild(port3,port3_content); xmlNewProp(port3,BAD_CAST"name",BAD_CAST "Port3"); int nRel = xmlSaveFormatFileEnc("XPathConfig.xml",doc,"UTF-8",1); if (nRel != -1) { Log::log.info("Save xml file successfully."); } else { Log::log.error("Fail to save xml file."); }}void XMLParserTestCase::setUp(){ CreateXMLFile();}void XMLParserTestCase::tearDown(){ delete xmlConfig;} void XMLParserTestCase::testOpen(){ try { xmlConfig = CXMLConfig::Open("XPathConfig.xml"); } catch(XMLParserException &e) { CPPUNIT_FAIL(e.what()); }}void XMLParserTestCase::testGetFieldValueByPath(){ xmlConfig = CXMLConfig::Open("XPathConfig.xml"); string port1 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer1/Port"); string port2 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer2/Port"); CPPUNIT_ASSERT(port1 == "123"); CPPUNIT_ASSERT(port2 == "456");}void XMLParserTestCase::testSave(){ xmlConfig = CXMLConfig::Open("XPathConfig.xml"); xmlConfig->SetFieldValueByPath("789","/root/Printers/Printer1/Port"); xmlConfig->SetFieldValueByPath("012","/root/Printers/Printer2/Port"); xmlConfig->Save(); string port1 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer1/Port"); string port2 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer2/Port"); CPPUNIT_ASSERT(port1 == "789"); CPPUNIT_ASSERT(port2 == "012");}void XMLParserTestCase::testRemove(){ xmlConfig = CXMLConfig::Open("XPathConfig.xml"); if(!xmlConfig->Remove("/root/Printers/Printer3")) { CPPUNIT_FAIL("Fail to remove node."); } try{ xmlConfig->GetFieldValueByPath("/root/Printers/Printer3"); CPPUNIT_FAIL("Should throw XMLParserException."); } catch(XMLParserException &e) { }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -