From ab3f74fbea0337b006230a04f215d95a15ab254a Mon Sep 17 00:00:00 2001 From: Laurent Godard Date: Mon, 21 Jan 2013 16:00:01 +0100 Subject: [PATCH] sc test XSheetOutline Change-Id: Iea0576e61963dbdb72c88fe332c7cfe3e8ab7ff0 Reviewed-on: https://gerrit.libreoffice.org/1794 Reviewed-by: Noel Power Tested-by: Noel Power --- sc/CppunitTest_sc_outlineobj.mk | 129 +++++++++ sc/Module_sc.mk | 1 + sc/qa/extras/scoutlineobj.cxx | 108 +++++++ sc/qa/extras/testdocuments/ScOutlineObj.ods | Bin 0 -> 7964 bytes test/Library_subsequenttest.mk | 1 + test/Package_inc.mk | 1 + test/inc/test/sheet/xsheetoutline.hxx | 57 ++++ test/source/sheet/xsheetoutline.cxx | 296 ++++++++++++++++++++ 8 files changed, 593 insertions(+) create mode 100644 sc/CppunitTest_sc_outlineobj.mk create mode 100644 sc/qa/extras/scoutlineobj.cxx create mode 100644 sc/qa/extras/testdocuments/ScOutlineObj.ods create mode 100644 test/inc/test/sheet/xsheetoutline.hxx create mode 100644 test/source/sheet/xsheetoutline.cxx diff --git a/sc/CppunitTest_sc_outlineobj.mk b/sc/CppunitTest_sc_outlineobj.mk new file mode 100644 index 000000000000..78170354015b --- /dev/null +++ b/sc/CppunitTest_sc_outlineobj.mk @@ -0,0 +1,129 @@ +# -*- 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. +# +# The Initial Developer of the Original Code is +# Copyright (C) 2013 Laurent Godard (initial developer) +# Portions created by the Initial Developer are Copyright (C) 2013 the +# Initial Developer. All Rights Reserved. +# +# Major Contributor(s): +# +# 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_outlineobj)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sc_outlineobj, \ + sc/qa/extras/scoutlineobj \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sc_outlineobj, \ + avmedia \ + basegfx \ + comphelper \ + cppu \ + cppuhelper \ + drawinglayer \ + editeng \ + fileacc \ + for \ + forui \ + i18nisolang1 \ + msfilter \ + oox \ + sal \ + salhelper \ + sax \ + sb \ + sc \ + sfx \ + sot \ + svl \ + svt \ + svx \ + svxcore \ + test \ + tl \ + tk \ + subsequenttest \ + ucbhelper \ + unotest \ + utl \ + vbahelper \ + vcl \ + xo \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_set_include,sc_outlineobj,\ + -I$(SRCDIR)/sc/source/ui/inc \ + -I$(SRCDIR)/sc/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_api,sc_outlineobj,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_CppunitTest_use_ure,sc_outlineobj)) + +$(eval $(call gb_CppunitTest_use_components,sc_outlineobj,\ + basic/util/sb \ + comphelper/util/comphelp \ + configmgr/source/configmgr \ + dbaccess/util/dba \ + fileaccess/source/fileacc \ + filter/source/config/cache/filterconfig1 \ + forms/util/frm \ + framework/util/fwk \ + i18npool/util/i18npool \ + linguistic/source/lng \ + oox/util/oox \ + package/source/xstor/xstor \ + package/util/package2 \ + sax/source/expatwrap/expwrap \ + sax/source/fastparser/fastsax \ + sc/util/sc \ + sc/util/scd \ + sc/util/scfilt \ + $(if $(filter TRUE,$(DISABLE_SCRIPTING)),, \ + sc/util/vbaobj) \ + scripting/source/basprov/basprov \ + scripting/util/scriptframe \ + sfx2/util/sfx \ + sot/util/sot \ + svl/source/fsstor/fsstorage \ + 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 \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,sc_outlineobj)) + +$(eval $(call gb_CppunitTest_use_filter_configuration,sc_outlineobj)) + +$(eval $(call gb_CppunitTest_use_unittest_configuration,sc_outlineobj)) + +# vim: set noet sw=4 ts=4: diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 3039518dbc18..4a4fc4192b85 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -61,6 +61,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc, \ $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\ JunitTest_sc_complex \ JunitTest_sc_unoapi \ + CppunitTest_sc_outlineobj \ CppunitTest_sc_annotationobj \ CppunitTest_sc_annotationsobj \ CppunitTest_sc_cellrangeobj \ diff --git a/sc/qa/extras/scoutlineobj.cxx b/sc/qa/extras/scoutlineobj.cxx new file mode 100644 index 000000000000..3e5e964767dc --- /dev/null +++ b/sc/qa/extras/scoutlineobj.cxx @@ -0,0 +1,108 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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) 2013 Laurent Godard (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. + */ + +#include +#include + +#include +#include + +namespace sc_apitest { + +#define NUMBER_OF_TESTS 6 + +class ScOutlineObj : public UnoApiTest, apitest::XSheetOutline +{ +public: + ScOutlineObj(); + + virtual void setUp(); + virtual void tearDown(); + + virtual uno::Reference< uno::XInterface > init(); + + CPPUNIT_TEST_SUITE(ScOutlineObj); + CPPUNIT_TEST(testHideDetail); + CPPUNIT_TEST(testShowDetail); + CPPUNIT_TEST(testShowLevel); + CPPUNIT_TEST(testUngroup); + CPPUNIT_TEST(testGroup); + // CPPUNIT_TEST(testAutoOutline); + CPPUNIT_TEST(testClearOutline); + CPPUNIT_TEST_SUITE_END(); +private: + + static sal_Int32 nTest; + static uno::Reference< lang::XComponent > mxComponent; +}; + +sal_Int32 ScOutlineObj::nTest = 0; +uno::Reference< lang::XComponent > ScOutlineObj::mxComponent; + +ScOutlineObj::ScOutlineObj() +{ +} + +uno::Reference< uno::XInterface > ScOutlineObj::init() +{ + // get the test file + rtl::OUString aFileURL; + createFileURL(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ScOutlineObj.ods")), aFileURL); + if(!mxComponent.is()) + mxComponent = loadFromDesktop(aFileURL); + CPPUNIT_ASSERT_MESSAGE("Component not loaded",mxComponent.is()); + + // get the first sheet + uno::Reference< sheet::XSpreadsheetDocument > xDoc(mxComponent, UNO_QUERY_THROW); + uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW); + uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW); + + return xSheet; +} + +void ScOutlineObj::setUp() +{ + nTest++; + UnoApiTest::setUp(); +} + +void ScOutlineObj::tearDown() +{ + if (nTest == NUMBER_OF_TESTS) + closeDocument(mxComponent); + + UnoApiTest::tearDown(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ScOutlineObj); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/qa/extras/testdocuments/ScOutlineObj.ods b/sc/qa/extras/testdocuments/ScOutlineObj.ods new file mode 100644 index 0000000000000000000000000000000000000000..bc4642a33a685c42a96e1382f0ea5c8c15dec54e GIT binary patch literal 7964 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 +#include +#include + +using namespace com::sun::star; + +namespace apitest { + +class OOO_DLLPUBLIC_TEST XSheetOutline +{ +public: + virtual uno::Reference< uno::XInterface > init() = 0; + + // XSheetOutline + void testHideDetail(); + void testShowDetail(); + void testShowLevel(); + void testUngroup(); + void testGroup(); + void testAutoOutline(); + void testClearOutline(); + +protected: + ~XSheetOutline() {} +}; + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/test/source/sheet/xsheetoutline.cxx b/test/source/sheet/xsheetoutline.cxx new file mode 100644 index 000000000000..c902e65d1fc5 --- /dev/null +++ b/test/source/sheet/xsheetoutline.cxx @@ -0,0 +1,296 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 Laurent Godard lgodard.libre@laposte.net (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. + */ + +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include "cppunit/extensions/HelperMacros.h" +#include + +using namespace com::sun::star::uno; + +namespace apitest { + +const OUString colLevel1 = "OutlineSheet.A1:Z1"; +const OUString colLevel2 = "OutlineSheet.C1:W1"; +const OUString colLevel3 = "OutlineSheet.E1:U1"; +const OUString colLevel4 = "OutlineSheet.G1:S1"; + +const OUString rowLevel1 = "OutlineSheet.A1:A30"; +const OUString rowLevel2 = "OutlineSheet.A3:A27"; +const OUString rowLevel3 = "OutlineSheet.A5:A24"; +const OUString rowLevel4 = "OutlineSheet.A7:A21"; + +uno::Reference< sheet::XSpreadsheet > aSheetGlobal; + +OUString getVisibleAdress(OUString aLevelRangeString) +{ + + uno::Reference aSheetRangeAccess(aSheetGlobal, UNO_QUERY_THROW); + uno::Reference aLevelRange = aSheetRangeAccess->getCellRangeByName(aLevelRangeString); + + uno::Reference xCellRangesQuery(aLevelRange,UNO_QUERY_THROW); + uno::Reference xRanges = xCellRangesQuery->queryVisibleCells(); + OUString aResult = xRanges->getRangeAddressesAsString(); + + return aResult; + +} + +table::CellRangeAddress getAddressFromRangeString(OUString aStringAddress) +{ + + uno::Reference< table::XCellRange > aSheetRangeAccess(aSheetGlobal, UNO_QUERY_THROW); + uno::Reference aRange = aSheetRangeAccess->getCellRangeByName(aStringAddress); + + uno::Reference xCellRangeAddressable(aRange, UNO_QUERY_THROW); + table::CellRangeAddress aLevelRangeAddress = xCellRangeAddressable->getRangeAddress(); + + return aLevelRangeAddress; + +} + + + +void XSheetOutline::testHideDetail() +{ + + uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW); + uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW); + + aSheetGlobal = aSheet; + + // Column level 2 + table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(colLevel2); + aSheetOutline->hideDetail(aLevelRangeAddress); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Column level 2 not hidden", getVisibleAdress(colLevel2), OUString("")); + + // Row Level 2 + aLevelRangeAddress = getAddressFromRangeString(rowLevel2); + aSheetOutline->hideDetail(aLevelRangeAddress); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Row level 2 not hidden", getVisibleAdress(rowLevel2), OUString("")); + +} + +void XSheetOutline::testShowDetail() +{ + uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW); + uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW); + + aSheetGlobal = aSheet; + aSheetOutline->showDetail(getAddressFromRangeString(colLevel1)); + aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1)); + + // Row Level 2 + table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(rowLevel2); + aSheetOutline->showDetail(aLevelRangeAddress); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Row level 2 still hidden", getVisibleAdress(rowLevel2), rowLevel2); + + // Column Level 2 + aLevelRangeAddress = getAddressFromRangeString(colLevel2); + aSheetOutline->showDetail(aLevelRangeAddress); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Column level 2 still hidden", getVisibleAdress(colLevel2), colLevel2); + +} + +void XSheetOutline::testShowLevel() +{ + + uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW); + uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW); + + aSheetGlobal = aSheet; + + table::CellRangeAddress aLevelRangeAddress; + + // test columns + + table::CellRangeAddress aLevel1 = getAddressFromRangeString(colLevel1); + table::CellRangeAddress aLevel2 = getAddressFromRangeString(colLevel2); + table::CellRangeAddress aLevel3 = getAddressFromRangeString(colLevel3); + table::CellRangeAddress aLevel4 = getAddressFromRangeString(colLevel4); + + aSheetOutline->showDetail(getAddressFromRangeString(colLevel1)); + aSheetOutline->showDetail(getAddressFromRangeString(colLevel2)); + aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1)); + + aSheetOutline->hideDetail(aLevel1); + aSheetOutline->hideDetail(aLevel2); + aSheetOutline->hideDetail(aLevel3); + aSheetOutline->hideDetail(aLevel4); + + aSheetOutline->showLevel(2, table::TableOrientation_COLUMNS); + + std::cout << " verifiy showLevel col apres" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl; + + // verify that level 2 and level 1 are shown --> column 0..3 & column 22..26 + // level 3 & 4 are hidden --> column 4..19 + + CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString("OutlineSheet.A1:D1"), getVisibleAdress("OutlineSheet.A1:D1")); + CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString("OutlineSheet.V1:Z1"), getVisibleAdress("OutlineSheet.V1:Z1")); + CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString(""), getVisibleAdress(colLevel3)); + +/* FIXME !! + + // test Rows + + aLevel1 = getAddressFromRangeString(rowLevel1); + aLevel2 = getAddressFromRangeString(rowLevel2); + aLevel3 = getAddressFromRangeString(rowLevel3); + aLevel4 = getAddressFromRangeString(rowLevel4); + + aSheetOutline->showDetail(getAddressFromRangeString(colLevel1)); + aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1)); + aSheetOutline->showDetail(getAddressFromRangeString(rowLevel2)); + + std::cout << " verifiy showLevel row avant" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl; + + aSheetOutline->hideDetail(aLevel1); + aSheetOutline->hideDetail(aLevel2); + aSheetOutline->hideDetail(aLevel3); + aSheetOutline->hideDetail(aLevel4); + + std::cout << " verifiy showLevel row juste avant" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl; + + aSheetOutline->showLevel(2, table::TableOrientation_ROWS); + + std::cout << " verifiy showLevel row apres" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl; + + // verify rows visible 0..3 & 24..29 + // verfiy rows hidden 4..23 + + CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A1:A4"), getVisibleAdress("OutlineSheet.A1:A4")); + CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A25:A30"), getVisibleAdress("OutlineSheet.A25:A30")); + CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString(""), getVisibleAdress(rowLevel3)); + +*/ + +} + +void XSheetOutline::testGroup() +{ + + uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW); + uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW); + + aSheetGlobal = aSheet; + + // Column level 2 + OUString aNewString = "OutlineSheet.AB1:AG1"; + table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(aNewString); + aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_COLUMNS); + + aSheetOutline->hideDetail(aLevelRangeAddress); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("testGroup Column still visible", getVisibleAdress(aNewString), OUString("")); + + // Row Level 2 + aNewString = "OutlineSheet.A50:A60"; + aLevelRangeAddress = getAddressFromRangeString(aNewString); + aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_ROWS); + + aSheetOutline->hideDetail(aLevelRangeAddress); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("testGroup Row still visible", getVisibleAdress(aNewString), OUString("")); + +} + +void XSheetOutline::testUngroup() +{ + uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW); + uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW); + + aSheetGlobal = aSheet; + + // New Column level + OUString aNewString = "OutlineSheet.BB1:BG1"; + table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(aNewString); + aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_COLUMNS); + aSheetOutline->hideDetail(aLevelRangeAddress); + + aSheetOutline->ungroup(aLevelRangeAddress, table::TableOrientation_COLUMNS); + + aSheetOutline->showDetail(aLevelRangeAddress); + // should remain hidden ? + + CPPUNIT_ASSERT_EQUAL_MESSAGE("testUnGroup Column becomes visible after ungroup", getVisibleAdress(aNewString), OUString("")); + + // New Row level + aNewString = "OutlineSheet.A70:A80"; + aLevelRangeAddress = getAddressFromRangeString(aNewString); + aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_ROWS); + aSheetOutline->hideDetail(aLevelRangeAddress); + + aSheetOutline->ungroup(aLevelRangeAddress, table::TableOrientation_ROWS); + + aSheetOutline->showDetail(aLevelRangeAddress); + // should remain hidden ? + + CPPUNIT_ASSERT_EQUAL_MESSAGE("testUnGroup Row becomes visible after ungroup", getVisibleAdress(aNewString), OUString("")); + +} + +void XSheetOutline::testAutoOutline() +{ +} + +void XSheetOutline::testClearOutline() +{ + uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW); + uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW); + + aSheetGlobal = aSheet; + + aSheetOutline->clearOutline(); + + table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(colLevel1); + aSheetOutline->hideDetail(aLevelRangeAddress); + aLevelRangeAddress = getAddressFromRangeString(rowLevel1); + aSheetOutline->hideDetail(aLevelRangeAddress); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("testClearOutline Columns are hidden after clear", getVisibleAdress(colLevel1), colLevel1); + CPPUNIT_ASSERT_EQUAL_MESSAGE("testClearOutline Rows are hidden after clear", getVisibleAdress(rowLevel1), rowLevel1); + +} + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */