[Libreoffice-commits] core.git: 2 commits - chart2/CppunitTest_chart2_export.mk chart2/CppunitTest_chart2_import.mk chart2/qa include/unotest unotest/source

Markus Mohrhard markus.mohrhard at googlemail.com
Fri Dec 13 11:05:44 PST 2013


 chart2/CppunitTest_chart2_export.mk          |   10 +
 chart2/CppunitTest_chart2_import.mk          |    6 -
 chart2/qa/extras/chart2export.cxx            |  136 ++++++++++++++++++++++++---
 chart2/qa/extras/charttest.hxx               |   39 ++++++-
 chart2/qa/extras/data/docx/testBarChart.docx |binary
 include/unotest/bootstrapfixturebase.hxx     |    1 
 include/unotest/macros_test.hxx              |    2 
 unotest/source/cpp/bootstrapfixturebase.cxx  |    5 
 unotest/source/cpp/macros_test.cxx           |    6 -
 9 files changed, 181 insertions(+), 24 deletions(-)

New commits:
commit 31cba7d34694f50ddf015b405688635b591ce2c0
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Dec 13 17:38:43 2013 +0100

    fixes for previous commit
    
    Change-Id: Ic4f2d36ce901b88b47b43fdebba197daf8bd0373

diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index d122d8c..2767158 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -49,7 +49,7 @@ protected:
      * xml stream, and asserting an XPath expression. This method returns the
      * xml stream, so that you can do the asserting.
      */
-    xmlDocPtr parseExport(const OUString& rStreamName);
+    xmlDocPtr parseExport(const OUString& rStreamName, const OUString& rFilterFormat);
 
     /**
      * Helper method to return nodes represented by rXPath.
@@ -83,11 +83,9 @@ void Chart2ExportTest::test()
     reload("Calc Office Open XML");
 }
 
-xmlDocPtr Chart2ExportTest::parseExport(const OUString& rStreamName)
+xmlDocPtr Chart2ExportTest::parseExport(const OUString& rStreamName, const OUString& rFilterFormat)
 {
-    if (!m_bExported)
-        return 0;
-    utl::TempFile aTempFile = reload("Office Open XML Text");
+    utl::TempFile aTempFile = reload(rFilterFormat);
 
     // Read the XML stream we're interested in.
     uno::Reference<packages::zip::XZipFileAccess2> xNameAccess = packages::zip::ZipFileAccess::createWithURL(comphelper::getComponentContext(m_xSFactory), aTempFile.GetURL());
@@ -374,7 +372,7 @@ void Chart2ExportTest::testStockChart()
      */
     load("/chart2/qa/extras/data/docx/", "testStockChart.docx");
 
-    xmlDocPtr pXmlDoc = parseExport("word/charts/chart1.xml");
+    xmlDocPtr pXmlDoc = parseExport("word/charts/chart1.xml", "Office Open XML Text");
     if (!pXmlDoc)
        return;
 
@@ -386,9 +384,9 @@ void Chart2ExportTest::testStockChart()
 void Chart2ExportTest::testBarChart()
 {
     load("/chart2/qa/extras/data/docx/", "testBarChart.docx");
-    xmlDocPtr pXmlDoc = parseExport("word/charts/chart1.xml");
+    xmlDocPtr pXmlDoc = parseExport("word/charts/chart1.xml", "Office Open XML Text");
     if (!pXmlDoc)
-        return;
+       return;
 
     assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:barDir", "val", "col");
 }
diff --git a/chart2/qa/extras/charttest.hxx b/chart2/qa/extras/charttest.hxx
index fdabb9c..b50f4fd 100644
--- a/chart2/qa/extras/charttest.hxx
+++ b/chart2/qa/extras/charttest.hxx
@@ -50,15 +50,10 @@ using namespace com::sun::star::uno;
 class ChartTest : public test::BootstrapFixture, public unotest::MacrosTest
 {
 public:
-    ChartTest()
-        : mServiceName(),
-          m_bExported(false)
-    {
-    }
-    void load( const char* pDir, const char* pName );
-    utl::TempFile reload( const OUString& rFilterName );
+    void load( const OUString& rDir, const OUString& rFileName );
+    utl::TempFile reload( const OUString& rFileName );
     uno::Sequence < OUString > getImpressChartColumnDescriptions( const char* pDir, const char* pName );
-    OUString getFileExtension( const char* pName );
+    OUString getFileExtension( const OUString& rFileName );
 
     void loadDocx(const char* pDir, const char* pName);
     utl::TempFile reloadDocx();
@@ -67,29 +62,29 @@ public:
 
 protected:
     Reference< lang::XComponent > mxComponent;
-     const char* mServiceName;
-    bool m_bExported; ///< Does m_aTempFile already contain something useful?
-
+    OUString maServiceName;
 };
-OUString ChartTest::getFileExtension( const char* pName )
+
+OUString ChartTest::getFileExtension( const OUString& aFileName )
 {
-    OUString fileName = OUString::createFromAscii(pName);
-    sal_Int32 dotLocation = fileName.lastIndexOf(L'.');
-    return fileName.copy(dotLocation);
+    sal_Int32 nDotLocation = aFileName.lastIndexOf('.');
+    CPPUNIT_ASSERT(nDotLocation != -1);
+    return aFileName.copy(nDotLocation);
 }
-void ChartTest::load( const char* pDir, const char* pName )
+
+void ChartTest::load( const OUString& aDir, const OUString& aName )
 {
-    OUString extension = getFileExtension(pName);
-    if(extension.equals("ods"))
+    OUString extension = getFileExtension(aName);
+    if(extension == "ods")
     {
-        mServiceName = "com.sun.star.sheet.SpreadsheetDocument";
+        maServiceName = "com.sun.star.sheet.SpreadsheetDocument";
     }
-    else if(extension.equals("docx"))
+    else if(extension == "docx")
     {
-         mServiceName = "com.sun.star.text.TextDocument";
-
+        maServiceName = "com.sun.star.text.TextDocument";
     }
-    mxComponent = loadFromDesktop(getURLFromSrc(pDir) + OUString::createFromAscii(pName), mServiceName);
+
+    mxComponent = loadFromDesktop(getURLFromSrc(aDir) + aName, maServiceName);
     CPPUNIT_ASSERT(mxComponent.is());
 }
 
@@ -103,7 +98,7 @@ utl::TempFile ChartTest::reload(const OUString& rFilterName)
     aTempFile.EnableKillingFile();
     xStorable->storeToURL(aTempFile.GetURL(), aArgs);
     mxComponent->dispose();
-    mxComponent = loadFromDesktop(aTempFile.GetURL(), mServiceName);
+    mxComponent = loadFromDesktop(aTempFile.GetURL(), maServiceName);
     std::cout << aTempFile.GetURL();
     CPPUNIT_ASSERT(mxComponent.is());
     return aTempFile;
diff --git a/include/unotest/bootstrapfixturebase.hxx b/include/unotest/bootstrapfixturebase.hxx
index de6a6e7..c447f4f 100644
--- a/include/unotest/bootstrapfixturebase.hxx
+++ b/include/unotest/bootstrapfixturebase.hxx
@@ -57,6 +57,7 @@ public:
 
   // return a URL to a given c-str path from the source directory
   OUString getURLFromSrc( const char *pPath );
+  OUString getURLFromSrc( const OUString& rPath );
 
   // return a Path to a given c-str path from the source directory
   OUString getPathFromSrc( const char *pPath );
