diff options
author | Jens Carl <j.carl43@gmx.de> | 2017-11-03 07:15:10 +0000 |
---|---|---|
committer | Jens Carl <j.carl43@gmx.de> | 2017-11-03 19:08:42 +0100 |
commit | 6f29841acb201b118bbf5815163fb50d83929e9f (patch) | |
tree | 3365dec960bdab93d186b559d997915a67af4304 /test/source | |
parent | a5c4b406a8ff80aaa2df96ce455d3b080b77a9a4 (diff) |
tdf#45904 Move Java _XSheetCellRangeContainer test to C++
Change-Id: I463fc54aa4139fbc43b6124765bf18ad8c0e6ddc
Reviewed-on: https://gerrit.libreoffice.org/44247
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jens Carl <j.carl43@gmx.de>
Diffstat (limited to 'test/source')
-rw-r--r-- | test/source/sheet/xsheetcellrangecontainer.cxx | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/test/source/sheet/xsheetcellrangecontainer.cxx b/test/source/sheet/xsheetcellrangecontainer.cxx new file mode 100644 index 000000000000..e18bff3ba226 --- /dev/null +++ b/test/source/sheet/xsheetcellrangecontainer.cxx @@ -0,0 +1,121 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * 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 <test/sheet/xsheetcellrangecontainer.hxx> + +#include <com/sun/star/sheet/XSheetCellRangeContainer.hpp> + +#include <com/sun/star/uno/Reference.hxx> +#include <com/sun/star/uno/Sequence.hxx> + +#include <cppunit/extensions/HelperMacros.h> + +using namespace com::sun::star; +using namespace com::sun::star::uno; + +CPPUNIT_NS_BEGIN + +template<> struct assertion_traits<table::CellRangeAddress> +{ + static bool equal(const table::CellRangeAddress& x, const table::CellRangeAddress& y) + { + return x == y; + } + + static std::string toString( const table::CellRangeAddress& x ) + { + OStringStream ost; + ost << "Sheet: " << x.Sheet << " StartColumn: " << x.StartColumn << " StartRow: " << x.StartRow + << " EndColumn: " << x.EndColumn << " EndRow: " << x.EndRow; + return ost.str(); + } +}; + +CPPUNIT_NS_END + +namespace apitest { + +void XSheetCellRangeContainer::testAddRemoveRangeAddress() +{ + uno::Reference< sheet::XSheetCellRangeContainer > xSCRC(init(), UNO_QUERY_THROW); + xSCRC->removeRangeAddresses(xSCRC->getRangeAddresses()); // prepare a clean slate + uno::Sequence< table::CellRangeAddress > aAddr = createCellRangeAddresses(); + + sal_Int32 cnt = xSCRC->getCount(); + xSCRC->addRangeAddress(aAddr[0], false); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to add CellRangeAddress (count)", + cnt + 1, xSCRC->getCount()); + + uno::Sequence< table::CellRangeAddress > aAfterAddAddr = xSCRC->getRangeAddresses(); + cnt = xSCRC->getCount(); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to add CellRangeAddress (entry)", + aAddr[0], aAfterAddAddr[cnt - 1]); + + xSCRC->removeRangeAddress(aAddr[0]); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to remove CellRangeAddress (count)", + cnt - 1, xSCRC->getCount()); + + uno::Sequence< table::CellRangeAddress > aAfterRemoveAddr = xSCRC->getRangeAddresses(); + for ( auto const & addr : aAfterRemoveAddr ) + { + CPPUNIT_ASSERT_MESSAGE("Unable to remove CellRangeAddress (entry)", + aAddr[0] != addr); + } +} + +void XSheetCellRangeContainer::testAddRemoveRangeAddresses() +{ + uno::Reference< sheet::XSheetCellRangeContainer > xSCRC(init(), UNO_QUERY_THROW); + xSCRC->removeRangeAddresses(xSCRC->getRangeAddresses()); // prepare a clean slate + uno::Sequence< table::CellRangeAddress > aAddr = createCellRangeAddresses(); + + sal_Int32 cnt = xSCRC->getCount(); + xSCRC->addRangeAddresses(aAddr, false); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to add CellRangeAddress (count)", + cnt + 2, xSCRC->getCount()); + + uno::Sequence< table::CellRangeAddress > aAfterAddAddr = xSCRC->getRangeAddresses(); + cnt = xSCRC->getCount(); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to add CellRangeAddresses (entry: first)", + aAddr[0], aAfterAddAddr[cnt - 2]); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to add CellRangeAddresses (entry: second)", + aAddr[1], aAfterAddAddr[cnt - 1]); + + xSCRC->removeRangeAddresses(aAddr); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to remove CellRangeAddresses (count)", + cnt - 2, xSCRC->getCount()); + + uno::Sequence< table::CellRangeAddress > aAfterRemoveAddr = xSCRC->getRangeAddresses(); + for ( auto const & addr : aAfterRemoveAddr ) + { + CPPUNIT_ASSERT_MESSAGE("Unable to remove CellRangeAddresses (entry: first)", + aAddr[0] != addr); + CPPUNIT_ASSERT_MESSAGE("Unable to remove CellRangeAddresses (entry: second)", + aAddr[1] != addr); + } +} + +uno::Sequence< table::CellRangeAddress > XSheetCellRangeContainer::createCellRangeAddresses() +{ + uno::Sequence< table::CellRangeAddress > aAddr(2); + for ( unsigned int i = 0; i < 2; i++ ) + { + aAddr[i].Sheet = i; + aAddr[i].StartColumn = i; + aAddr[i].StartRow = i; + aAddr[i].EndColumn = i + 3; + aAddr[i].EndRow = i + 3; + } + + return aAddr; +} + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |