From 66d3da3505ef4964be9a4dbe0363af8f0c519270 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sun, 18 Nov 2012 11:07:45 +0100 Subject: sw: move swmodeltestbase.hxx to qa/extras/inc/ If we already have such an include dir, let's have all headers there. Change-Id: I2100b5308e7fdad9d98cfde76434ff485aca20c7 --- sw/qa/extras/inc/swmodeltestbase.hxx | 238 +++++++++++++++++++++++++++++++ sw/qa/extras/odfexport/odfexport.cxx | 3 +- sw/qa/extras/odfimport/odfimport.cxx | 2 +- sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 3 +- sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 7 +- sw/qa/extras/rtfexport/rtfexport.cxx | 5 +- sw/qa/extras/rtfimport/rtfimport.cxx | 6 +- sw/qa/extras/swmodeltestbase.hxx | 238 ------------------------------- sw/qa/extras/ww8export/ww8export.cxx | 4 +- sw/qa/extras/ww8import/ww8import.cxx | 6 +- 10 files changed, 253 insertions(+), 259 deletions(-) create mode 100644 sw/qa/extras/inc/swmodeltestbase.hxx delete mode 100644 sw/qa/extras/swmodeltestbase.hxx (limited to 'sw/qa') diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx new file mode 100644 index 000000000000..2a7f4d68c7b2 --- /dev/null +++ b/sw/qa/extras/inc/swmodeltestbase.hxx @@ -0,0 +1,238 @@ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * Miklos Vajna (SUSE, Inc.) + * Portions created by the Initial Developer are Copyright (C) 2012 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +using namespace com::sun::star; + +/// Base class for filter tests loading or roundtriping a document, then asserting the document model. +class SwModelTestBase : public test::BootstrapFixture, public unotest::MacrosTest +{ +public: + SwModelTestBase() + : mpXmlBuffer(0) + { + } + + ~SwModelTestBase() + { + if (mpXmlBuffer) + xmlBufferFree(mpXmlBuffer); + } + + virtual void setUp() + { + test::BootstrapFixture::setUp(); + + mxDesktop.set(getMultiServiceFactory()->createInstance("com.sun.star.frame.Desktop"), uno::UNO_QUERY); + CPPUNIT_ASSERT(mxDesktop.is()); + } + + virtual void tearDown() + { + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); + } + +private: + void dumpLayout() + { + // create the xml writer + mpXmlBuffer = xmlBufferCreate(); + xmlTextWriterPtr pXmlWriter = xmlNewTextWriterMemory(mpXmlBuffer, 0); + xmlTextWriterStartDocument(pXmlWriter, NULL, NULL, NULL); + + // create the dump + SwXTextDocument* pTxtDoc = dynamic_cast(mxComponent.get()); + SwDoc* pDoc = pTxtDoc->GetDocShell()->GetDoc(); + SwRootFrm* pLayout = pDoc->GetCurrentLayout(); + pLayout->dumpAsXml(pXmlWriter); + + // delete xml writer + xmlTextWriterEndDocument(pXmlWriter); + xmlFreeTextWriter(pXmlWriter); + } + + +protected: + /// Get the length of the whole document. + int getLength() + { + uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); + uno::Reference xParaEnum = xParaEnumAccess->createEnumeration(); + OUStringBuffer aBuf; + while (xParaEnum->hasMoreElements()) + { + uno::Reference xRangeEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY); + uno::Reference xRangeEnum = xRangeEnumAccess->createEnumeration(); + while (xRangeEnum->hasMoreElements()) + { + uno::Reference xRange(xRangeEnum->nextElement(), uno::UNO_QUERY); + aBuf.append(xRange->getString()); + } + } + return aBuf.getLength(); + } + + /// Get a family of styles, see com.sun.star.style.StyleFamilies for possible values. + uno::Reference getStyles(OUString aFamily) + { + uno::Reference xStyleFamiliesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY); + uno::Reference xStyleFamily(xStyleFamilies->getByName(aFamily), uno::UNO_QUERY); + return xStyleFamily; + } + + /** + * Extract a value from the layout dump using an XPath expression and an attribute name. + * + * If the attribute is omitted, the text of the node is returned. + */ + OUString parseDump(rtl::OString aXPath, rtl::OString aAttribute = OString()) + { + if (!mpXmlBuffer) + dumpLayout(); + + xmlDocPtr pXmlDoc = xmlParseMemory((const char*)xmlBufferContent(mpXmlBuffer), xmlBufferLength(mpXmlBuffer));; + + xmlXPathContextPtr pXmlXpathCtx = xmlXPathNewContext(pXmlDoc); + xmlXPathObjectPtr pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aXPath.getStr()), pXmlXpathCtx); + xmlNodeSetPtr pXmlNodes = pXmlXpathObj->nodesetval; + CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes)); + xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0]; + OUString aRet; + if (aAttribute.getLength()) + aRet = OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(aAttribute.getStr()))); + else + aRet = OUString::createFromAscii((const char*)XML_GET_CONTENT(pXmlNode)); + + xmlFreeDoc(pXmlDoc); + + return aRet; + } + + template< typename T > + T getProperty( uno::Any obj, const OUString& name ) const + { + uno::Reference< beans::XPropertySet > properties( obj, uno::UNO_QUERY ); + T data = T(); + properties->getPropertyValue( name ) >>= data; + return data; + } + + template< typename T > + T getProperty( uno::Reference< uno::XInterface > obj, const OUString& name ) const + { + uno::Reference< beans::XPropertySet > properties( obj, uno::UNO_QUERY ); + T data = T(); + properties->getPropertyValue( name ) >>= data; + return data; + } + + /// Get number of paragraphs of the document. + int getParagraphs() + { + uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); + uno::Reference xParaEnum = xParaEnumAccess->createEnumeration(); + int nRet = 0; + while (xParaEnum->hasMoreElements()) + { + xParaEnum->nextElement(); + nRet++; + } + return nRet; + } + + // Get paragraph (counted from 1), optionally check it contains the given text. + uno::Reference< text::XTextRange > getParagraph( int number, OUString content = OUString() ) const + { + uno::Reference textDocument(mxComponent, uno::UNO_QUERY); + uno::Reference paraEnumAccess(textDocument->getText(), uno::UNO_QUERY); + uno::Reference paraEnum = paraEnumAccess->createEnumeration(); + for( int i = 1; + i < number; + ++i ) + paraEnum->nextElement(); + uno::Reference< text::XTextRange > paragraph( paraEnum->nextElement(), uno::UNO_QUERY ); + if( !content.isEmpty()) + CPPUNIT_ASSERT_EQUAL( content, paragraph->getString()); + return paragraph; + } + + /// Get run (counted from 1) of a paragraph, optionally check it contains the given text. + uno::Reference getRun(uno::Reference xParagraph, int number, OUString content = OUString()) const + { + uno::Reference xRunEnumAccess(xParagraph, uno::UNO_QUERY); + uno::Reference xRunEnum = xRunEnumAccess->createEnumeration(); + for (int i = 1; i < number; ++i) + xRunEnum->nextElement(); + uno::Reference xRun(xRunEnum->nextElement(), uno::UNO_QUERY); + if( !content.isEmpty()) + CPPUNIT_ASSERT_EQUAL( content, xRun->getString()); + return xRun; + } + + /// Get math formula string of a run. + OUString getFormula(uno::Reference xRun) const + { + uno::Reference xContentEnumAccess(xRun, uno::UNO_QUERY); + uno::Reference xContentEnum(xContentEnumAccess->createContentEnumeration(""), uno::UNO_QUERY); + uno::Reference xFormula(xContentEnum->nextElement(), uno::UNO_QUERY); + return getProperty(getProperty< uno::Reference >(xFormula, "Model"), "Formula"); + } + + uno::Reference mxComponent; + xmlBufferPtr mpXmlBuffer; + + template< typename T > + struct MethodEntry + { + const char* pName; + void (T::*pMethod)(); + }; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index 7964ea9a1303..7d93b3b89efa 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -25,9 +25,8 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" - #include +#include class Test : public SwModelTestBase { diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx index 23328263fa9c..05584bfc23f0 100644 --- a/sw/qa/extras/odfimport/odfimport.cxx +++ b/sw/qa/extras/odfimport/odfimport.cxx @@ -25,10 +25,10 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" #include #include #include +#include typedef std::map > AllBordersMap; typedef std::pair > StringSequencePair; diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 8fe19859258f..e578be8155ea 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -25,8 +25,6 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" - #include #include #include @@ -39,6 +37,7 @@ #include #include +#include class Test : public SwModelTestBase { diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index a36bdb7c0260..2c98832414be 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -25,9 +25,6 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" -#include "bordertest.hxx" - #include #include #include @@ -54,9 +51,11 @@ #include #include - #include +#include +#include + #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L)) class Test : public SwModelTestBase diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index de5bfe6e08cb..c2d88301988f 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -25,8 +25,6 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" - #include #include #include @@ -36,8 +34,7 @@ #include #include - -using rtl::OUStringBuffer; +#include class Test : public SwModelTestBase { diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index c8eec60d9b4a..e114af297f05 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -25,9 +25,6 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" -#include "bordertest.hxx" - #include #include #include @@ -61,6 +58,9 @@ #include #include +#include +#include + #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L)) class Test : public SwModelTestBase diff --git a/sw/qa/extras/swmodeltestbase.hxx b/sw/qa/extras/swmodeltestbase.hxx deleted file mode 100644 index 2a7f4d68c7b2..000000000000 --- a/sw/qa/extras/swmodeltestbase.hxx +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Initial Developer of the Original Code is - * Miklos Vajna (SUSE, Inc.) - * Portions created by the Initial Developer are Copyright (C) 2012 the - * Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -using namespace com::sun::star; - -/// Base class for filter tests loading or roundtriping a document, then asserting the document model. -class SwModelTestBase : public test::BootstrapFixture, public unotest::MacrosTest -{ -public: - SwModelTestBase() - : mpXmlBuffer(0) - { - } - - ~SwModelTestBase() - { - if (mpXmlBuffer) - xmlBufferFree(mpXmlBuffer); - } - - virtual void setUp() - { - test::BootstrapFixture::setUp(); - - mxDesktop.set(getMultiServiceFactory()->createInstance("com.sun.star.frame.Desktop"), uno::UNO_QUERY); - CPPUNIT_ASSERT(mxDesktop.is()); - } - - virtual void tearDown() - { - if (mxComponent.is()) - mxComponent->dispose(); - - test::BootstrapFixture::tearDown(); - } - -private: - void dumpLayout() - { - // create the xml writer - mpXmlBuffer = xmlBufferCreate(); - xmlTextWriterPtr pXmlWriter = xmlNewTextWriterMemory(mpXmlBuffer, 0); - xmlTextWriterStartDocument(pXmlWriter, NULL, NULL, NULL); - - // create the dump - SwXTextDocument* pTxtDoc = dynamic_cast(mxComponent.get()); - SwDoc* pDoc = pTxtDoc->GetDocShell()->GetDoc(); - SwRootFrm* pLayout = pDoc->GetCurrentLayout(); - pLayout->dumpAsXml(pXmlWriter); - - // delete xml writer - xmlTextWriterEndDocument(pXmlWriter); - xmlFreeTextWriter(pXmlWriter); - } - - -protected: - /// Get the length of the whole document. - int getLength() - { - uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); - uno::Reference xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); - uno::Reference xParaEnum = xParaEnumAccess->createEnumeration(); - OUStringBuffer aBuf; - while (xParaEnum->hasMoreElements()) - { - uno::Reference xRangeEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY); - uno::Reference xRangeEnum = xRangeEnumAccess->createEnumeration(); - while (xRangeEnum->hasMoreElements()) - { - uno::Reference xRange(xRangeEnum->nextElement(), uno::UNO_QUERY); - aBuf.append(xRange->getString()); - } - } - return aBuf.getLength(); - } - - /// Get a family of styles, see com.sun.star.style.StyleFamilies for possible values. - uno::Reference getStyles(OUString aFamily) - { - uno::Reference xStyleFamiliesSupplier(mxComponent, uno::UNO_QUERY); - uno::Reference xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY); - uno::Reference xStyleFamily(xStyleFamilies->getByName(aFamily), uno::UNO_QUERY); - return xStyleFamily; - } - - /** - * Extract a value from the layout dump using an XPath expression and an attribute name. - * - * If the attribute is omitted, the text of the node is returned. - */ - OUString parseDump(rtl::OString aXPath, rtl::OString aAttribute = OString()) - { - if (!mpXmlBuffer) - dumpLayout(); - - xmlDocPtr pXmlDoc = xmlParseMemory((const char*)xmlBufferContent(mpXmlBuffer), xmlBufferLength(mpXmlBuffer));; - - xmlXPathContextPtr pXmlXpathCtx = xmlXPathNewContext(pXmlDoc); - xmlXPathObjectPtr pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aXPath.getStr()), pXmlXpathCtx); - xmlNodeSetPtr pXmlNodes = pXmlXpathObj->nodesetval; - CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes)); - xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0]; - OUString aRet; - if (aAttribute.getLength()) - aRet = OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(aAttribute.getStr()))); - else - aRet = OUString::createFromAscii((const char*)XML_GET_CONTENT(pXmlNode)); - - xmlFreeDoc(pXmlDoc); - - return aRet; - } - - template< typename T > - T getProperty( uno::Any obj, const OUString& name ) const - { - uno::Reference< beans::XPropertySet > properties( obj, uno::UNO_QUERY ); - T data = T(); - properties->getPropertyValue( name ) >>= data; - return data; - } - - template< typename T > - T getProperty( uno::Reference< uno::XInterface > obj, const OUString& name ) const - { - uno::Reference< beans::XPropertySet > properties( obj, uno::UNO_QUERY ); - T data = T(); - properties->getPropertyValue( name ) >>= data; - return data; - } - - /// Get number of paragraphs of the document. - int getParagraphs() - { - uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); - uno::Reference xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); - uno::Reference xParaEnum = xParaEnumAccess->createEnumeration(); - int nRet = 0; - while (xParaEnum->hasMoreElements()) - { - xParaEnum->nextElement(); - nRet++; - } - return nRet; - } - - // Get paragraph (counted from 1), optionally check it contains the given text. - uno::Reference< text::XTextRange > getParagraph( int number, OUString content = OUString() ) const - { - uno::Reference textDocument(mxComponent, uno::UNO_QUERY); - uno::Reference paraEnumAccess(textDocument->getText(), uno::UNO_QUERY); - uno::Reference paraEnum = paraEnumAccess->createEnumeration(); - for( int i = 1; - i < number; - ++i ) - paraEnum->nextElement(); - uno::Reference< text::XTextRange > paragraph( paraEnum->nextElement(), uno::UNO_QUERY ); - if( !content.isEmpty()) - CPPUNIT_ASSERT_EQUAL( content, paragraph->getString()); - return paragraph; - } - - /// Get run (counted from 1) of a paragraph, optionally check it contains the given text. - uno::Reference getRun(uno::Reference xParagraph, int number, OUString content = OUString()) const - { - uno::Reference xRunEnumAccess(xParagraph, uno::UNO_QUERY); - uno::Reference xRunEnum = xRunEnumAccess->createEnumeration(); - for (int i = 1; i < number; ++i) - xRunEnum->nextElement(); - uno::Reference xRun(xRunEnum->nextElement(), uno::UNO_QUERY); - if( !content.isEmpty()) - CPPUNIT_ASSERT_EQUAL( content, xRun->getString()); - return xRun; - } - - /// Get math formula string of a run. - OUString getFormula(uno::Reference xRun) const - { - uno::Reference xContentEnumAccess(xRun, uno::UNO_QUERY); - uno::Reference xContentEnum(xContentEnumAccess->createContentEnumeration(""), uno::UNO_QUERY); - uno::Reference xFormula(xContentEnum->nextElement(), uno::UNO_QUERY); - return getProperty(getProperty< uno::Reference >(xFormula, "Model"), "Formula"); - } - - uno::Reference mxComponent; - xmlBufferPtr mpXmlBuffer; - - template< typename T > - struct MethodEntry - { - const char* pName; - void (T::*pMethod)(); - }; -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/ww8export/ww8export.cxx b/sw/qa/extras/ww8export/ww8export.cxx index 7a205f123dcc..679f7656834b 100644 --- a/sw/qa/extras/ww8export/ww8export.cxx +++ b/sw/qa/extras/ww8export/ww8export.cxx @@ -25,8 +25,6 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" - #include #include #include @@ -35,6 +33,8 @@ #include +#include + class Test : public SwModelTestBase { public: diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index 13fea52d7fb9..b47e525af93e 100644 --- a/sw/qa/extras/ww8import/ww8import.cxx +++ b/sw/qa/extras/ww8import/ww8import.cxx @@ -25,9 +25,6 @@ * instead of those above. */ -#include "../swmodeltestbase.hxx" -#include "bordertest.hxx" - #include #include #include @@ -37,6 +34,9 @@ #include +#include +#include + class Test : public SwModelTestBase { public: -- cgit