summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Carl <[email protected]>2017-11-22 03:46:59 +0000
committerJens Carl <[email protected]>2018-07-08 10:04:11 +0200
commit8164399df0df976784ddc1a76b46939c53ae51ee (patch)
treeeaff8bd911d942524e790f339c04bbd421075a51
parentdc8ed4b8e1fa5ed3b934bfcf5999ddb75ea07b0a (diff)
tdf#45904 Move _XSheetCellCursor Java tests to C++
Change-Id: I9d12f9a13d3e0c59b7a28ff91563878efde22b68 Reviewed-on: https://gerrit.libreoffice.org/45067 Tested-by: Jenkins Reviewed-by: Jens Carl <[email protected]>
-rw-r--r--include/test/sheet/xsheetcellcursor.hxx39
-rw-r--r--qadevOOo/Jar_OOoRunner.mk1
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv6
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor.java340
-rw-r--r--sc/qa/extras/sccellcursorobj.cxx15
-rw-r--r--test/Library_subsequenttest.mk5
-rw-r--r--test/source/sheet/xsheetcellcursor.cxx138
7 files changed, 195 insertions, 349 deletions
diff --git a/include/test/sheet/xsheetcellcursor.hxx b/include/test/sheet/xsheetcellcursor.hxx
new file mode 100644
index 000000000000..3686ac521f5e
--- /dev/null
+++ b/include/test/sheet/xsheetcellcursor.hxx
@@ -0,0 +1,39 @@
+/* -*- 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/.
+ */
+
+#ifndef INCLUDED_TEST_SHEET_XSHEETCELLCURSOR_HXX
+#define INCLUDED_TEST_SHEET_XSHEETCELLCURSOR_HXX
+
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+
+#include <test/testdllapi.hxx>
+
+namespace apitest
+{
+class OOO_DLLPUBLIC_TEST XSheetCellCursor
+{
+public:
+ virtual css::uno::Reference<css::uno::XInterface> init() = 0;
+
+ void testCollapseToCurrentArray();
+ void testCollapseToCurrentRegion();
+ void testCollapseToMergedArea();
+ void testCollapseToSize();
+ void testExpandToEntireColumns();
+ void testExpandToEntireRows();
+
+protected:
+ ~XSheetCellCursor() {}
+};
+}
+
+#endif // INCLUDED_TEST_SHEET_XSHEETCELLCURSOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/qadevOOo/Jar_OOoRunner.mk b/qadevOOo/Jar_OOoRunner.mk
index 5d1291937bdb..57b0dbf6e34b 100644
--- a/qadevOOo/Jar_OOoRunner.mk
+++ b/qadevOOo/Jar_OOoRunner.mk
@@ -568,7 +568,6 @@ $(eval $(call gb_Jar_add_sourcefiles,OOoRunner,\
qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery \
qadevOOo/tests/java/ifc/sheet/_XEnhancedMouseClickBroadcaster \
qadevOOo/tests/java/ifc/sheet/_XRangeSelection \
- qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor \
qadevOOo/tests/java/ifc/style/_CharacterProperties \
qadevOOo/tests/java/ifc/style/_CharacterPropertiesAsian \
qadevOOo/tests/java/ifc/style/_CharacterPropertiesComplex \
diff --git a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv
index 2e0517525f23..1a7e1096bf15 100644
--- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv
+++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv
@@ -194,12 +194,6 @@
"ScCellCursorObj";"com::sun::star::chart::XChartDataArray";"setRowDescriptions()"
"ScCellCursorObj";"com::sun::star::chart::XChartDataArray";"getColumnDescriptions()"
"ScCellCursorObj";"com::sun::star::chart::XChartDataArray";"setColumnDescriptions()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetCellCursor";"collapseToCurrentRegion()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetCellCursor";"collapseToCurrentArray()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetCellCursor";"collapseToMergedArea()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetCellCursor";"expandToEntireColumns()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetCellCursor";"expandToEntireRows()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetCellCursor";"collapseToSize()"
"ScCellCursorObj";"com::sun::star::util::XModifyBroadcaster#optional";"addModifyListener()"
"ScCellCursorObj";"com::sun::star::util::XModifyBroadcaster#optional";"removeModifyListener()"
"ScCellCursorObj";"com::sun::star::util::XImportable";"createImportDescriptor()"
diff --git a/qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor.java b/qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor.java
deleted file mode 100644
index a1015a64475a..000000000000
--- a/qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * 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/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-package ifc.sheet;
-
-import lib.MultiMethodTest;
-
-import com.sun.star.sheet.CellFlags;
-import com.sun.star.sheet.XArrayFormulaRange;
-import com.sun.star.sheet.XCellRangeAddressable;
-import com.sun.star.sheet.XSheetCellCursor;
-import com.sun.star.sheet.XSheetOperation;
-import com.sun.star.sheet.XSpreadsheet;
-import com.sun.star.table.CellRangeAddress;
-import com.sun.star.table.XCellRange;
-import com.sun.star.table.XColumnRowRange;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.util.XMergeable;
-
-/**
-* Testing <code>com.sun.star.sheet.XSheetCellCursor</code>
-* interface methods :
-* <ul>
-* <li><code> collapseToCurrentRegion()</code></li>
-* <li><code> collapseToCurrentArray()</code></li>
-* <li><code> collapseToMergedArea()</code></li>
-* <li><code> expandToEntireColumns()</code></li>
-* <li><code> expandToEntireRows()</code></li>
-* <li><code> collapseToSize()</code></li>
-* </ul> <p>
-* Component must also implement the following interfaces :
-* <ul>
-* <li> <code> com.sun.star.sheet.XCellRangeAddressable </code> :
-* to get range address </li>
-* <ul> <p>
-* Range of cursor must be of size 4 x 4. <p>
-* @see com.sun.star.sheet.XSheetCellCursor
-*/
-public class _XSheetCellCursor extends MultiMethodTest {
-
- public XSheetCellCursor oObj = null;
-
- /**
- * Test creates the array formula, assigns this array to another array,
- * collapses cursor into one cell, applies method, checks the size of the
- * result range, erases array formula, checks that array formula has been
- * cleared. <p>
- * Has <b>OK</b> status if no exceptions were thrown, if size of the result
- * range is equal to size of the range where the array formula was set and
- * if array formula was successfully cleared. <p>
- */
- public void _collapseToCurrentArray() {
- boolean bResult = false;
-
- XCellRangeAddressable crAddr = UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj);
- CellRangeAddress addr = crAddr.getRangeAddress() ;
- int leftCol = addr.StartColumn ;
- int topRow = addr.StartRow ;
- int width = addr.EndColumn - addr.StartColumn + 1 ;
- int height = addr.EndRow - addr.StartRow + 1 ;
-
- log.println( "Object area is ((" + leftCol + "," + topRow + "),(" +
- (leftCol + width - 1) + "," + (topRow + height - 1) + ")" );
-
- XCellRange new_range = null;
- try {
- // first we need to create an array formula
- new_range =
- oObj.getCellRangeByPosition(0, 0, 0, height - 1);
- } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
- log.print("Get cell range by position failed: ");
- e.printStackTrace(log);
- tRes.tested("collapseToCurrentArray()", false);
- }
-
- log.println("DB: Successfully new range created");
- XArrayFormulaRange arrFormulaRange = UnoRuntime.queryInterface (XArrayFormulaRange.class, new_range);
- // write a simple formula (this array assigns another array)
- arrFormulaRange.setArrayFormula("A1:A" + height) ;
-
- // collapse cursor into one cell and then try to apply the method
- oObj.collapseToSize (1, 1) ;
- oObj.collapseToCurrentArray() ;
-
- // check the size of result range
- int cols = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getColumns().getCount();
- int rows = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getRows().getCount();
-
- if (cols == 1 && rows == height) {
- bResult = true;
- } else {
- bResult = false;
- log.println("The size of cell range must be 1x" + height +
- ", but after method call it was " + cols + "x" + rows);
- }
-
- // erase array formula
- arrFormulaRange.setArrayFormula("");
-
- // check if array formula has been cleared with last statement
- try {
- // if array formula isn't cleared exception is thrown
- new_range.getCellByPosition(0,0).setValue(111) ;
- } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
- bResult = false ;
- log.println(
- "Array formula hasn't been cleared with setArrayFormula(\"\")");
- XSheetOperation clearRange = UnoRuntime.queryInterface (XSheetOperation.class, new_range);
- int allFlags =
- CellFlags.ANNOTATION | CellFlags.DATETIME | CellFlags.EDITATTR;
- allFlags = allFlags
- | CellFlags.HARDATTR | CellFlags.OBJECTS | CellFlags.STRING;
- allFlags = allFlags
- | CellFlags.VALUE | CellFlags.FORMULA | CellFlags.STYLES;
- clearRange.clearContents(allFlags) ;
- }
-
- tRes.tested("collapseToCurrentArray()", bResult );
- }
-
- /**
- * Test clears contents of spreadsheet, collapses cursor to current range,
- * checks size of cursor range, fills a cell that is close to
- * cursor range, collapses cursor to current range, checks size of cursor
- * range again and restores original size. <p>
- * Has <b> OK </b> status if after clearing of content and collapsing cursor
- * range size remains 4 x 4, if after filling of cell and collapsing cursor
- * range extends by one in both dimensions and no exceptions were thrown.<p>
- */
- public void _collapseToCurrentRegion(){
- boolean bResult = true;
- int width = 4, height = 4;
-
- XSpreadsheet oSheet = oObj.getSpreadsheet();
- UnoRuntime.queryInterface(
- XSheetOperation.class, oSheet).clearContents(65535);
- oObj.collapseToCurrentRegion();
- int cols = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getColumns().getCount();
- int rows = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getRows().getCount();
-
- if (cols != width || rows != height) {
- bResult = false ;
- log.println("After collapseToCurrentRegion()"
- + " call Region must have size " + width + "x" + height
- + " but it is " + cols + "x" + rows);
- }
-
- tRes.tested("collapseToCurrentRegion()", bResult);
-
- // restore original size
- oObj.collapseToSize(width, height);
- }
-
- /**
- * Test merges a cells of range that has a greater size, collapses cursor to
- * merged area, checks size of cursor range and restores original size
- * of cursor range. <p>
- * Has <b> OK </b> status if after merging of cells and collapsing cursor
- * range extends by one in both dimensions and no exceptions were thrown.<p>
- */
- public void _collapseToMergedArea(){
- int width = 1, height = 1 ;
- int leftCol = 0, topRow = 0 ;
-
- boolean bResult = true ;
-
- log.println("DB: Starting collapseToMergedArea() method test ...") ;
- XSpreadsheet oSheet = oObj.getSpreadsheet() ;
- log.println ("DB: got Spreadsheet.") ;
-
- XCellRange newRange = null;
- try {
- newRange = oSheet.getCellRangeByPosition (
- leftCol + width - 1, topRow + height - 1,
- leftCol + width, topRow + height );
- } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
- log.println("Can't get cell range by position");
- e.printStackTrace(log);
- bResult = false;
- }
-
- XMergeable mergeRange = UnoRuntime.queryInterface (XMergeable.class, newRange);
- mergeRange.merge(true);
- log.println("DB: Successfully merged.") ;
-
- oObj.collapseToMergedArea() ;
- log.println("DB: Successfully collapseToMergedArea() method called");
-
- // unmerge area to restore SpreadSheet
- mergeRange.merge(false);
- log.println("DB: Successfully unmerged.") ;
-
- // checking results
- int cols = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getColumns().getCount();
- int rows = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getRows().getCount();
- log.println("DB: Column and row numbers successfully get") ;
-
- if (cols == width + 1 && rows == height + 3) {
- bResult &= true;
- } else {
- bResult = false;
- log.println(
- "After collapseToMergedArea() call region must have size "
- + (width + 1) + "x" + (height + 1) + " but it is " + cols
- + "x" + rows );
- }
-
- tRes.tested("collapseToMergedArea()", bResult) ;
-
- // restore original size
- oObj.collapseToSize(width, height);
- }
-
- /**
- * Test collapses cursor to the new size, checks size
- * of cursor range and restores original size of cursor range. <p>
- * Has <b> OK </b> status if after collapsing cursor
- * range extends by three in both dimensions. <p>
- */
- public void _collapseToSize(){
- boolean bResult = false;
- int width = 1, height = 1;
-
- // collapseToSize() method test
- oObj.collapseToSize (width + 3, height + 3);
-
- // checking results
- int cols = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getColumns().getCount();
- int rows = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getRows().getCount();
-
- if (cols == width + 3 && rows == height + 3) {
- bResult = true ;
- } else {
- bResult = false ;
- log.println( "After collapseToSize() call region must have size "
- + (width + 3) + "x" + (height + 3) + " but it is "
- + cols + "x" +rows);
- }
-
- tRes.tested("collapseToSize()", bResult) ;
-
- // restore original size
- oObj.collapseToSize(width, height) ;
- }
-
- /**
- * Test expands cursor to entire columns, checks size
- * of cursor range and restores original size of cursor range. <p>
- * Has <b> OK </b> status if after expanding cursor
- * range extends to all rows in the columns (number of rows is greater than
- * 32000 and number of columns remains the same). <p>
- */
- public void _expandToEntireColumns(){
- boolean bResult = false;
- int width = 1, height = 1 ;
-
- // expandToEntireColumns() method test
- oObj.expandToEntireColumns () ;
-
- // checking results
- int cols = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getColumns().getCount();
- int rows = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getRows().getCount();
-
- if (cols == width && rows >= 32000) {
- bResult = true ;
- } else {
- bResult = false ;
- log.println(
- "After expandToEntireColumns() call region must have size "+
- width + "x(>=32000) but it is " + cols + "x" + rows);
- }
-
- tRes.tested("expandToEntireColumns()", bResult) ;
-
- // restore original size
- oObj.collapseToSize(width, height) ;
- }
-
- /**
- * Test expands cursor to entire rows, checks size
- * of cursor range and restores original size of cursor range. <p>
- * Has <b> OK </b> status if after expanding cursor
- * range extends to all columns in the rows (number of columns is greater
- * than 256 and number of rows remains the same). <p>
- */
- public void _expandToEntireRows(){
- boolean bResult = false;
- int width = 1, height = 1 ;
-
- // expandToEntireRows() method test
- oObj.expandToEntireRows () ;
-
- // checking results
- int cols = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getColumns().getCount();
- int rows = UnoRuntime.queryInterface(
- XColumnRowRange.class, oObj).getRows().getCount();
-
- if (cols >= 256 && rows == height) {
- bResult = true;
- } else {
- bResult = false ;
- log.println("After expandToEntireRows() call region " +
- "must have size (>=256)x" + height + " but it is " +
- cols + "x" + rows );
- }
-
- tRes.tested("expandToEntireRows()", bResult) ;
-
- // restore original size
- oObj.collapseToSize(width, height) ;
- }
-
-} // EOC _XSheetCellCursor
-
diff --git a/sc/qa/extras/sccellcursorobj.cxx b/sc/qa/extras/sccellcursorobj.cxx
index 374a3ab5c117..95a00327817d 100644
--- a/sc/qa/extras/sccellcursorobj.cxx
+++ b/sc/qa/extras/sccellcursorobj.cxx
@@ -17,6 +17,7 @@
#include <test/sheet/xcellseries.hxx>
#include <test/sheet/xformulaquery.hxx>
#include <test/sheet/xmultipleoperation.hxx>
+#include <test/sheet/xsheetcellcursor.hxx>
#include <test/sheet/xsheetcellrange.hxx>
#include <test/sheet/xsheetfilterable.hxx>
#include <test/sheet/xsheetfilterableex.hxx>
@@ -43,6 +44,7 @@ class ScCellCursorObj : public CalcUnoApiTest, public apitest::SheetCellRange,
public apitest::XCellSeries,
public apitest::XFormulaQuery,
public apitest::XMultipleOperation,
+ public apitest::XSheetCellCursor,
public apitest::XSheetCellRange,
public apitest::XSheetFilterable,
public apitest::XSheetFilterableEx,
@@ -92,6 +94,14 @@ public:
// XMultipleOperation
CPPUNIT_TEST(testSetTableOperation);
+ // XSheetCellCursor
+ CPPUNIT_TEST(testCollapseToCurrentArray);
+ CPPUNIT_TEST(testCollapseToCurrentRegion);
+ CPPUNIT_TEST(testCollapseToMergedArea);
+ CPPUNIT_TEST(testCollapseToSize);
+ CPPUNIT_TEST(testExpandToEntireColumns);
+ CPPUNIT_TEST(testExpandToEntireRows);
+
// XSheetCellRange
CPPUNIT_TEST(testGetSpreadsheet);
@@ -141,6 +151,11 @@ uno::Reference< uno::XInterface > ScCellCursorObj::init()
uno::Reference<sheet::XSheetCellRange> xSheetCellRange(xCellRange, UNO_QUERY_THROW);
uno::Reference<table::XCellCursor> xCellCursor(xSheet->createCursorByRange(xSheetCellRange), UNO_QUERY_THROW);
+ xSheet->getCellByPosition(1, 1)->setValue(1);
+ xSheet->getCellByPosition(4, 5)->setValue(1);
+ xSheet->getCellByPosition(3, 2)->setFormula("xTextDoc");
+ xSheet->getCellByPosition(3, 3)->setFormula("xTextDoc");
+
return xCellCursor;
}
diff --git a/test/Library_subsequenttest.mk b/test/Library_subsequenttest.mk
index c6a69d23623b..701fa3b9192a 100644
--- a/test/Library_subsequenttest.mk
+++ b/test/Library_subsequenttest.mk
@@ -1,4 +1,4 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+a -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
@@ -123,8 +123,9 @@ $(eval $(call gb_Library_add_exception_objects,subsequenttest,\
test/source/sheet/xsheetannotationssupplier \
test/source/sheet/xsheetannotationshapesupplier \
test/source/sheet/xsheetauditing \
- test/source/sheet/xsheetcellrangecontainer \
+ test/source/sheet/xsheetcellcursor \
test/source/sheet/xsheetcellrange \
+ test/source/sheet/xsheetcellrangecontainer \
test/source/sheet/xsheetcellranges \
test/source/sheet/xsheetconditionalentries \
test/source/sheet/xsheetconditionalentry \
diff --git a/test/source/sheet/xsheetcellcursor.cxx b/test/source/sheet/xsheetcellcursor.cxx
new file mode 100644
index 000000000000..84d3bbe060d6
--- /dev/null
+++ b/test/source/sheet/xsheetcellcursor.cxx
@@ -0,0 +1,138 @@
+/* -*- 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/xsheetcellcursor.hxx>
+
+#include <com/sun/star/sheet/XArrayFormulaRange.hpp>
+#include <com/sun/star/sheet/XCellRangeAddressable.hpp>
+#include <com/sun/star/sheet/XSheetCellCursor.hpp>
+#include <com/sun/star/sheet/XSheetOperation.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#include <com/sun/star/table/XCellRange.hpp>
+#include <com/sun/star/table/XColumnRowRange.hpp>
+#include <com/sun/star/util/XMergeable.hpp>
+
+#include <com/sun/star/uno/Reference.hxx>
+
+#include <cppunit/extensions/HelperMacros.h>
+
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+
+namespace apitest
+{
+void XSheetCellCursor::testCollapseToCurrentArray()
+{
+ uno::Reference<sheet::XSheetCellCursor> xSheetCellCursor(init(), UNO_QUERY_THROW);
+
+ uno::Reference<sheet::XCellRangeAddressable> xCellRangeAddressable(xSheetCellCursor,
+ UNO_QUERY_THROW);
+ table::CellRangeAddress aCellRangeAddr = xCellRangeAddressable->getRangeAddress();
+ const sal_Int32 nHeight = aCellRangeAddr.EndRow - aCellRangeAddr.StartRow + 1;
+
+ uno::Reference<table::XCellRange> xCellRange
+ = xSheetCellCursor->getCellRangeByPosition(0, 0, 0, nHeight - 1);
+ uno::Reference<sheet::XArrayFormulaRange> xArrayFormulaRange(xCellRange, UNO_QUERY_THROW);
+ xArrayFormulaRange->setArrayFormula("A1:A" + OUString::number(nHeight));
+
+ xSheetCellCursor->collapseToSize(1, 1);
+ xSheetCellCursor->collapseToCurrentArray();
+
+ uno::Reference<table::XColumnRowRange> xColRowRange(xSheetCellCursor, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToCurrentArray (cols)", sal_Int32(1),
+ xColRowRange->getColumns()->getCount());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToCurrentArray (rows)", nHeight,
+ xColRowRange->getRows()->getCount());
+ xArrayFormulaRange->setArrayFormula("");
+}
+
+void XSheetCellCursor::testCollapseToCurrentRegion()
+{
+ uno::Reference<sheet::XSheetCellCursor> xSheetCellCursor(init(), UNO_QUERY_THROW);
+
+ const sal_Int32 nWidth = 4, nHeight = 4;
+ uno::Reference<sheet::XSpreadsheet> xSheet = xSheetCellCursor->getSpreadsheet();
+ uno::Reference<sheet::XSheetOperation> xSheetOp(xSheet, UNO_QUERY_THROW);
+ xSheetOp->clearContents(65535);
+
+ xSheetCellCursor->collapseToCurrentRegion();
+ uno::Reference<table::XColumnRowRange> xColRowRange(xSheetCellCursor, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToCurrentRegion (cols)", nWidth,
+ xColRowRange->getColumns()->getCount());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToCurrentRegion (rows)", nHeight,
+ xColRowRange->getRows()->getCount());
+}
+
+void XSheetCellCursor::testCollapseToMergedArea()
+{
+ uno::Reference<sheet::XSheetCellCursor> xSheetCellCursor(init(), UNO_QUERY_THROW);
+ xSheetCellCursor->collapseToSize(1, 1);
+
+ const sal_Int32 nLeftCol = 0, nTopRow = 0, nWidth = 8, nHeight = 8;
+ uno::Reference<sheet::XSpreadsheet> xSheet = xSheetCellCursor->getSpreadsheet();
+
+ uno::Reference<table::XCellRange> xCellRange = xSheet->getCellRangeByPosition(
+ nLeftCol + nWidth - 8, nTopRow + nHeight - 8, nLeftCol + nWidth, nTopRow + nHeight);
+
+ uno::Reference<util::XMergeable> xMergeable(xCellRange, UNO_QUERY_THROW);
+ xMergeable->merge(true);
+ CPPUNIT_ASSERT_MESSAGE("Unable to merge area", xMergeable->getIsMerged());
+ xSheetCellCursor->collapseToMergedArea();
+ xMergeable->merge(false);
+
+ uno::Reference<table::XColumnRowRange> xColRowRange(xSheetCellCursor, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToMergedArea (cols)", nWidth + 1,
+ xColRowRange->getColumns()->getCount());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToMergedArea (rows)", nHeight + 1,
+ xColRowRange->getRows()->getCount());
+}
+
+void XSheetCellCursor::testCollapseToSize()
+{
+ uno::Reference<sheet::XSheetCellCursor> xSheetCellCursor(init(), UNO_QUERY_THROW);
+
+ const sal_Int32 nWidth = 1, nHeight = 1;
+ xSheetCellCursor->collapseToSize(nWidth + 3, nHeight + 3);
+
+ uno::Reference<table::XColumnRowRange> xColRowRange(xSheetCellCursor, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToSize (cols)", nWidth + 3,
+ xColRowRange->getColumns()->getCount());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to collapseToSize (rows)", nHeight + 3,
+ xColRowRange->getRows()->getCount());
+}
+
+void XSheetCellCursor::testExpandToEntireColumns()
+{
+ uno::Reference<sheet::XSheetCellCursor> xSheetCellCursor(init(), UNO_QUERY_THROW);
+
+ xSheetCellCursor->expandToEntireColumns();
+
+ uno::Reference<table::XColumnRowRange> xColRowRange(xSheetCellCursor, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to expandToEntireColumns (cols)", sal_Int32(4),
+ xColRowRange->getColumns()->getCount());
+ CPPUNIT_ASSERT_MESSAGE("Unable to expandToEntireColumns (rows)",
+ xColRowRange->getRows()->getCount() >= sal_Int32(32000));
+}
+
+void XSheetCellCursor::testExpandToEntireRows()
+{
+ uno::Reference<sheet::XSheetCellCursor> xSheetCellCursor(init(), UNO_QUERY_THROW);
+
+ xSheetCellCursor->expandToEntireRows();
+
+ uno::Reference<table::XColumnRowRange> xColRowRange(xSheetCellCursor, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_MESSAGE("Unable to expandToEntireRows (cols)",
+ xColRowRange->getColumns()->getCount() >= sal_Int32(256));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to expandToEntireRows (rows)", sal_Int32(4),
+ xColRowRange->getRows()->getCount());
+}
+}
+
+/* vim:set shiftnWidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */