[Libreoffice-commits] core.git: include/test qadevOOo/Jar_OOoRunner.mk qadevOOo/objdsc qadevOOo/tests sc/qa test/Library_subsequenttest.mk test/source

Jens Carl j.carl43 at gmx.de
Sun Jul 8 08:04:31 UTC 2018


 include/test/sheet/xsheetcellcursor.hxx                         |   39 +
 qadevOOo/Jar_OOoRunner.mk                                       |    1 
 qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv |    6 
 qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor.java            |  340 ----------
 sc/qa/extras/sccellcursorobj.cxx                                |   15 
 test/Library_subsequenttest.mk                                  |    5 
 test/source/sheet/xsheetcellcursor.cxx                          |  138 ++++
 7 files changed, 195 insertions(+), 349 deletions(-)

New commits:
commit 8164399df0df976784ddc1a76b46939c53ae51ee
Author: Jens Carl <j.carl43 at gmx.de>
Date:   Wed Nov 22 03:46:59 2017 +0000

    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 <j.carl43 at gmx.de>

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: */


More information about the Libreoffice-commits mailing list