sw/CppunitTest_sw_subsequent_odfexport.mk | 1 sw/CppunitTest_sw_subsequent_odfimport.mk | 1 sw/CppunitTest_sw_subsequent_ooxmlexport.mk | 1 sw/CppunitTest_sw_subsequent_rtfexport.mk | 1 sw/CppunitTest_sw_subsequent_ww8export.mk | 1 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 15 files changed, 258 insertions(+), 259 deletions(-)
New commits: commit 66d3da3505ef4964be9a4dbe0363af8f0c519270 Author: Miklos Vajna <vmik...@suse.cz> Date: Sun Nov 18 11:07:45 2012 +0100 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 diff --git a/sw/CppunitTest_sw_subsequent_odfexport.mk b/sw/CppunitTest_sw_subsequent_odfexport.mk index 5149659..64e6318 100644 --- a/sw/CppunitTest_sw_subsequent_odfexport.mk +++ b/sw/CppunitTest_sw_subsequent_odfexport.mk @@ -54,6 +54,7 @@ $(eval $(call gb_CppunitTest_use_externals,sw_subsequent_odfexport,\ $(eval $(call gb_CppunitTest_set_include,sw_subsequent_odfexport,\ -I$(SRCDIR)/sw/inc \ -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/qa/extras/inc \ $$(INCLUDE) \ )) diff --git a/sw/CppunitTest_sw_subsequent_odfimport.mk b/sw/CppunitTest_sw_subsequent_odfimport.mk index 189817e..f7ad4eb 100644 --- a/sw/CppunitTest_sw_subsequent_odfimport.mk +++ b/sw/CppunitTest_sw_subsequent_odfimport.mk @@ -53,6 +53,7 @@ $(eval $(call gb_CppunitTest_use_externals,sw_subsequent_odfimport,\ $(eval $(call gb_CppunitTest_set_include,sw_subsequent_odfimport,\ -I$(SRCDIR)/sw/inc \ -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/qa/extras/inc \ $$(INCLUDE) \ )) diff --git a/sw/CppunitTest_sw_subsequent_ooxmlexport.mk b/sw/CppunitTest_sw_subsequent_ooxmlexport.mk index 288795e..576bb5a 100644 --- a/sw/CppunitTest_sw_subsequent_ooxmlexport.mk +++ b/sw/CppunitTest_sw_subsequent_ooxmlexport.mk @@ -54,6 +54,7 @@ $(eval $(call gb_CppunitTest_use_externals,sw_subsequent_ooxmlexport,\ $(eval $(call gb_CppunitTest_set_include,sw_subsequent_ooxmlexport,\ -I$(SRCDIR)/sw/inc \ -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/qa/extras/inc \ $$(INCLUDE) \ )) diff --git a/sw/CppunitTest_sw_subsequent_rtfexport.mk b/sw/CppunitTest_sw_subsequent_rtfexport.mk index f5ac911..a214830 100644 --- a/sw/CppunitTest_sw_subsequent_rtfexport.mk +++ b/sw/CppunitTest_sw_subsequent_rtfexport.mk @@ -53,6 +53,7 @@ $(eval $(call gb_CppunitTest_use_externals,sw_subsequent_rtfexport,\ $(eval $(call gb_CppunitTest_set_include,sw_subsequent_rtfexport,\ -I$(SRCDIR)/sw/inc \ -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/qa/extras/inc \ $$(INCLUDE) \ )) diff --git a/sw/CppunitTest_sw_subsequent_ww8export.mk b/sw/CppunitTest_sw_subsequent_ww8export.mk index 68fd485..340afec 100644 --- a/sw/CppunitTest_sw_subsequent_ww8export.mk +++ b/sw/CppunitTest_sw_subsequent_ww8export.mk @@ -54,6 +54,7 @@ $(eval $(call gb_CppunitTest_use_externals,sw_subsequent_ww8export,\ $(eval $(call gb_CppunitTest_set_include,sw_subsequent_ww8export,\ -I$(SRCDIR)/sw/inc \ -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/qa/extras/inc \ $$(INCLUDE) \ )) diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx new file mode 100644 index 0000000..2a7f4d6 --- /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 <vmik...@suse.cz> (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 <com/sun/star/container/XContentEnumerationAccess.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextRange.hpp> + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> +#include <rtl/ustrbuf.hxx> + +#include <unotxdoc.hxx> +#include <docsh.hxx> +#include <doc.hxx> +#include <rootfrm.hxx> + +#include <libxml/xmlwriter.h> +#include <libxml/xpath.h> + +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<SwXTextDocument *>(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<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); + OUStringBuffer aBuf; + while (xParaEnum->hasMoreElements()) + { + uno::Reference<container::XEnumerationAccess> xRangeEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xRangeEnum = xRangeEnumAccess->createEnumeration(); + while (xRangeEnum->hasMoreElements()) + { + uno::Reference<text::XTextRange> 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<container::XNameAccess> getStyles(OUString aFamily) + { + uno::Reference<style::XStyleFamiliesSupplier> xStyleFamiliesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XNameAccess> xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY); + uno::Reference<container::XNameAccess> 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<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> 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<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> paraEnumAccess(textDocument->getText(), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> 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<text::XTextRange> getRun(uno::Reference<text::XTextRange> xParagraph, int number, OUString content = OUString()) const + { + uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration(); + for (int i = 1; i < number; ++i) + xRunEnum->nextElement(); + uno::Reference<text::XTextRange> 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<text::XTextRange> xRun) const + { + uno::Reference<container::XContentEnumerationAccess> xContentEnumAccess(xRun, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xContentEnum(xContentEnumAccess->createContentEnumeration(""), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xFormula(xContentEnum->nextElement(), uno::UNO_QUERY); + return getProperty<OUString>(getProperty< uno::Reference<beans::XPropertySet> >(xFormula, "Model"), "Formula"); + } + + uno::Reference<lang::XComponent> 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 7964ea9..7d93b3b 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 <unotools/tempfile.hxx> +#include <swmodeltestbase.hxx> class Test : public SwModelTestBase { diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx index 2332826..05584bf 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 <com/sun/star/table/XCell.hpp> #include <com/sun/star/table/BorderLine.hpp> #include <com/sun/star/text/XTextTable.hpp> +#include <swmodeltestbase.hxx> typedef std::map<OUString, com::sun::star::uno::Sequence< com::sun::star::table::BorderLine> > AllBordersMap; typedef std::pair<OUString, com::sun::star::uno::Sequence< com::sun::star::table::BorderLine> > StringSequencePair; diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 8fe1985..e578be8 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 <com/sun/star/frame/XStorable.hpp> #include <com/sun/star/style/TabStop.hpp> #include <com/sun/star/view/XViewSettingsSupplier.hpp> @@ -39,6 +37,7 @@ #include <com/sun/star/table/BorderLine2.hpp> #include <unotools/tempfile.hxx> +#include <swmodeltestbase.hxx> class Test : public SwModelTestBase { diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index a36bdb7..2c98832 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 <com/sun/star/awt/XBitmap.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/document/XEmbeddedObjectSupplier2.hpp> @@ -54,9 +51,11 @@ #include <com/sun/star/view/XSelectionSupplier.hpp> #include <com/sun/star/table/BorderLine2.hpp> - #include <vcl/svapp.hxx> +#include <swmodeltestbase.hxx> +#include <bordertest.hxx> + #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 de5bfe6..c2d8830 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 <com/sun/star/document/XDocumentPropertiesSupplier.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp> #include <com/sun/star/frame/XStorable.hpp> @@ -36,8 +34,7 @@ #include <unotools/tempfile.hxx> #include <vcl/svapp.hxx> - -using rtl::OUStringBuffer; +#include <swmodeltestbase.hxx> class Test : public SwModelTestBase { diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index c8eec60..e114af2 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 <com/sun/star/document/XFilter.hpp> #include <com/sun/star/document/XImporter.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp> @@ -61,6 +58,9 @@ #include <unotools/ucbstreamhelper.hxx> #include <unotools/streamwrap.hxx> +#include <swmodeltestbase.hxx> +#include <bordertest.hxx> + #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 2a7f4d6..0000000 --- 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 <vmik...@suse.cz> (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 <com/sun/star/container/XContentEnumerationAccess.hpp> -#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> -#include <com/sun/star/text/XTextDocument.hpp> -#include <com/sun/star/text/XTextRange.hpp> - -#include <test/bootstrapfixture.hxx> -#include <unotest/macros_test.hxx> -#include <rtl/ustrbuf.hxx> - -#include <unotxdoc.hxx> -#include <docsh.hxx> -#include <doc.hxx> -#include <rootfrm.hxx> - -#include <libxml/xmlwriter.h> -#include <libxml/xpath.h> - -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<SwXTextDocument *>(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<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); - uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); - OUStringBuffer aBuf; - while (xParaEnum->hasMoreElements()) - { - uno::Reference<container::XEnumerationAccess> xRangeEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xRangeEnum = xRangeEnumAccess->createEnumeration(); - while (xRangeEnum->hasMoreElements()) - { - uno::Reference<text::XTextRange> 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<container::XNameAccess> getStyles(OUString aFamily) - { - uno::Reference<style::XStyleFamiliesSupplier> xStyleFamiliesSupplier(mxComponent, uno::UNO_QUERY); - uno::Reference<container::XNameAccess> xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY); - uno::Reference<container::XNameAccess> 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<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); - uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY); - uno::Reference<container::XEnumeration> 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<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY); - uno::Reference<container::XEnumerationAccess> paraEnumAccess(textDocument->getText(), uno::UNO_QUERY); - uno::Reference<container::XEnumeration> 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<text::XTextRange> getRun(uno::Reference<text::XTextRange> xParagraph, int number, OUString content = OUString()) const - { - uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration(); - for (int i = 1; i < number; ++i) - xRunEnum->nextElement(); - uno::Reference<text::XTextRange> 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<text::XTextRange> xRun) const - { - uno::Reference<container::XContentEnumerationAccess> xContentEnumAccess(xRun, uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xContentEnum(xContentEnumAccess->createContentEnumeration(""), uno::UNO_QUERY); - uno::Reference<beans::XPropertySet> xFormula(xContentEnum->nextElement(), uno::UNO_QUERY); - return getProperty<OUString>(getProperty< uno::Reference<beans::XPropertySet> >(xFormula, "Model"), "Formula"); - } - - uno::Reference<lang::XComponent> 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 7a205f1..679f765 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 <com/sun/star/form/validation/XValidatableFormComponent.hpp> #include <com/sun/star/frame/XStorable.hpp> #include <com/sun/star/drawing/XControlShape.hpp> @@ -35,6 +33,8 @@ #include <unotools/tempfile.hxx> +#include <swmodeltestbase.hxx> + class Test : public SwModelTestBase { public: diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index 13fea52..b47e525 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 <com/sun/star/drawing/XDrawPageSupplier.hpp> #include <com/sun/star/table/BorderLine2.hpp> #include <com/sun/star/table/TableBorder.hpp> @@ -37,6 +34,9 @@ #include <vcl/svapp.hxx> +#include <swmodeltestbase.hxx> +#include <bordertest.hxx> + class Test : public SwModelTestBase { public: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits