diff options
Diffstat (limited to 'sc/qa/unit/subsequent_export-test.cxx')
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 197 |
1 files changed, 21 insertions, 176 deletions
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 3fd6427eb045..cb451325f323 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -14,14 +14,11 @@ #include <osl/file.hxx> #include <sfx2/app.hxx> -#include <sfx2/docfilt.hxx> #include <sfx2/docfile.hxx> #include <sfx2/frame.hxx> #include <sfx2/sfxmodelfactory.hxx> #include <svl/stritem.hxx> -#include <unotools/tempfile.hxx> -#include <comphelper/storagehelper.hxx> #define CALC_DEBUG_OUTPUT 0 #define TEST_BUG_FILES 0 @@ -35,35 +32,10 @@ #include "document.hxx" #include "cellform.hxx" -#define ODS_FORMAT_TYPE 50331943 -#define XLS_FORMAT_TYPE 318767171 -#define XLSX_FORMAT_TYPE 268959811 -#define LOTUS123_FORMAT_TYPE 268435649 - -#define ODS 0 -#define XLS 1 -#define XLSX 2 -#define LOTUS123 3 - using namespace ::com::sun::star; using namespace ::com::sun::star::uno; -namespace { - -struct FileFormat { - const char* pName; const char* pFilterName; const char* pTypeName; unsigned int nFormatType; -}; - -FileFormat aFileFormats[] = { - { "ods" , "calc8", "", ODS_FORMAT_TYPE }, - { "xls" , "MS Excel 97", "calc_MS_EXCEL_97", XLS_FORMAT_TYPE }, - { "xlsx", "Calc MS Excel 2007 XML" , "MS Excel 2007 XML", XLSX_FORMAT_TYPE }, - { "123" , "Lotus", "calc_Lotus", LOTUS123_FORMAT_TYPE } -}; - -} - -class ScExportTest : public test::BootstrapFixture +class ScExportTest : public ScBootstrapFixture { public: ScExportTest(); @@ -71,8 +43,7 @@ public: virtual void setUp(); virtual void tearDown(); - ScDocShellRef saveAndReload( ScDocShell*, const rtl::OUString&, const rtl::OUString&, const rtl::OUString&, sal_uLong ); - ScDocShellRef saveAndReloadPassword( ScDocShell*, const rtl::OUString&, const rtl::OUString&, const rtl::OUString&, sal_uLong ); + ScDocShellRef saveAndReloadPassword( ScDocShell*, const OUString&, const OUString&, const OUString&, sal_uLong ); void test(); void testPasswordExport(); @@ -89,39 +60,12 @@ public: CPPUNIT_TEST_SUITE_END(); private: - rtl::OUString m_aBaseString; uno::Reference<uno::XInterface> m_xCalcComponent; - ScDocShellRef load( - const OUString& rURL, const OUString& rFilter, const OUString &rUserData, - const OUString& rTypeName, sal_Int32 nFormat, sal_uLong nFormatType, - const OUString* pPassword = NULL ); - - ScDocShellRef saveAndReload( ScDocShell* pShell, sal_Int32 nFormat ); - ScDocShellRef loadDocument( const rtl::OUString& rFileNameBase, sal_Int32 nFormat ); - void createFileURL( const rtl::OUString& aFileBase, const rtl::OUString& rFileExtension, rtl::OUString& rFilePath); - void createCSVPath(const rtl::OUString& rFileBase, rtl::OUString& rCSVPath); }; -void ScExportTest::createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath) -{ - rtl::OUString aSep("/"); - rtl::OUStringBuffer aBuffer( getSrcRootURL() ); - aBuffer.append(m_aBaseString).append(aSep).append(aFileExtension); - aBuffer.append(aSep).append(aFileBase).append(aFileExtension); - rFilePath = aBuffer.makeStringAndClear(); -} - -void ScExportTest::createCSVPath(const rtl::OUString& aFileBase, rtl::OUString& rCSVPath) -{ - rtl::OUStringBuffer aBuffer(getSrcRootPath()); - aBuffer.append(m_aBaseString).append(rtl::OUString("/contentCSV/")); - aBuffer.append(aFileBase).append(rtl::OUString("csv")); - rCSVPath = aBuffer.makeStringAndClear(); -} - -ScDocShellRef ScExportTest::saveAndReloadPassword(ScDocShell* pShell, const rtl::OUString &rFilter, - const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType) +ScDocShellRef ScExportTest::saveAndReloadPassword(ScDocShell* pShell, const OUString &rFilter, + const OUString &rUserData, const OUString& rTypeName, sal_uLong nFormatType) { utl::TempFile aTempFile; aTempFile.EnableKillingFile(); @@ -131,12 +75,12 @@ ScDocShellRef ScExportTest::saveAndReloadPassword(ScDocShell* pShell, const rtl: nExportFormat = SFX_FILTER_EXPORT | SFX_FILTER_USESOPTIONS; SfxFilter* pExportFilter = new SfxFilter( rFilter, - rtl::OUString(), nFormatType, nExportFormat, rTypeName, 0, rtl::OUString(), - rUserData, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) ); + OUString(), nFormatType, nExportFormat, rTypeName, 0, OUString(), + rUserData, OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) ); pExportFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT); aStoreMedium.SetFilter(pExportFilter); SfxItemSet* pExportSet = aStoreMedium.GetItemSet(); - uno::Sequence< beans::NamedValue > aEncryptionData = comphelper::OStorageHelper::CreatePackageEncryptionData( rtl::OUString("test") ); + uno::Sequence< beans::NamedValue > aEncryptionData = comphelper::OStorageHelper::CreatePackageEncryptionData( OUString("test") ); uno::Any xEncryptionData; xEncryptionData <<= aEncryptionData; pExportSet->Put(SfxUnoAnyItem(SID_ENCRYPTIONDATA, xEncryptionData)); @@ -154,89 +98,7 @@ ScDocShellRef ScExportTest::saveAndReloadPassword(ScDocShell* pShell, const rtl: nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS; OUString aPass("test"); - return load(aTempFile.GetURL(), rFilter, rUserData, rTypeName, nFormat, nFormatType, &aPass); -} - -ScDocShellRef ScExportTest::saveAndReload(ScDocShell* pShell, const rtl::OUString &rFilter, - const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType) -{ - - utl::TempFile aTempFile; - aTempFile.EnableKillingFile(); - SfxMedium aStoreMedium( aTempFile.GetURL(), STREAM_STD_WRITE ); - sal_uInt32 nExportFormat = 0; - if (nFormatType == ODS_FORMAT_TYPE) - nExportFormat = SFX_FILTER_EXPORT | SFX_FILTER_USESOPTIONS; - SfxFilter* pExportFilter = new SfxFilter( - rFilter, - rtl::OUString(), nFormatType, nExportFormat, rTypeName, 0, rtl::OUString(), - rUserData, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) ); - pExportFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT); - aStoreMedium.SetFilter(pExportFilter); - pShell->DoSaveAs( aStoreMedium ); - pShell->DoClose(); - - //std::cout << "File: " << aTempFile.GetURL() << std::endl; - - sal_uInt32 nFormat = 0; - if (nFormatType == ODS_FORMAT_TYPE) - nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS; - - return load(aTempFile.GetURL(), rFilter, rUserData, rTypeName, nFormat, nFormatType); -} - -ScDocShellRef ScExportTest::load( - const OUString& rURL, const OUString& rFilter, const OUString &rUserData, - const OUString& rTypeName, sal_Int32 nFormat, sal_uLong nFormatType, const OUString* pPassword ) -{ - SfxFilter* pFilter = new SfxFilter( - rFilter, - rtl::OUString(), nFormatType, nFormat, rTypeName, 0, rtl::OUString(), - rUserData, OUString("private:factory/scalc*")); - pFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT); - - ScDocShellRef xDocShRef = new ScDocShell; - xDocShRef->GetDocument()->EnableUserInteraction(false); - SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ); - pSrcMed->SetFilter(pFilter); - pSrcMed->UseInteractionHandler(false); - if (pPassword) - { - SfxItemSet* pSet = pSrcMed->GetItemSet(); - pSet->Put(SfxStringItem(SID_PASSWORD, *pPassword)); - } - if (!xDocShRef->DoLoad(pSrcMed)) - { - xDocShRef->DoClose(); - // load failed. - xDocShRef.Clear(); - } - - return xDocShRef; -} - -ScDocShellRef ScExportTest::saveAndReload( ScDocShell* pShell, sal_Int32 nFormat ) -{ - rtl::OUString aFileExtension(aFileFormats[nFormat].pName, strlen(aFileFormats[nFormat].pName), RTL_TEXTENCODING_UTF8 ); - rtl::OUString aFilterName(aFileFormats[nFormat].pFilterName, strlen(aFileFormats[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ; - rtl::OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8); - ScDocShellRef xDocSh = saveAndReload(pShell, aFilterName, rtl::OUString(), aFilterType, aFileFormats[nFormat].nFormatType); - - CPPUNIT_ASSERT(xDocSh.Is()); - return xDocSh; -} - -ScDocShellRef ScExportTest::loadDocument(const rtl::OUString& rFileName, sal_Int32 nFormat) -{ - rtl::OUString aFileExtension(aFileFormats[nFormat].pName, strlen(aFileFormats[nFormat].pName), RTL_TEXTENCODING_UTF8 ); - rtl::OUString aFilterName(aFileFormats[nFormat].pFilterName, strlen(aFileFormats[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ; - rtl::OUString aFileName; - createFileURL( rFileName, aFileExtension, aFileName ); - rtl::OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8); - unsigned int nFormatType = aFileFormats[nFormat].nFormatType; - unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0; - - return load(aFileName, aFilterName, OUString(), aFilterType, nClipboardId, nFormatType); + return load(aTempFile.GetURL(), rFilter, rUserData, rTypeName, nFormatType, nFormat, SOFFICE_FILEFORMAT_CURRENT, &aPass); } void ScExportTest::test() @@ -274,10 +136,10 @@ void ScExportTest::testPasswordExport() CPPUNIT_ASSERT(pDoc); sal_Int32 nFormat = ODS; - rtl::OUString aFileExtension(aFileFormats[nFormat].pName, strlen(aFileFormats[nFormat].pName), RTL_TEXTENCODING_UTF8 ); - rtl::OUString aFilterName(aFileFormats[nFormat].pFilterName, strlen(aFileFormats[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ; - rtl::OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8); - ScDocShellRef xDocSh = saveAndReloadPassword(pShell, aFilterName, rtl::OUString(), aFilterType, aFileFormats[nFormat].nFormatType); + OUString aFileExtension(aFileFormats[nFormat].pName, strlen(aFileFormats[nFormat].pName), RTL_TEXTENCODING_UTF8 ); + OUString aFilterName(aFileFormats[nFormat].pFilterName, strlen(aFileFormats[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ; + OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8); + ScDocShellRef xDocSh = saveAndReloadPassword(pShell, aFilterName, OUString(), aFilterType, aFileFormats[nFormat].nFormatType); CPPUNIT_ASSERT(xDocSh.Is()); ScDocument* pLoadedDoc = xDocSh->GetDocument(); @@ -287,37 +149,20 @@ void ScExportTest::testPasswordExport() void ScExportTest::testConditionalFormatExportXLSX() { - ScDocShellRef xShell = loadDocument("new_cond_format_test.", XLSX); + ScDocShellRef xShell = loadDoc("new_cond_format_test.", XLSX); CPPUNIT_ASSERT(xShell.Is()); ScDocShellRef xDocSh = saveAndReload(&(*xShell), XLSX); CPPUNIT_ASSERT(xDocSh.Is()); ScDocument* pDoc = xDocSh->GetDocument(); - rtl::OUString aCSVFile("new_cond_format_test."); - rtl::OUString aCSVPath; + OUString aCSVFile("new_cond_format_test."); + OUString aCSVPath; createCSVPath( aCSVFile, aCSVPath ); testCondFile(aCSVPath, pDoc, 0); } void ScExportTest::testMiscRowHeightExport() { - - struct TestParam - { - struct RowData - { - SCROW nStartRow; - SCROW nEndRow; - SCTAB nTab; - int nExpectedHeight; - }; - const char* sTestDoc; - int nImportType; - int nExportType; - int nRowData; - RowData* pData; - }; - TestParam::RowData DfltRowData[] = { { 0, 4, 0, 529 }, @@ -347,13 +192,13 @@ void ScExportTest::testMiscRowHeightExport() printf("aTestValues[%d] %s\n", index, OUStringToOString( sFileName, RTL_TEXTENCODING_UTF8 ).getStr() ); int nImportType = aTestValues[ index ].nImportType; int nExportType = aTestValues[ index ].nExportType; - ScDocShellRef xShell = loadDocument( sFileName, nImportType ); + ScDocShellRef xShell = loadDoc( sFileName, nImportType ); CPPUNIT_ASSERT(xShell.Is()); - ScDocShellRef xDocSh = saveAndReload(&(*xShell), nExportType ); - CPPUNIT_ASSERT(xDocSh.Is()); + xShell = saveAndReload(&(*xShell), nExportType ); + CPPUNIT_ASSERT(xShell.Is()); - ScDocument* pDoc = xDocSh->GetDocument(); + ScDocument* pDoc = xShell->GetDocument(); for (int i=0; i<aTestValues[ index ].nRowData; ++i) { @@ -372,7 +217,7 @@ void ScExportTest::testMiscRowHeightExport() } ScExportTest::ScExportTest() - : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data")) + : ScBootstrapFixture("/sc/qa/unit/data") { } @@ -383,7 +228,7 @@ void ScExportTest::setUp() // This is a bit of a fudge, we do this to ensure that ScGlobals::ensure, // which is a private symbol to us, gets called m_xCalcComponent = - getMultiServiceFactory()->createInstance(rtl::OUString( + getMultiServiceFactory()->createInstance(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.SpreadsheetDocument"))); CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is()); } |