diff --git a/include/unotest/macros_test.hxx b/include/unotest/macros_test.hxx
index f710645..d995246 100644
--- a/include/unotest/macros_test.hxx
+++ b/include/unotest/macros_test.hxx
@@ -27,7 +27,7 @@ namespace unotest {
 class OOO_DLLPUBLIC_UNOTEST MacrosTest
 {
 public:
-    com::sun::star::uno::Reference< com::sun::star::lang::XComponent > loadFromDesktop(const OUString& rURL, const char* pDocService = NULL);
+    com::sun::star::uno::Reference< com::sun::star::lang::XComponent > loadFromDesktop(const OUString& rURL, const OUString& rDocService = OUString() );
 
 protected:
     com::sun::star::uno::Reference< com::sun::star::frame::XDesktop2> mxDesktop;
diff --git a/unotest/source/cpp/bootstrapfixturebase.cxx b/unotest/source/cpp/bootstrapfixturebase.cxx
index fce13e3..988d9bd 100644
--- a/unotest/source/cpp/bootstrapfixturebase.cxx
+++ b/unotest/source/cpp/bootstrapfixturebase.cxx
@@ -68,6 +68,11 @@ OUString test::BootstrapFixtureBase::getURLFromSrc( const char *pPath )
     return m_aSrcRootURL + OUString::createFromAscii( pPath );
 }
 
+OUString test::BootstrapFixtureBase::getURLFromSrc( const OUString& rPath )
+{
+    return m_aSrcRootURL + rPath;
+}
+
 OUString test::BootstrapFixtureBase::getPathFromSrc( const char *pPath )
 {
     return m_aSrcRootPath + OUString::createFromAscii( pPath );
diff --git a/unotest/source/cpp/macros_test.cxx b/unotest/source/cpp/macros_test.cxx
index e0376cc..9305a68 100644
--- a/unotest/source/cpp/macros_test.cxx
+++ b/unotest/source/cpp/macros_test.cxx
@@ -19,7 +19,7 @@ using namespace com::sun::star;
 
 namespace unotest {
 
-uno::Reference< com::sun::star::lang::XComponent > MacrosTest::loadFromDesktop(const OUString& rURL, const char* pDocService)
+uno::Reference< com::sun::star::lang::XComponent > MacrosTest::loadFromDesktop(const OUString& rURL, const OUString& rDocService)
 {
     CPPUNIT_ASSERT_MESSAGE("no desktop", mxDesktop.is());
     uno::Reference< com::sun::star::frame::XComponentLoader> xLoader = uno::Reference< com::sun::star::frame::XComponentLoader >( mxDesktop, uno::UNO_QUERY );
@@ -31,12 +31,12 @@ uno::Reference< com::sun::star::lang::XComponent > MacrosTest::loadFromDesktop(c
         com::sun::star::document::MacroExecMode::ALWAYS_EXECUTE_NO_WARN;
     args[0].State = com::sun::star::beans::PropertyState_DIRECT_VALUE;
 
-    if (pDocService)
+    if (!rDocService.isEmpty())
     {
         args.realloc(2);
         args[1].Name = "DocumentService";
         args[1].Handle = -1;
-        args[1].Value <<= OUString::createFromAscii(pDocService);
+        args[1].Value <<= rDocService;
         args[1].State = com::sun::star::beans::PropertyState_DIRECT_VALUE;
     }
 
commit d843d64283c311f02ff663cb02d7ac5a4e744bfc
Author: Pallavi Jadhav <pallavi.jadhav at synerzip.com>
Date:   Fri Dec 6 18:13:49 2013 +0530

    Added OOXML Unit Test framework for Chart module for export.
    
    - Referred functions from sw module.
    
    Change-Id: I3ae90d40d92de0d67623e73e1676dabcc8a413f6

diff --git a/chart2/CppunitTest_chart2_export.mk b/chart2/CppunitTest_chart2_export.mk
index a861693..41b7514 100644
--- a/chart2/CppunitTest_chart2_export.mk
+++ b/chart2/CppunitTest_chart2_export.mk
@@ -11,7 +11,10 @@
 
 $(eval $(call gb_CppunitTest_CppunitTest,chart2_export))
 
-$(eval $(call gb_CppunitTest_use_external,chart2_export,boost_headers))
+$(eval $(call gb_CppunitTest_use_externals,chart2_export, \
+	boost_headers \
+    libxml2 \
+))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,chart2_export, \
     chart2/qa/extras/chart2export \
@@ -50,6 +53,7 @@ $(eval $(call gb_CppunitTest_use_libraries,chart2_export, \
     vbahelper \
     vcl \
     xo \
+    sw \
     $(gb_UWINAPI) \
 ))
 
@@ -85,6 +89,9 @@ $(eval $(call gb_CppunitTest_use_components,chart2_export,\
     sc/util/sc \
     sc/util/scd \
     sc/util/scfilt \
+    sw/util/sw \
+    sw/util/swd \
+    sw/util/msword \
     $(if $(filter TRUE,$(DISABLE_SCRIPTING)),, \
 	    sc/util/vbaobj) \
     scaddins/source/analysis/analysis \
@@ -104,6 +111,7 @@ $(eval $(call gb_CppunitTest_use_components,chart2_export,\
     unotools/util/utl \
     unoxml/source/rdf/unordf \
     unoxml/source/service/unoxml \
+    writerfilter/util/writerfilter \
     xmloff/util/xo \
 ))
 
diff --git a/chart2/CppunitTest_chart2_import.mk b/chart2/CppunitTest_chart2_import.mk
index 2c74eb5..2ca91f7 100644
--- a/chart2/CppunitTest_chart2_import.mk
+++ b/chart2/CppunitTest_chart2_import.mk
@@ -11,7 +11,10 @@
 
 $(eval $(call gb_CppunitTest_CppunitTest,chart2_import))
 
-$(eval $(call gb_CppunitTest_use_external,chart2_import,boost_headers))
+$(eval $(call gb_CppunitTest_use_externals,chart2_import, \
+	boost_headers \
+	libxml2 \
+))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,chart2_import, \
     chart2/qa/extras/chart2import \
@@ -52,6 +55,7 @@ $(eval $(call gb_CppunitTest_use_libraries,chart2_import, \
     utl \
     vbahelper \
     xo \
+    sw \
     $(gb_UWINAPI) \
 ))
 
diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index 7ae449a..d122d8c 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -12,6 +12,13 @@
 #include <com/sun/star/chart/ErrorBarStyle.hpp>
 #include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
 #include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/packages/zip/ZipFileAccess.hpp>
+
+#include <unotools/ucbstreamhelper.hxx>
+#include <rtl/strbuf.hxx>
+
+#include <libxml/xpathInternals.h>
+#include <libxml/parserInternals.h>
 
 using uno::Reference;
 using beans::XPropertySet;
@@ -19,19 +26,54 @@ using beans::XPropertySet;
 class Chart2ExportTest : public ChartTest
 {
 public:
+    Chart2ExportTest() : ChartTest() {}
     void test();
     void testErrorBarXLSX();
     void testTrendline();
-
     void testStockChart();
+    void testBarChart();
 
     CPPUNIT_TEST_SUITE(Chart2ExportTest);
     CPPUNIT_TEST(test);
     CPPUNIT_TEST(testErrorBarXLSX);
     CPPUNIT_TEST(testTrendline);
-//    CPPUNIT_TEST(testStockChart); disable pending necessary patch from gerrit 6957
+    CPPUNIT_TEST(testStockChart); disable pending necessary patch from gerrit 6957
+    CPPUNIT_TEST(testBarChart);
+
     CPPUNIT_TEST_SUITE_END();
 
+protected:
+    /**
+     * Given that some problem doesn't affect the result in the importer, we
+     * test the resulting file directly, by opening the zip file, parsing an
+     * xml stream, and asserting an XPath expression. This method returns the
+     * xml stream, so that you can do the asserting.
+     */
+    xmlDocPtr parseExport(const OUString& rStreamName);
+
+    /**
+     * Helper method to return nodes represented by rXPath.
+     */
+    xmlNodeSetPtr getXPathNode(xmlDocPtr pXmlDoc, const OString& rXPath);
+
+    /**
+     * Assert that rXPath exists, and returns exactly one node.
+     * In case rAttribute is provided, the rXPath's attribute's value must
+     * equal to the rExpected value.
+     */
+    void assertXPath(xmlDocPtr pXmlDoc, const OString& rXPath, const OString& rAttribute = OString(), const OUString& rExpectedValue = OUString());
+
+    /**
+     * Assert that rXPath exists, and returns exactly nNumberOfNodes nodes.
+     * Useful for checking that we do _not_ export some node (nNumberOfNodes == 0).
+     */
+    void assertXPath(xmlDocPtr pXmlDoc, const OString& rXPath, int nNumberOfNodes);
+
+    /**
+     * Same as the assertXPath(), but don't assert: return the string instead.
+     */
+    OUString getXPath(xmlDocPtr pXmlDoc, const OString& rXPath, const OString& rAttribute);
+
 private:
 };
 
@@ -41,6 +83,69 @@ void Chart2ExportTest::test()
     reload("Calc Office Open XML");
 }
 
+xmlDocPtr Chart2ExportTest::parseExport(const OUString& rStreamName)
+{
+    if (!m_bExported)
+        return 0;
+    utl::TempFile aTempFile = reload("Office Open XML Text");
+
+    // Read the XML stream we're interested in.
+    uno::Reference<packages::zip::XZipFileAccess2> xNameAccess = packages::zip::ZipFileAccess::createWithURL(comphelper::getComponentContext(m_xSFactory), aTempFile.GetURL());
+    uno::Reference<io::XInputStream> xInputStream(xNameAccess->getByName(rStreamName), uno::UNO_QUERY);
+    boost::shared_ptr<SvStream> pStream(utl::UcbStreamHelper::CreateStream(xInputStream, sal_True));
+    pStream->Seek(STREAM_SEEK_TO_END);
+    sal_Size nSize = pStream->Tell();
+    pStream->Seek(0);
+    OStringBuffer aDocument(nSize);
+    char ch;
+    for (sal_Size i = 0; i < nSize; ++i)
+    {
+        *pStream >> ch;
+        aDocument.append(ch);
+    }
+
+    // Parse the XML.
+    return xmlParseMemory((const char*)aDocument.getStr(), aDocument.getLength());
+}
+
+xmlNodeSetPtr Chart2ExportTest::getXPathNode(xmlDocPtr pXmlDoc, const OString& rXPath)
+{
+    xmlXPathContextPtr pXmlXpathCtx = xmlXPathNewContext(pXmlDoc);
+    xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main"));
+    xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("v"), BAD_CAST("urn:schemas-microsoft-com:vml"));
+    xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("c"), BAD_CAST("http://schemas.openxmlformats.org/drawingml/2006/chart"));
+    xmlXPathObjectPtr pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(rXPath.getStr()), pXmlXpathCtx);
+    return pXmlXpathObj->nodesetval;
+}
+
+void Chart2ExportTest::assertXPath(xmlDocPtr pXmlDoc, const OString& rXPath, const OString& rAttribute, const OUString& rExpectedValue)
+{
+    OUString aValue = getXPath(pXmlDoc, rXPath, rAttribute);
+    CPPUNIT_ASSERT_EQUAL_MESSAGE(
+        OString("Attribute '" + rAttribute + "' of '" + rXPath + "' incorrect value.").getStr(),
+        rExpectedValue, aValue);
+}
+
+void Chart2ExportTest::assertXPath(xmlDocPtr pXmlDoc, const OString& rXPath, int nNumberOfNodes)
+{
+    xmlNodeSetPtr pXmlNodes = getXPathNode(pXmlDoc, rXPath);
+    CPPUNIT_ASSERT_EQUAL_MESSAGE(
+        OString("XPath '" + rXPath + "' number of nodes is incorrect").getStr(),
+        nNumberOfNodes, xmlXPathNodeSetGetLength(pXmlNodes));
+}
+
+OUString Chart2ExportTest::getXPath(xmlDocPtr pXmlDoc, const OString& rXPath, const OString& rAttribute)
+{
+    xmlNodeSetPtr pXmlNodes = getXPathNode(pXmlDoc, rXPath);
+    CPPUNIT_ASSERT_EQUAL_MESSAGE(
+        OString("XPath '" + rXPath + "' number of nodes is incorrect").getStr(),
+        1, xmlXPathNodeSetGetLength(pXmlNodes));
+    if (rAttribute.isEmpty())
+        return OUString();
+    xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0];
+    return OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(rAttribute.getStr())));
+}
+
 namespace {
 
 void testErrorBar( Reference< XPropertySet > xErrorBar )
@@ -258,7 +363,6 @@ void Chart2ExportTest::testTrendline()
 
 }
 
-#if 0  // disable until gerrit 6957 is merged in some form */
 void Chart2ExportTest::testStockChart()
 {
     /*  For attached file Stock_Chart.docx, in chart1.xml,
@@ -269,16 +373,26 @@ void Chart2ExportTest::testStockChart()
      * Which was problem area.
      */
     load("/chart2/qa/extras/data/docx/", "testStockChart.docx");
-    {
-        xmlDocPtr pXmlDoc = parseExport("word/charts/chart1.xml");
-        if (!pXmlDoc)
-           return;
-      assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:idx", "val", "1");
-      assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:order", "val", "1");
-      assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:tx/c:strRef/c:strCache/c:pt/c:v", "Open");
-    }
+
+    xmlDocPtr pXmlDoc = parseExport("word/charts/chart1.xml");
+    if (!pXmlDoc)
+       return;
+
+    assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:idx", "val", "1");
+    assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:order", "val", "1");
+    assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:tx/c:strRef/c:strCache/c:pt/c:v", "Open");
 }
-#endif
+
+void Chart2ExportTest::testBarChart()
+{
+    load("/chart2/qa/extras/data/docx/", "testBarChart.docx");
+    xmlDocPtr pXmlDoc = parseExport("word/charts/chart1.xml");
+    if (!pXmlDoc)
+        return;
+
+    assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:barDir", "val", "col");
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/chart2/qa/extras/charttest.hxx b/chart2/qa/extras/charttest.hxx
index 637cfe0..fdabb9c 100644
--- a/chart2/qa/extras/charttest.hxx
+++ b/chart2/qa/extras/charttest.hxx
@@ -40,29 +40,60 @@
 #include <com/sun/star/chart/XChartDocument.hpp>
 #include <iostream>
 
+#include <libxml/xmlwriter.h>
+#include <libxml/xpath.h>
+
 using namespace com::sun::star;
 using namespace com::sun::star::uno;
 
+
 class ChartTest : public test::BootstrapFixture, public unotest::MacrosTest
 {
 public:
+    ChartTest()
+        : mServiceName(),
+          m_bExported(false)
+    {
+    }
     void load( const char* pDir, const char* pName );
-    void reload( const OUString& rFilterName );
+    utl::TempFile reload( const OUString& rFilterName );
     uno::Sequence < OUString > getImpressChartColumnDescriptions( const char* pDir, const char* pName );
+    OUString getFileExtension( const char* pName );
 
+    void loadDocx(const char* pDir, const char* pName);
+    utl::TempFile reloadDocx();
     virtual void setUp();
     virtual void tearDown();
+
 protected:
     Reference< lang::XComponent > mxComponent;
-};
+     const char* mServiceName;
+    bool m_bExported; ///< Does m_aTempFile already contain something useful?
 
+};
+OUString ChartTest::getFileExtension( const char* pName )
+{
+    OUString fileName = OUString::createFromAscii(pName);
+    sal_Int32 dotLocation = fileName.lastIndexOf(L'.');
+    return fileName.copy(dotLocation);
+}
 void ChartTest::load( const char* pDir, const char* pName )
 {
-    mxComponent = loadFromDesktop(getURLFromSrc(pDir) + OUString::createFromAscii(pName), "com.sun.star.sheet.SpreadsheetDocument");
+    OUString extension = getFileExtension(pName);
+    if(extension.equals("ods"))
+    {
+        mServiceName = "com.sun.star.sheet.SpreadsheetDocument";
+    }
+    else if(extension.equals("docx"))
+    {
+         mServiceName = "com.sun.star.text.TextDocument";
+
+    }
+    mxComponent = loadFromDesktop(getURLFromSrc(pDir) + OUString::createFromAscii(pName), mServiceName);
     CPPUNIT_ASSERT(mxComponent.is());
 }
 
-void ChartTest::reload(const OUString& rFilterName)
+utl::TempFile ChartTest::reload(const OUString& rFilterName)
 {
     uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
     uno::Sequence<beans::PropertyValue> aArgs(1);
@@ -72,9 +103,10 @@ void ChartTest::reload(const OUString& rFilterName)
     aTempFile.EnableKillingFile();
     xStorable->storeToURL(aTempFile.GetURL(), aArgs);
     mxComponent->dispose();
-    mxComponent = loadFromDesktop(aTempFile.GetURL(), "com.sun.star.sheet.SpreadsheetDocument");
+    mxComponent = loadFromDesktop(aTempFile.GetURL(), mServiceName);
     std::cout << aTempFile.GetURL();
     CPPUNIT_ASSERT(mxComponent.is());
+    return aTempFile;
 }
 
 void ChartTest::setUp()
diff --git a/chart2/qa/extras/data/docx/testBarChart.docx b/chart2/qa/extras/data/docx/testBarChart.docx
new file mode 100644
index 0000000..b92260f
Binary files /dev/null and b/chart2/qa/extras/data/docx/testBarChart.docx differ


More information about the Libreoffice-commits mailing list