diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2011-11-30 16:12:48 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2011-11-30 17:36:32 +0100 |
commit | 286665960a3474ddee1f01807de10d5251f49848 (patch) | |
tree | e4856049405712523a34d7075093eb0111ec79f9 /sc | |
parent | b96e62c5ff6bdbe4c5d3cfcfb3cb238943760a19 (diff) |
port a failing sc subsequenttest to c++
potential improvements: only load the file once and use fods instead of
ods
Diffstat (limited to 'sc')
-rw-r--r-- | sc/CppunitTest_sc_unoapi_xcellrangesquery.mk | 141 | ||||
-rw-r--r-- | sc/Module_sc.mk | 5 | ||||
-rw-r--r-- | sc/qa/unoapi/testdocuments/xcellrangesquery.ods | bin | 0 -> 8881 bytes | |||
-rw-r--r-- | sc/qa/unoapi/xcellrangesquery.cxx | 179 |
4 files changed, 323 insertions, 2 deletions
diff --git a/sc/CppunitTest_sc_unoapi_xcellrangesquery.mk b/sc/CppunitTest_sc_unoapi_xcellrangesquery.mk new file mode 100644 index 000000000000..2dc2f18547c1 --- /dev/null +++ b/sc/CppunitTest_sc_unoapi_xcellrangesquery.mk @@ -0,0 +1,141 @@ +# -*- 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 +# Markus Mohrhard <markus.mohrhard@googlemail.com> +# Portions created by the Initial Developer are Copyright (C) 2011 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_unoapi_xcellrangesquery)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sc_unoapi_xcellrangesquery, \ + sc/qa/unoapi/xcellrangesquery \ +)) + +$(eval $(call gb_CppunitTest_add_linked_libs,sc_unoapi_xcellrangesquery, \ + 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 \ + ucbhelper \ + unotest \ + utl \ + vbahelper \ + vcl \ + xo \ + $(gb_STDLIBS) \ +)) + +$(eval $(call gb_CppunitTest_set_include,sc_unoapi_xcellrangesquery,\ + -I$(realpath $(SRCDIR)/sc/source/ui/inc) \ + -I$(realpath $(SRCDIR)/sc/inc) \ + $$(INCLUDE) \ + -I$(OUTDIR)/inc \ +)) + +$(eval $(call gb_CppunitTest_add_api,sc_unoapi_xcellrangesquery,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_CppunitTest_uses_ure,sc_unoapi_xcellrangesquery)) + +$(eval $(call gb_CppunitTest_add_type_rdbs,sc_unoapi_xcellrangesquery,\ + types \ +)) + +$(eval $(call gb_CppunitTest_add_components,sc_unoapi_xcellrangesquery,\ + basic/util/sb \ + comphelper/util/comphelp \ + dbaccess/util/dba \ + fileaccess/source/fileacc \ + filter/source/config/cache/filterconfig1 \ + forms/util/frm \ + framework/util/fwk \ + i18npool/util/i18npool \ + 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 \ + sc/util/vbaobj \ + scripting/source/basprov/basprov \ + scripting/util/scriptframe \ + sfx2/util/sfx \ + sot/util/sot \ + svl/source/fsstor/fsstorage \ + toolkit/util/tk \ + unotools/util/utl \ + unoxml/source/rdf/unordf \ + unoxml/source/service/unoxml \ +)) + +$(eval $(call gb_CppunitTest_add_old_components,sc_unoapi_xcellrangesquery,\ + configmgr \ + ucb1 \ + ucpfile1 \ + ucptdoc1 \ +)) + +$(eval $(call gb_CppunitTest_set_args,sc_unoapi_xcellrangesquery,\ + --headless \ + --protector unoexceptionprotector$(gb_Library_DLLEXT) unoexceptionprotector \ + "-env:CONFIGURATION_LAYERS=xcsxcu:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry) module:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry/spool) xcsxcu:$(call gb_CppunitTarget__make_url,$(SRCDIR)/sc/qa/unit/data/registry)" \ +)) + # .../spool is required for the (somewhat strange) filter configuration + +# we need to +# a) explicitly depend on library msword because it is not implied by a link +# relation +# b) explicitly depend on the sc resource files needed at unit-test runtime +$(call gb_CppunitTest_get_target,sc_unoapi_xcellrangesquery) : $(call gb_Library_get_target,scfilt) $(WORKDIR)/AllLangRes/sc + +# vim: set noet sw=4 ts=4: diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 0e152203ecf3..5b2d9fd27e42 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -35,12 +35,13 @@ $(eval $(call gb_Module_add_targets,sc,\ )) $(eval $(call gb_Module_add_check_targets,sc,\ - CppunitTest_sc_filters_test \ - CppunitTest_sc_ucalc \ + CppunitTest_sc_filters_test \ + CppunitTest_sc_ucalc \ )) $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\ CppunitTest_sc_macros_test \ + CppunitTest_sc_unoapi_xcellrangesquery \ JunitTest_sc_complex \ JunitTest_sc_unoapi \ )) diff --git a/sc/qa/unoapi/testdocuments/xcellrangesquery.ods b/sc/qa/unoapi/testdocuments/xcellrangesquery.ods Binary files differnew file mode 100644 index 000000000000..562229c4070f --- /dev/null +++ b/sc/qa/unoapi/testdocuments/xcellrangesquery.ods diff --git a/sc/qa/unoapi/xcellrangesquery.cxx b/sc/qa/unoapi/xcellrangesquery.cxx new file mode 100644 index 000000000000..3d395d60ebf2 --- /dev/null +++ b/sc/qa/unoapi/xcellrangesquery.cxx @@ -0,0 +1,179 @@ +/* -*- 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 Markus Mohrhard <markus.mohrhard@googlemail.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. + */ + +#include <test/unoapi_test.hxx> + +#include <com/sun/star/sheet/XSpreadsheetDocument.hpp> +#include <com/sun/star/sheet/XSpreadsheet.hpp> +#include <com/sun/star/sheet/XCellRangesQuery.hpp> +#include <com/sun/star/sheet/XSheetCellRanges.hpp> +#include <com/sun/star/table/CellAddress.hpp> +#include <com/sun/star/sheet/CellFlags.hpp> + +using namespace com::sun::star; + + +namespace ScCellRangeObj { + +class ScXCellRangesQuery : public UnoApiTest +{ +public: + ScXCellRangesQuery(); + + uno::Reference<sheet::XCellRangesQuery> init(); + + void setRowVisible(bool bVisible); + + //Testcases + void testQueryColumnDifference(); + void testQueryContentDifference(); + void testQueryEmptyCells(); + void testQueryFormulaCells(); + void testQueryIntersection(); + void testQueryRowDifference(); + void testQueryVisibleCells(); + + CPPUNIT_TEST_SUITE(ScXCellRangesQuery); + CPPUNIT_TEST(testQueryColumnDifference); + CPPUNIT_TEST(testQueryContentDifference); + CPPUNIT_TEST(testQueryEmptyCells); + //looks broken + //CPPUNIT_TEST(testQueryFormulaCells); + CPPUNIT_TEST(testQueryIntersection); + CPPUNIT_TEST(testQueryRowDifference); + CPPUNIT_TEST_SUITE_END(); + +}; + +ScXCellRangesQuery::ScXCellRangesQuery() +{ + +} + +uno::Reference<sheet::XCellRangesQuery> ScXCellRangesQuery::init() +{ + rtl::OUString aFileURL; + const rtl::OUString aFileBase(RTL_CONSTASCII_USTRINGPARAM("xcellrangesquery.ods")); + createFileURL(aFileBase, aFileURL); + std::cout << rtl::OUStringToOString(aFileURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + uno::Reference< lang::XComponent > xComponent = loadFromDesktop(aFileURL); + uno::Reference< sheet::XSpreadsheetDocument> xDoc (xComponent, UNO_QUERY_THROW); + uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW); + uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW); + + CPPUNIT_ASSERT_MESSAGE("Could not create interface of type XSpreadsheet", xSheet.is()); + + uno::Reference<sheet::XCellRangesQuery> xReturn(xSheet->getCellRangeByPosition(0,0,3,4), UNO_QUERY_THROW); + + CPPUNIT_ASSERT_MESSAGE("Could not create object of type XCellRangesQuery", xReturn.is()); + return xReturn; +} + +void ScXCellRangesQuery::testQueryColumnDifference() +{ + rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.B1:C1,Sheet1.B3:C5")); + uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init(); + uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryColumnDifferences(table::CellAddress(0, 1, 1)); + rtl::OUString aResult = xRanges->getRangeAddressesAsString(); + std::cout << "testQueryColumnDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + CPPUNIT_ASSERT_MESSAGE("testQueryColumnDifference", aResult == aExpected); +} + +void ScXCellRangesQuery::testQueryContentDifference() +{ + rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.B2:B3")); + uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init(); + uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryContentCells(sheet::CellFlags::VALUE); + rtl::OUString aResult = xRanges->getRangeAddressesAsString(); + std::cout << "testQueryContentDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + CPPUNIT_ASSERT_MESSAGE("testQueryContentDifference", aResult == aExpected); +} + +void ScXCellRangesQuery::testQueryEmptyCells() +{ + rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A1:A5,Sheet1.B1:C1,Sheet1.B5,Sheet1.C3:C5,Sheet1.D1:D5")); + uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init(); + uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryEmptyCells(); + rtl::OUString aResult = xRanges->getRangeAddressesAsString(); + std::cout << "testQueryEmptyCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + CPPUNIT_ASSERT_MESSAGE("testQueryEmptyCells", aResult == aExpected); +} + +void ScXCellRangesQuery::testQueryFormulaCells() +{ + rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.C2")); + uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init(); + uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryFormulaCells(sheet::CellFlags::FORMULA); + rtl::OUString aResult = xRanges->getRangeAddressesAsString(); + std::cout << "testQueryFormulaCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected); +} + +void ScXCellRangesQuery::testQueryIntersection() +{ + rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.D4:D5")); + uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init(); + uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryIntersection(table::CellRangeAddress(0,3,3,7,7)); + rtl::OUString aResult = xRanges->getRangeAddressesAsString(); + std::cout << "testQueryIntersection: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected); +} + +void ScXCellRangesQuery::testQueryRowDifference() +{ + rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A2:A4,Sheet1.C2:D4")); + uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init(); + uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryRowDifferences(table::CellAddress(0,1,1)); + rtl::OUString aResult = xRanges->getRangeAddressesAsString(); + std::cout << "testQueryRowDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected); +} + +void ScXCellRangesQuery::testQueryVisibleCells() +{ + setRowVisible(false); + rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A2")); + uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init(); + uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryVisibleCells(); + rtl::OUString aResult = xRanges->getRangeAddressesAsString(); + std::cout << "testQueryVisibleCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl; + CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected); +} + +void ScXCellRangesQuery::setRowVisible(bool bVisible) +{ + +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ScXCellRangesQuery); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |