Kaydet (Commit) f48886d9 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

add basic calc export test

Change-Id: Idd1f670dba9d88233a22b9f6ff084bf2ef41fb54
üst 5646906f
# -*- 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 <caolanm@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:
......@@ -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
......
/* -*- 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: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment