include/unotest/filters-test.hxx | 18 ++++++++++- sw/qa/core/exportdata/rtf/pass/abi10201.rtf | 3 + sw/qa/core/filters-test.cxx | 43 +++++++++++++++++++++++++++- sw/qa/extras/rtfexport/data/abi10201.rtf | 3 - sw/qa/extras/rtfexport/rtfexport.cxx | 5 --- unotest/source/cpp/filters-test.cxx | 21 ++++++++----- 6 files changed, 74 insertions(+), 19 deletions(-)
New commits: commit 73a808f6b300fddcaab1d3c916d92785a1801d63 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Tue Dec 17 18:17:33 2013 +0100 test::FiltersTest: add support for export tests For now, this is only implemented for the Writer RTF filter. Change-Id: I0c7ae5b0e544bd4738652a38474f4d262ce65661 diff --git a/include/unotest/filters-test.hxx b/include/unotest/filters-test.hxx index 64e368c..3bcdf07 100644 --- a/include/unotest/filters-test.hxx +++ b/include/unotest/filters-test.hxx @@ -43,7 +43,9 @@ public: //Clipboard id for SfxFilter unsigned int nClipboardID = 0, //additional filter version for SfxFilter - unsigned int nFilterVersion = 0); + unsigned int nFilterVersion = 0, + //export or import? + bool bExport = false); virtual bool load( const OUString &rFilter, @@ -53,6 +55,17 @@ public: unsigned int nClipboardID, unsigned int nFilterVersion) = 0; + virtual bool save( + const OUString &/*rFilter*/, + const OUString &/*rURL*/, + const OUString &/*rUserData*/, + unsigned int /*nFilterFlags*/, + unsigned int /*nClipboardID*/, + unsigned int /*nFilterVersion*/) + { + return true; + } + protected: ~FiltersTest() {} @@ -63,7 +76,8 @@ protected: const OUString &rUserData, unsigned int nFilterFlags, unsigned int nClipboardID, - unsigned int nFilterVersion); + unsigned int nFilterVersion, + bool bExport); }; } diff --git a/sw/qa/core/exportdata/rtf/fail/.gitignore b/sw/qa/core/exportdata/rtf/fail/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sw/qa/core/exportdata/rtf/indeterminate/.gitignore b/sw/qa/core/exportdata/rtf/indeterminate/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sw/qa/extras/rtfexport/data/abi10201.rtf b/sw/qa/core/exportdata/rtf/pass/abi10201.rtf similarity index 100% rename from sw/qa/extras/rtfexport/data/abi10201.rtf rename to sw/qa/core/exportdata/rtf/pass/abi10201.rtf diff --git a/sw/qa/core/filters-test.cxx b/sw/qa/core/filters-test.cxx index b47abb4..7c811a4 100644 --- a/sw/qa/core/filters-test.cxx +++ b/sw/qa/core/filters-test.cxx @@ -21,6 +21,7 @@ #include <sfx2/sfxsids.hrc> #include <svl/stritem.hxx> +#include <unotools/tempfile.hxx> #include "init.hxx" #include "iodetect.hxx" @@ -45,6 +46,9 @@ public: virtual bool load( const OUString &rFilter, const OUString &rURL, const OUString &rUserData, unsigned int nFilterFlags, unsigned int nClipboardID, unsigned int nFilterVersion); + virtual bool save( const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, unsigned int nFilterFlags, + unsigned int nClipboardID, unsigned int nFilterVersion) SAL_OVERRIDE; virtual void setUp(); // Ensure CVEs remain unbroken @@ -55,6 +59,9 @@ public: CPPUNIT_TEST_SUITE_END(); private: + bool filter( const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, unsigned int nFilterFlags, + unsigned int nClipboardID, unsigned int nFilterVersion, bool bExport); uno::Reference<uno::XInterface> m_xWriterComponent; }; @@ -62,6 +69,20 @@ bool SwFiltersTest::load(const OUString &rFilter, const OUString &rURL, const OUString &rUserData, unsigned int nFilterFlags, unsigned int nClipboardID, unsigned int nFilterVersion) { + return filter(rFilter, rURL, rUserData, nFilterFlags, nClipboardID, nFilterVersion, false); +} + +bool SwFiltersTest::save(const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, unsigned int nFilterFlags, + unsigned int nClipboardID, unsigned int nFilterVersion) +{ + return filter(rFilter, rURL, rUserData, nFilterFlags, nClipboardID, nFilterVersion, true); +} + +bool SwFiltersTest::filter(const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, unsigned int nFilterFlags, + unsigned int nClipboardID, unsigned int nFilterVersion, bool bExport) +{ SfxFilter* pFilter = new SfxFilter( rFilter, OUString(), nFilterFlags, nClipboardID, OUString(), 0, OUString(), @@ -79,9 +100,21 @@ bool SwFiltersTest::load(const OUString &rFilter, const OUString &rURL, } bool bLoaded = xDocShRef->DoLoad(pSrcMed); + if (!bExport) + { + if (xDocShRef.Is()) + xDocShRef->DoClose(); + return bLoaded; + } + + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + SfxMedium aDstMed(aTempFile.GetURL(), STREAM_STD_WRITE); + aDstMed.SetFilter(pFilter); + bool bSaved = xDocShRef->DoSaveAs(aDstMed); if (xDocShRef.Is()) xDocShRef->DoClose(); - return bLoaded; + return bSaved; } #define isstorage 1 @@ -125,6 +158,14 @@ void SwFiltersTest::testCVEs() testDir(OUString("HTML"), getURLFromSrc("/sw/qa/core/data/html/"), OUString(sHTML)); + + testDir("Rich Text Format", + getURLFromSrc("/sw/qa/core/exportdata/rtf/"), + OUString(), + SFX_FILTER_STARONEFILTER, + 0, + 0, + /*bExport=*/true); } void SwFiltersTest::setUp() diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index 6a483b7..b4d7254 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -579,11 +579,6 @@ DECLARE_RTFEXPORT_TEST(testFdo66743, "fdo66743.rtf") CPPUNIT_ASSERT_EQUAL(sal_Int32(0xd8d8d8), getProperty<sal_Int32>(xCell, "BackColor")); } -DECLARE_RTFEXPORT_TEST(testAbi10201, "abi10201.rtf") -{ - // crashtest -} - DECLARE_RTFEXPORT_TEST(testI23357, "i23357.odt") { // crashtest diff --git a/unotest/source/cpp/filters-test.cxx b/unotest/source/cpp/filters-test.cxx index 3b613f3..2b07ff8 100644 --- a/unotest/source/cpp/filters-test.cxx +++ b/unotest/source/cpp/filters-test.cxx @@ -53,7 +53,7 @@ void decode(const OUString& rIn, const OUString &rOut) void FiltersTest::recursiveScan(filterStatus nExpected, const OUString &rFilter, const OUString &rURL, const OUString &rUserData, unsigned int nFilterFlags, - unsigned int nClipboardID, unsigned int nFilterVersion) + unsigned int nClipboardID, unsigned int nFilterVersion, bool bExport) { osl::Directory aDir(rURL); @@ -67,7 +67,7 @@ void FiltersTest::recursiveScan(filterStatus nExpected, if (aFileStatus.getFileType() == osl::FileStatus::Directory) { recursiveScan(nExpected, rFilter, sURL, rUserData, - nFilterFlags, nClipboardID, nFilterVersion); + nFilterFlags, nClipboardID, nFilterVersion, bExport); } else { @@ -106,8 +106,13 @@ void FiltersTest::recursiveScan(filterStatus nExpected, //the hanging input file is visible fprintf(stderr, "%s,", aRes.getStr()); sal_uInt32 nStartTime = osl_getGlobalTimer(); - bool bRes = load(rFilter, sURL, rUserData, nFilterFlags, - nClipboardID, nFilterVersion); + bool bRes; + if (!bExport) + bRes = load(rFilter, sURL, rUserData, nFilterFlags, + nClipboardID, nFilterVersion); + else + bRes = save(rFilter, sURL, rUserData, nFilterFlags, + nClipboardID, nFilterVersion); sal_uInt32 nEndTime = osl_getGlobalTimer(); if (bEncrypted) @@ -126,18 +131,18 @@ void FiltersTest::recursiveScan(filterStatus nExpected, void FiltersTest::testDir(const OUString &rFilter, const OUString &rURL, const OUString &rUserData, unsigned int nFilterFlags, unsigned int nClipboardID, - unsigned int nFilterVersion) + unsigned int nFilterVersion, bool bExport) { fprintf(stderr, "File tested,Test Result,Execution Time (ms)\n"); recursiveScan(test::pass, rFilter, rURL + "pass", - rUserData, nFilterFlags, nClipboardID, nFilterVersion); + rUserData, nFilterFlags, nClipboardID, nFilterVersion, bExport); recursiveScan(test::fail, rFilter, rURL + "fail", - rUserData, nFilterFlags, nClipboardID, nFilterVersion); + rUserData, nFilterFlags, nClipboardID, nFilterVersion, bExport); recursiveScan(test::indeterminate, rFilter, rURL + "indeterminate", - rUserData, nFilterFlags, nClipboardID, nFilterVersion); + rUserData, nFilterFlags, nClipboardID, nFilterVersion, bExport); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits