sc/CppunitTest_sc_subsequent_export_test.mk | 144 ++++++++++++++ sc/Module_sc.mk | 1 sc/qa/unit/subsequent_export-test.cxx | 277 ++++++++++++++++++++++++++++ 3 files changed, 422 insertions(+)
New commits: commit f365b6f57a674afac9ee62a3f47bc6859b263547 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Fri Oct 26 19:50:27 2012 +0200 remove the temp file after loading Change-Id: I8ba88cf9b19612800beac5e200bbaeff6da32f97 diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 3ea5b10..ba190b9 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -105,7 +105,7 @@ ScDocShellRef ScExportTest::saveAndReloadPassword(ScDocShell* pShell, const rtl: { utl::TempFile aTempFile; - //aTempFile.EnableKillingFile(); + aTempFile.EnableKillingFile(); SfxMedium aStoreMedium( aTempFile.GetURL(), STREAM_STD_WRITE ); sal_uInt32 nExportFormat = 0; if (nFormatType) @@ -128,7 +128,7 @@ ScDocShellRef ScExportTest::saveAndReloadPassword(ScDocShell* pShell, const rtl: pShell->DoSaveAs( aStoreMedium ); pShell->DoClose(); - std::cout << "File: " << aTempFile.GetURL() << std::endl; + //std::cout << "File: " << aTempFile.GetURL() << std::endl; sal_uInt32 nFormat = 0; if (nFormatType) commit 2f8db10bdc1bbf2fcb975665f3d9651b9625cc54 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Fri Oct 26 19:49:47 2012 +0200 this test should not been disabled Change-Id: I21aa786a9f214ba5137d35497318c4f088456845 diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 7c6ca95..7f4cf50 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -49,6 +49,7 @@ $(eval $(call gb_Module_add_check_targets,sc,\ )) $(eval $(call gb_Module_add_slowcheck_targets,sc, \ + CppunitTest_sc_subsequent_filters_test \ CppunitTest_sc_subsequent_export_test \ )) commit e33a3f298b1cf984e6f52534010033360123c4aa Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Fri Oct 26 19:48:20 2012 +0200 disable the password test for some platforms Change-Id: I31c91bec6807b699333f646d758078ce5e69570d diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 2bb7ea6..3ea5b10 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -79,7 +79,9 @@ public: CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); +#if !defined(MACOSX) && !defined(DRAGONFLY) && !defined(WNT) CPPUNIT_TEST(testPasswordExport); +#endif CPPUNIT_TEST_SUITE_END(); private: commit 4b419d30d8782e7206b94dcf90bf386f6fecf407 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Fri Oct 26 19:47:14 2012 +0200 implement export password test Change-Id: I90ef759639c8b1410ec314fed4ff0fd877d8e224 diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 8d59da0..2bb7ea6 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -16,10 +16,12 @@ #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 @@ -70,10 +72,14 @@ public: 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 ); void test(); + void testPasswordExport(); + CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); + CPPUNIT_TEST(testPasswordExport); CPPUNIT_TEST_SUITE_END(); private: @@ -92,6 +98,60 @@ void ScFiltersTest::createFileURL(const rtl::OUString& aFileBase, const rtl::OUS } */ +ScDocShellRef ScExportTest::saveAndReloadPassword(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) + 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); + SfxItemSet* pExportSet = aStoreMedium.GetItemSet(); + uno::Sequence< beans::NamedValue > aEncryptionData = comphelper::OStorageHelper::CreatePackageEncryptionData( rtl::OUString("test") ); + uno::Any xEncryptionData; + xEncryptionData <<= aEncryptionData; + pExportSet->Put(SfxUnoAnyItem(SID_ENCRYPTIONDATA, xEncryptionData)); + + uno::Reference< embed::XStorage > xMedStorage = aStoreMedium.GetStorage(); + ::comphelper::OStorageHelper::SetCommonStorageEncryptionData( xMedStorage, aEncryptionData ); + + pShell->DoSaveAs( aStoreMedium ); + pShell->DoClose(); + + std::cout << "File: " << aTempFile.GetURL() << std::endl; + + sal_uInt32 nFormat = 0; + if (nFormatType) + nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS; + SfxFilter* pFilter = new SfxFilter( + rFilter, + rtl::OUString(), nFormatType, nFormat, rTypeName, 0, rtl::OUString(), + rUserData, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) ); + pFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT); + + ScDocShellRef xDocShRef = new ScDocShell; + SfxMedium* pSrcMed = new SfxMedium(aTempFile.GetURL(), STREAM_STD_READ); + SfxItemSet* pSet = pSrcMed->GetItemSet(); + pSet->Put(SfxStringItem(SID_PASSWORD, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test")))); + pSrcMed->SetFilter(pFilter); + if (!xDocShRef->DoLoad(pSrcMed)) + { + xDocShRef->DoClose(); + // load failed. + xDocShRef.Clear(); + } + + return xDocShRef; +} + ScDocShellRef ScExportTest::saveAndReload(ScDocShell* pShell, const rtl::OUString &rFilter, const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType) { @@ -160,6 +220,31 @@ void ScExportTest::test() CPPUNIT_ASSERT_DOUBLES_EQUAL(aVal, 1.0, 1e-8); } +void ScExportTest::testPasswordExport() +{ + ScDocShell* pShell = new ScDocShell( + SFXMODEL_STANDARD | + SFXMODEL_DISABLE_EMBEDDED_SCRIPTS | + SFXMODEL_DISABLE_DOCUMENT_RECOVERY); + pShell->DoInitNew(); + + ScDocument* pDoc = pShell->GetDocument(); + + pDoc->SetValue(0,0,0, 1.0); + 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); + + CPPUNIT_ASSERT(xDocSh.Is()); + ScDocument* pLoadedDoc = xDocSh->GetDocument(); + double aVal = pLoadedDoc->GetValue(0,0,0); + CPPUNIT_ASSERT_DOUBLES_EQUAL(aVal, 1.0, 1e-8); +} + ScExportTest::ScExportTest() : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data")) { commit f48886d9df91e62f68c9b6d5bea5a3d3f1d14105 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Fri Oct 26 18:29:06 2012 +0200 add basic calc export test Change-Id: Idd1f670dba9d88233a22b9f6ff084bf2ef41fb54 diff --git a/sc/CppunitTest_sc_subsequent_export_test.mk b/sc/CppunitTest_sc_subsequent_export_test.mk new file mode 100644 index 0000000..41a6855 --- /dev/null +++ b/sc/CppunitTest_sc_subsequent_export_test.mk @@ -0,0 +1,144 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# 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 or as specified alternatively below. 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. +# +# Major Contributor(s): +# Copyright (C) 2011 Red Hat, Inc., Caolán McNamara <caol...@redhat.com> +# (initial developer) +# +# All Rights Reserved. +# +# For minor contributions see the git repository. +# +# 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. + +$(eval $(call gb_CppunitTest_CppunitTest,sc_subsequent_export_test)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sc_subsequent_export_test, \ + sc/qa/unit/subsequent_export-test \ +)) + +$(eval $(call gb_CppunitTest_use_externals,sc_subsequent_export_test, \ + mdds_headers \ + orcus \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sc_subsequent_export_test, \ + avmedia \ + basegfx \ + comphelper \ + cppu \ + cppuhelper \ + drawinglayer \ + editeng \ + fileacc \ + for \ + forui \ + i18nisolang1 \ + msfilter \ + oox \ + sal \ + salhelper \ + sax \ + sc \ + sfx \ + sot \ + svl \ + svt \ + svx \ + svxcore \ + test \ + tl \ + tk \ + ucbhelper \ + unotest \ + utl \ + vcl \ + xo \ + $(if $(filter $(OS),ANDROID), \ + lo-bootstrap \ + ) \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_set_include,sc_subsequent_export_test,\ + -I$(SRCDIR)/sc/source/ui/inc \ + -I$(SRCDIR)/sc/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_api,sc_subsequent_export_test,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_CppunitTest_use_ure,sc_subsequent_export_test)) + +$(eval $(call gb_CppunitTest_use_components,sc_subsequent_export_test,\ + chart2/source/controller/chartcontroller \ + chart2/source/chartcore \ + comphelper/util/comphelp \ + configmgr/source/configmgr \ + dbaccess/util/dba \ + embeddedobj/util/embobj \ + eventattacher/source/evtatt \ + fileaccess/source/fileacc \ + filter/source/config/cache/filterconfig1 \ + forms/util/frm \ + framework/util/fwk \ + i18npool/util/i18npool \ + i18npool/source/search/i18nsearch \ + oox/util/oox \ + package/source/xstor/xstor \ + package/util/package2 \ + sax/source/expatwrap/expwrap \ + sax/source/fastparser/fastsax \ + sc/util/sc \ + sc/util/scfilt \ + scaddins/source/analysis/analysis \ + scaddins/source/datefunc/date \ + sfx2/util/sfx \ + sot/util/sot \ + svl/util/svl \ + svtools/util/svt \ + toolkit/util/tk \ + ucb/source/core/ucb1 \ + ucb/source/ucp/file/ucpfile1 \ + ucb/source/ucp/tdoc/ucptdoc1 \ + unotools/util/utl \ + unoxml/source/rdf/unordf \ + unoxml/source/service/unoxml \ + xmlsecurity/util/xsec_fw \ + xmlsecurity/util/xmlsecurity \ +)) + +ifeq ($(OS),WNT) +$(eval $(call gb_CppunitTest_use_components,sc_subsequent_export_test,\ + xmlsecurity/util/xsec_xmlsec.windows \ +)) +else +ifneq ($(filter-out IOS ANDROID,$(OS)),) #FIXME: get nss&xmlsec building +$(eval $(call gb_CppunitTest_use_components,sc_subsequent_export_test,\ + xmlsecurity/util/xsec_xmlsec \ +)) +endif +endif + +$(eval $(call gb_CppunitTest_use_configuration,sc_subsequent_export_test)) + +$(eval $(call gb_CppunitTest_use_filter_configuration,sc_subsequent_export_test)) + +# vim: set noet sw=4 ts=4: diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 4a53487..7c6ca95 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -49,7 +49,7 @@ $(eval $(call gb_Module_add_check_targets,sc,\ )) $(eval $(call gb_Module_add_slowcheck_targets,sc, \ - CppunitTest_sc_subsequent_filters_test \ + CppunitTest_sc_subsequent_export_test \ )) # Disabled to allow the check tinderbox execute the sd tests diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx new file mode 100644 index 0000000..8d59da0 --- /dev/null +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -0,0 +1,190 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/config.h> +#include <unotest/filters-test.hxx> +#include <test/bootstrapfixture.hxx> +#include <rtl/strbuf.hxx> +#include <osl/file.hxx> + +#include <sfx2/app.hxx> +#include <sfx2/docfilt.hxx> +#include <sfx2/docfile.hxx> +#include <sfx2/sfxmodelfactory.hxx> +#include <svl/stritem.hxx> + +#include <unotools/tempfile.hxx> + +#define CALC_DEBUG_OUTPUT 0 +#define TEST_BUG_FILES 0 + +#include "helper/qahelper.hxx" + +#include "docsh.hxx" +#include "postit.hxx" +#include "patattr.hxx" +#include "scitems.hxx" +#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; sal_uLong 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 +{ +public: + ScExportTest(); + + virtual void setUp(); + virtual void tearDown(); + + ScDocShellRef saveAndReload( ScDocShell*, const rtl::OUString&, const rtl::OUString&, const rtl::OUString&, sal_uLong ); + + void test(); + CPPUNIT_TEST_SUITE(ScExportTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); + +private: + rtl::OUString m_aBaseString; + uno::Reference<uno::XInterface> m_xCalcComponent; +}; + +/* +void ScFiltersTest::createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath) +{ + rtl::OUString aSep(RTL_CONSTASCII_USTRINGPARAM("/")); + rtl::OUStringBuffer aBuffer( getSrcRootURL() ); + aBuffer.append(m_aBaseString).append(aSep).append(aFileExtension); + aBuffer.append(aSep).append(aFileBase).append(aFileExtension); + rFilePath = aBuffer.makeStringAndClear(); +} +*/ + +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) + 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) + nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS; + SfxFilter* pFilter = new SfxFilter( + rFilter, + rtl::OUString(), nFormatType, nFormat, rTypeName, 0, rtl::OUString(), + rUserData, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) ); + pFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT); + + ScDocShellRef xDocShRef = new ScDocShell; + SfxMedium* pSrcMed = new SfxMedium(aTempFile.GetURL(), STREAM_STD_READ); + pSrcMed->SetFilter(pFilter); + if (!xDocShRef->DoLoad(pSrcMed)) + { + xDocShRef->DoClose(); + // load failed. + xDocShRef.Clear(); + } + + return xDocShRef; +} + +void ScExportTest::test() +{ + ScDocShell* pShell = new ScDocShell( + SFXMODEL_STANDARD | + SFXMODEL_DISABLE_EMBEDDED_SCRIPTS | + SFXMODEL_DISABLE_DOCUMENT_RECOVERY); + pShell->DoInitNew(); + + ScDocument* pDoc = pShell->GetDocument(); + + pDoc->SetValue(0,0,0, 1.0); + 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 = saveAndReload(pShell, aFilterName, rtl::OUString(), aFilterType, aFileFormats[nFormat].nFormatType); + + CPPUNIT_ASSERT(xDocSh.Is()); + ScDocument* pLoadedDoc = xDocSh->GetDocument(); + double aVal = pLoadedDoc->GetValue(0,0,0); + CPPUNIT_ASSERT_DOUBLES_EQUAL(aVal, 1.0, 1e-8); +} + +ScExportTest::ScExportTest() + : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data")) +{ +} + +void ScExportTest::setUp() +{ + test::BootstrapFixture::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( + RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.SpreadsheetDocument"))); + CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is()); +} + +void ScExportTest::tearDown() +{ + uno::Reference< lang::XComponent >( m_xCalcComponent, UNO_QUERY_THROW )->dispose(); + test::BootstrapFixture::tearDown(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ScExportTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits