summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-07-13 12:29:03 +0200
committerMichael Stahl <mstahl@redhat.com>2012-07-13 12:29:03 +0200
commit87c6beddfb684cee702ec1c9225497b8541a780d (patch)
tree4797c170bca6153493535d301e2cd18e4e67db81 /test
parentee615aeb2c11ee1f288f903c2a7550299a9bc820 (diff)
test: move XMLDiff implementation details to cxx file
This makes it unnecessary to link clients against libxml2. Change-Id: Ifd295623c01bdc6f579afbf81d5b609a2b29f4bf
Diffstat (limited to 'test')
-rw-r--r--test/inc/test/xmldiff.hxx70
-rw-r--r--test/source/diff/diff.cxx84
2 files changed, 86 insertions, 68 deletions
diff --git a/test/inc/test/xmldiff.hxx b/test/inc/test/xmldiff.hxx
index 0d768ae08fdb..cdba298dcc05 100644
--- a/test/inc/test/xmldiff.hxx
+++ b/test/inc/test/xmldiff.hxx
@@ -26,74 +26,10 @@
* instead of those above.
*/
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-#include <libxml/xmlmemory.h>
-#include <string>
-#include <set>
#include <test/testdllapi.hxx>
-#define USE_CPPUNIT 1
-
-struct tolerance
-{
- ~tolerance()
- {
- xmlFree(elementName);
- xmlFree(attribName);
- }
-
- tolerance()
- {
- elementName = NULL;
- attribName = NULL;
- }
-
- tolerance(const tolerance& tol)
- {
- elementName = xmlStrdup(tol.elementName);
- attribName = xmlStrdup(tol.attribName);
- relative = tol.relative;
- value = tol.value;
- }
-
- xmlChar* elementName;
- xmlChar* attribName;
- bool relative;
- double value;
- bool operator==(const tolerance& rTol) const { return xmlStrEqual(elementName, rTol.elementName) && xmlStrEqual(attribName, rTol.attribName); }
- bool operator<(const tolerance& rTol) const
- {
- int cmp = xmlStrcmp(elementName, rTol.elementName);
- if(cmp == 0)
- {
- cmp = xmlStrcmp(attribName, rTol.attribName);
- }
-
- if(cmp>=0)
- return false;
- else
- return true;
- }
-};
-
-class OOO_DLLPUBLIC_TEST XMLDiff
-{
-public:
- XMLDiff(const char* pFileName, const char* pContent, int size, const char* pToleranceFileName);
- ~XMLDiff();
-
- bool compare();
-private:
- typedef std::set<tolerance> ToleranceContainer;
-
- void loadToleranceFile(xmlDocPtr xmlTolerance);
- bool compareAttributes(xmlNodePtr node1, xmlNodePtr node2);
- bool compareElements(xmlNodePtr node1, xmlNodePtr node2);
-
- ToleranceContainer toleranceContainer;
- xmlDocPtr xmlFile1;
- xmlDocPtr xmlFile2;
-};
+bool OOO_DLLPUBLIC_TEST
+doXMLDiff(const char* pFileName, const char* pContent, int size,
+ const char* pToleranceFileName);
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/source/diff/diff.cxx b/test/source/diff/diff.cxx
index 00e144436e61..048e7835384f 100644
--- a/test/source/diff/diff.cxx
+++ b/test/source/diff/diff.cxx
@@ -26,10 +26,16 @@
* instead of those above.
*/
+#define USE_CPPUNIT 1
#include "test/xmldiff.hxx"
+
#include <libxml/xpath.h>
-#include <rtl/math.hxx>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <libxml/xmlmemory.h>
+
+#include <set>
#include <cstring>
#include <sstream>
#include <cmath>
@@ -39,6 +45,73 @@
#include <cppunit/extensions/HelperMacros.h>
#endif
+#include <rtl/math.hxx>
+
+
+struct tolerance
+{
+ ~tolerance()
+ {
+ xmlFree(elementName);
+ xmlFree(attribName);
+ }
+
+ tolerance()
+ {
+ elementName = NULL;
+ attribName = NULL;
+ }
+
+ tolerance(const tolerance& tol)
+ {
+ elementName = xmlStrdup(tol.elementName);
+ attribName = xmlStrdup(tol.attribName);
+ relative = tol.relative;
+ value = tol.value;
+ }
+
+ xmlChar* elementName;
+ xmlChar* attribName;
+ bool relative;
+ double value;
+ bool operator==(const tolerance& rTol) const { return xmlStrEqual(elementName, rTol.elementName) && xmlStrEqual(attribName, rTol.attribName); }
+ bool operator<(const tolerance& rTol) const
+ {
+ int cmp = xmlStrcmp(elementName, rTol.elementName);
+ if(cmp == 0)
+ {
+ cmp = xmlStrcmp(attribName, rTol.attribName);
+ }
+
+ if(cmp>=0)
+ return false;
+ else
+ return true;
+ }
+};
+
+class XMLDiff
+{
+public:
+ XMLDiff(const char* pFileName, const char* pContent, int size, const char* pToleranceFileName);
+ ~XMLDiff();
+
+ bool compare();
+private:
+ typedef std::set<tolerance> ToleranceContainer;
+
+ void loadToleranceFile(xmlDocPtr xmlTolerance);
+ bool compareAttributes(xmlNodePtr node1, xmlNodePtr node2);
+ bool compareElements(xmlNodePtr node1, xmlNodePtr node2);
+
+ ToleranceContainer toleranceContainer;
+ xmlDocPtr xmlFile1;
+ xmlDocPtr xmlFile2;
+};
+
+
+
+
XMLDiff::XMLDiff( const char* pFileName, const char* pContent, int size, const char* pToleranceFile)
{
xmlFile1 = xmlParseFile(pFileName);
@@ -290,4 +363,13 @@ bool XMLDiff::compareAttributes(xmlNodePtr node1, xmlNodePtr node2)
return true;
}
+
+bool
+doXMLDiff(char const*const pFileName, char const*const pContent, int const size,
+ char const*const pToleranceFileName)
+{
+ XMLDiff aDiff(pFileName, pContent, size, pToleranceFileName);
+ return aDiff.compare();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */