diff options
author | Jens Carl <j.carl43@gmx.de> | 2018-04-02 06:14:32 +0000 |
---|---|---|
committer | Jens Carl <j.carl43@gmx.de> | 2018-04-02 18:55:03 +0200 |
commit | 387896a05189c60570e031191c3f5959e7737bcb (patch) | |
tree | e37b96606a68e0e8bc65545cf7b855757c9680b7 | |
parent | 75a271fdc40aab116c1468683e64f843d292dc48 (diff) |
tdf#45904 Move _XArrayFormulaRange Java tests to C++
Change-Id: I87b6e52507428537fcc574842c2da9c36fbd672b
Reviewed-on: https://gerrit.libreoffice.org/52247
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jens Carl <j.carl43@gmx.de>
-rw-r--r-- | include/test/sheet/xarrayformularange.hxx | 35 | ||||
-rw-r--r-- | qadevOOo/Jar_OOoRunner.mk | 1 | ||||
-rw-r--r-- | qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv | 2 | ||||
-rw-r--r-- | qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv | 2 | ||||
-rw-r--r-- | qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv | 2 | ||||
-rw-r--r-- | qadevOOo/tests/java/ifc/sheet/_XArrayFormulaRange.java | 173 | ||||
-rw-r--r-- | sc/qa/extras/sccellcursorobj.cxx | 17 | ||||
-rw-r--r-- | sc/qa/extras/sccellrangeobj.cxx | 5 | ||||
-rw-r--r-- | sc/qa/extras/sctablesheetobj.cxx | 7 | ||||
-rw-r--r-- | test/Library_subsequenttest.mk | 1 | ||||
-rw-r--r-- | test/source/sheet/xarrayformularange.cxx | 54 |
11 files changed, 113 insertions, 186 deletions
diff --git a/include/test/sheet/xarrayformularange.hxx b/include/test/sheet/xarrayformularange.hxx new file mode 100644 index 000000000000..8f54f7097ba6 --- /dev/null +++ b/include/test/sheet/xarrayformularange.hxx @@ -0,0 +1,35 @@ +/* -*- 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_XARRAUFORMULARANGE_HXX +#define INCLUDED_TEST_SHEET_XARRAUFORMULARANGE_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 XArrayFormulaRange +{ +public: + virtual css::uno::Reference<css::uno::XInterface> init() = 0; + virtual css::uno::Reference<css::uno::XInterface> getXSpreadsheet() = 0; + + void testGetSetArrayFormula(); + +protected: + ~XArrayFormulaRange() {} +}; +} // namespace apitest + +#endif // INCLUDED_TEST_SHEET_XARRAUFORMULARANGE_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 ca3665894180..ec99ac93dde8 100644 --- a/qadevOOo/Jar_OOoRunner.mk +++ b/qadevOOo/Jar_OOoRunner.mk @@ -566,7 +566,6 @@ $(eval $(call gb_Jar_add_sourcefiles,OOoRunner,\ qadevOOo/tests/java/ifc/sheet/_SheetSortDescriptor \ qadevOOo/tests/java/ifc/sheet/_SpreadsheetDocument \ qadevOOo/tests/java/ifc/sheet/_TableAutoFormatField \ - qadevOOo/tests/java/ifc/sheet/_XArrayFormulaRange \ qadevOOo/tests/java/ifc/sheet/_XCellRangeData \ qadevOOo/tests/java/ifc/sheet/_XCellRangeFormula \ qadevOOo/tests/java/ifc/sheet/_XCellRangeMovement \ 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 3f85f6821258..f5563cfe7758 100644 --- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv +++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv @@ -116,8 +116,6 @@ "ScCellCursorObj";"com::sun::star::style::CharacterPropertiesComplex";"CharLocaleComplex" "ScCellCursorObj";"com::sun::star::sheet::XFormulaQuery";"queryDependents()" "ScCellCursorObj";"com::sun::star::sheet::XFormulaQuery";"queryPrecedents()" -"ScCellCursorObj";"com::sun::star::sheet::XArrayFormulaRange";"getArrayFormula()" -"ScCellCursorObj";"com::sun::star::sheet::XArrayFormulaRange";"setArrayFormula()" "ScCellCursorObj";"com::sun::star::sheet::XCellRangeFormula#optional";"getFormulaArray()" "ScCellCursorObj";"com::sun::star::sheet::XCellRangeFormula#optional";"setFormulaArray()" "ScCellCursorObj";"com::sun::star::util::XIndent";"decrementIndent()" diff --git a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv index 08ca6f6f39c3..fb6d2e76829d 100644 --- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv +++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv @@ -111,8 +111,6 @@ "ScCellRangeObj";"com::sun::star::style::CharacterPropertiesComplex";"CharLocaleComplex" "ScCellRangeObj";"com::sun::star::sheet::XFormulaQuery";"queryDependents()" "ScCellRangeObj";"com::sun::star::sheet::XFormulaQuery";"queryPrecedents()" -"ScCellRangeObj";"com::sun::star::sheet::XArrayFormulaRange";"getArrayFormula()" -"ScCellRangeObj";"com::sun::star::sheet::XArrayFormulaRange";"setArrayFormula()" "ScCellRangeObj";"com::sun::star::sheet::XCellRangeFormula#optional";"getFormulaArray()" "ScCellRangeObj";"com::sun::star::sheet::XCellRangeFormula#optional";"setFormulaArray()" "ScCellRangeObj";"com::sun::star::util::XIndent";"decrementIndent()" diff --git a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv index 61d9411bb9f9..b6ac12b4e1e9 100644 --- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv +++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv @@ -114,8 +114,6 @@ "ScTableSheetObj";"com::sun::star::util::XProtectable";"isProtected()" "ScTableSheetObj";"com::sun::star::sheet::XFormulaQuery";"queryDependents()" "ScTableSheetObj";"com::sun::star::sheet::XFormulaQuery";"queryPrecedents()" -"ScTableSheetObj";"com::sun::star::sheet::XArrayFormulaRange";"getArrayFormula()" -"ScTableSheetObj";"com::sun::star::sheet::XArrayFormulaRange";"setArrayFormula()" "ScTableSheetObj";"com::sun::star::sheet::XCellRangeFormula#optional";"getFormulaArray()" "ScTableSheetObj";"com::sun::star::sheet::XCellRangeFormula#optional";"setFormulaArray()" "ScTableSheetObj";"com::sun::star::util::XIndent";"decrementIndent()" diff --git a/qadevOOo/tests/java/ifc/sheet/_XArrayFormulaRange.java b/qadevOOo/tests/java/ifc/sheet/_XArrayFormulaRange.java deleted file mode 100644 index 87f7aee16cdc..000000000000 --- a/qadevOOo/tests/java/ifc/sheet/_XArrayFormulaRange.java +++ /dev/null @@ -1,173 +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 lib.Status; -import lib.StatusException; - -import com.sun.star.sheet.XArrayFormulaRange; -import com.sun.star.sheet.XCellRangeAddressable; -import com.sun.star.sheet.XSpreadsheet; -import com.sun.star.table.CellRangeAddress; -import com.sun.star.table.XCell; -import com.sun.star.uno.UnoRuntime; - -/** -* Testing <code>com.sun.star.sheet.XArrayFormulaRange</code> -* interface methods : -* <ul> -* <li><code> getArrayFormula()</code></li> -* <li><code> setArrayFormula()</code></li> -* </ul> <p> -* This test needs the following object relations : -* <ul> -* <li> <code>'SHEET'</code> (of type <code>XSpreadsheet</code>): -* to check contents of spreadsheet </li> -* <li> <code>'noArray'</code> (of type <code>Object</code>): -* if the relation is null then given component doesn't really support -* this interface </li> -* <ul> <p> -* Test object must implements interface <code>XCellRangeAddressable</code> also. -* @see com.sun.star.sheet.XArrayFormulaRange -* @see com.sun.star.sheet.XSpreadsheet -* @see com.sun.star.sheet.XCellRangeAddressable -*/ -public class _XArrayFormulaRange extends MultiMethodTest { - - public XArrayFormulaRange oObj = null; - String formula = "=1 + 2 * 5"; - - /** - * Test calls the method and then checks content sof spreadsheet using - * object relation <code>'SHEET'</code>. <p> - * Has <b> OK </b> status if values in cells of spreadsheet are equal to 11 - * or ArrayFormula not supported.<p> - */ - public void _setArrayFormula() { - Object noArray = tEnv.getObjRelation("noArray"); - if (noArray != null) { - log.println("Component " + noArray.toString() + - " doesn't really support this Interface"); - log.println("It doesn't make sense to set an ArrayFormula over" - + " the whole sheet"); - tRes.tested("setArrayFormula()", true); - return; - } - - boolean result = true; - double dresult = 11; - - log.println("setArrayFormula() ..."); - - oObj.setArrayFormula(formula); - - log.println("checking that formula was set correctly..."); - XCellRangeAddressable crAddr = - UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj); - CellRangeAddress addr = crAddr.getRangeAddress() ; - XSpreadsheet oSheet = (XSpreadsheet)tEnv.getObjRelation("SHEET"); - if (oSheet == null) throw new StatusException(Status.failed - ("Relation 'SHEET' not found")); - - XCell oCell = null; - double value; - - for (int i = addr.StartColumn; i <= addr.EndColumn; i++) - for (int j = addr.StartRow; j <= addr.EndRow; j++) { - try { - oCell = oSheet.getCellByPosition(i, j); - } catch (com.sun.star.lang.IndexOutOfBoundsException e) { - e.printStackTrace(log); - result = false; - break; - } - - value = oCell.getValue(); - result &= (value == dresult); - } - - tRes.tested("setArrayFormula()", result) ; - - } // end setArrayFormula() - - /** - * Test calls the method and compare formula that set by method - * <code>setArrayFormula</code> with returned value ignoring spaces. <p> - * - * Has <b> OK </b> status if values are equal or - * ArrayFormula not supported. <p> - * - * The following method tests are to be completed successfully before : - * <ul> - * <li> <code> setArrayFormula </code> : to set formula </li> - * </ul> - */ - public void _getArrayFormula() { - - Object noArray = tEnv.getObjRelation("noArray"); - if (noArray != null) { - log.println("Component "+noArray.toString()+" doesn't really support this Interface"); - log.println("It doesn't make sense to set an ArrayFormula over the whole sheet"); - log.println("and therefore 'getArrayFormula()' won't work"); - tRes.tested("getArrayFormula()",true); - return; - } - - requiredMethod("setArrayFormula()"); - boolean result = true; - log.println("Testing getArrayFormula() ..."); - String gFormula = oObj.getArrayFormula() ; - result &= equalIgnoreSpaces("{" + formula + "}", gFormula); - if (!result) - log.println("Method returned : '" + oObj.getArrayFormula() + "'") ; - tRes.tested("getArrayFormula()", result) ; - - } // end getArrayFormula() - - /** - * Method compares two string ignoring spaces. - * @return <code>true</code> if the argument - * is not null and the Strings are equal, - * ignoring spaces; <code>false</code> otherwise. - */ - private boolean equalIgnoreSpaces(String s1, String s2) { - int p1 = 0, p2 = 0 ; - s1 = s1.trim() ; - s2 = s2.trim() ; - while (p1 < s1.length() && p2 < s2.length()) { - while (s1.charAt(p1) == ' ') { p1 ++; } - while (s2.charAt(p2) == ' ') { p2 ++; } - if (s1.charAt(p1) != s2.charAt(p2)) return false ; - p1 ++ ; - p2 ++ ; - } - - return p1 == s1.length() && p2 == s2.length() ; - } - - /** - * Forces environment recreation. - */ - @Override - protected void after() { - disposeEnvironment(); - } -} - diff --git a/sc/qa/extras/sccellcursorobj.cxx b/sc/qa/extras/sccellcursorobj.cxx index b4ea737616c7..4cab6702901e 100644 --- a/sc/qa/extras/sccellcursorobj.cxx +++ b/sc/qa/extras/sccellcursorobj.cxx @@ -9,6 +9,7 @@ #include <test/calc_unoapi_test.hxx> #include <test/sheet/sheetcellrange.hxx> +#include <test/sheet/xarrayformularange.hxx> #include <test/sheet/xcellformatrangessupplier.hxx> #include <test/sheet/xcellrangeaddressable.hxx> #include <test/sheet/xcellseries.hxx> @@ -18,8 +19,8 @@ #include <test/sheet/xsheetfilterableex.hxx> #include <test/sheet/xsheetoperation.hxx> #include <test/sheet/xsubtotalcalculatable.hxx> -#include <test/sheet/xusedareacursor.hxx> #include <test/sheet/xuniquecellformatrangessupplier.hxx> +#include <test/sheet/xusedareacursor.hxx> #include <com/sun/star/sheet/XSpreadsheetDocument.hpp> #include <com/sun/star/sheet/XSpreadsheet.hpp> @@ -31,6 +32,7 @@ using namespace css::uno; namespace sc_apitest { class ScCellCursorObj : public CalcUnoApiTest, public apitest::SheetCellRange, + public apitest::XArrayFormulaRange, public apitest::XCellFormatRangesSupplier, public apitest::XCellRangeAddressable, public apitest::XCellSeries, @@ -40,8 +42,8 @@ class ScCellCursorObj : public CalcUnoApiTest, public apitest::SheetCellRange, public apitest::XSheetFilterableEx, public apitest::XSheetOperation, public apitest::XSubTotalCalculatable, - public apitest::XUsedAreaCursor, - public apitest::XUniqueCellFormatRangesSupplier + public apitest::XUniqueCellFormatRangesSupplier, + public apitest::XUsedAreaCursor { public: ScCellCursorObj(); @@ -56,9 +58,8 @@ public: // SheetCellRange CPPUNIT_TEST(testSheetCellRangeProperties); - // XUsedAreaCursor - CPPUNIT_TEST(testGotoStartOfUsedArea); - CPPUNIT_TEST(testGotoEndOfUsedArea); + // XArrayFormulaRange + CPPUNIT_TEST(testGetSetArrayFormula); // XMultipleOperation CPPUNIT_TEST(testSetTableOperation); @@ -91,6 +92,10 @@ public: CPPUNIT_TEST(testCreateSubTotalDescriptor); CPPUNIT_TEST(testApplyRemoveSubTotals); + // XUsedAreaCursor + CPPUNIT_TEST(testGotoStartOfUsedArea); + CPPUNIT_TEST(testGotoEndOfUsedArea); + // XUniqueCellFormatRangesSupplier CPPUNIT_TEST(testGetUniqueCellFormatRanges); diff --git a/sc/qa/extras/sccellrangeobj.cxx b/sc/qa/extras/sccellrangeobj.cxx index 1fd0b4ada63f..6267eb47faba 100644 --- a/sc/qa/extras/sccellrangeobj.cxx +++ b/sc/qa/extras/sccellrangeobj.cxx @@ -10,6 +10,7 @@ #include <test/calc_unoapi_test.hxx> #include <test/sheet/cellproperties.hxx> #include <test/sheet/sheetcellrange.hxx> +#include <test/sheet/xarrayformularange.hxx> #include <test/sheet/xcellformatrangessupplier.hxx> #include <test/sheet/xcellrangeaddressable.hxx> #include <test/sheet/xcellrangedata.hxx> @@ -49,6 +50,7 @@ namespace sc_apitest { class ScCellRangeObj : public CalcUnoApiTest, public apitest::CellProperties, public apitest::SheetCellRange, + public apitest::XArrayFormulaRange, public apitest::XCellFormatRangesSupplier, public apitest::XCellRangeAddressable, public apitest::XCellRangeData, @@ -83,6 +85,9 @@ public: // SheetCellRange CPPUNIT_TEST(testSheetCellRangeProperties); + // XArrayFormulaRange + CPPUNIT_TEST(testGetSetArrayFormula); + // XCellFormatRangesSupplier CPPUNIT_TEST(testGetCellFormatRanges); diff --git a/sc/qa/extras/sctablesheetobj.cxx b/sc/qa/extras/sctablesheetobj.cxx index bf72b594ba25..3ea088d48249 100644 --- a/sc/qa/extras/sctablesheetobj.cxx +++ b/sc/qa/extras/sctablesheetobj.cxx @@ -11,6 +11,7 @@ #include <test/sheet/scenario.hxx> #include <test/sheet/sheetcellrange.hxx> #include <test/sheet/spreadsheet.hxx> +#include <test/sheet/xarrayformularange.hxx> #include <test/sheet/xcellformatrangessupplier.hxx> #include <test/sheet/xcellrangeaddressable.hxx> #include <test/sheet/xcellseries.hxx> @@ -47,6 +48,7 @@ namespace sc_apitest class ScTableSheetObj : public CalcUnoApiTest, public apitest::Scenario, public apitest::SheetCellRange, public apitest::Spreadsheet, + public apitest::XArrayFormulaRange, public apitest::XCellFormatRangesSupplier, public apitest::XCellRangeAddressable, public apitest::XCellSeries, @@ -93,6 +95,11 @@ public: // Spreadsheet CPPUNIT_TEST(testSpreadsheetProperties); + // XArrayFormulaRange +#if 0 // disable, because it makes no sense to set an ArrayFormula over the whole sheet + CPPUNIT_TEST(testGetSetArrayFormula); +#endif + // XCellFormatRangesSupplier CPPUNIT_TEST(testGetCellFormatRanges); diff --git a/test/Library_subsequenttest.mk b/test/Library_subsequenttest.mk index 55b09aaec1e6..a9db9f947b01 100644 --- a/test/Library_subsequenttest.mk +++ b/test/Library_subsequenttest.mk @@ -72,6 +72,7 @@ $(eval $(call gb_Library_add_exception_objects,subsequenttest,\ test/source/sheet/xactivationbroadcaster \ test/source/sheet/xarealink \ test/source/sheet/xarealinks \ + test/source/sheet/xarrayformularange \ test/source/sheet/xcalculatable \ test/source/sheet/xcelladdressable \ test/source/sheet/xcellformatrangessupplier \ diff --git a/test/source/sheet/xarrayformularange.cxx b/test/source/sheet/xarrayformularange.cxx new file mode 100644 index 000000000000..26ca5f1d4828 --- /dev/null +++ b/test/source/sheet/xarrayformularange.cxx @@ -0,0 +1,54 @@ +/* -*- 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/xarrayformularange.hxx> + +#include <com/sun/star/sheet/XArrayFormulaRange.hpp> +#include <com/sun/star/sheet/XCellRangeAddressable.hpp> +#include <com/sun/star/sheet/XSpreadsheet.hpp> +#include <com/sun/star/table/CellRangeAddress.hpp> +#include <com/sun/star/table/XCell.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 XArrayFormulaRange::testGetSetArrayFormula() +{ + uno::Reference<sheet::XArrayFormulaRange> xAFR(init(), UNO_QUERY_THROW); + + const OUString sFormula("=1 + 2 * 5"); + + xAFR->setArrayFormula(sFormula); + uno::Reference<sheet::XCellRangeAddressable> xCRA(xAFR, UNO_QUERY_THROW); + table::CellRangeAddress cellRangeAddress = xCRA->getRangeAddress(); + + uno::Reference<sheet::XSpreadsheet> xSheet(getXSpreadsheet(), UNO_QUERY_THROW); + + for (auto i = cellRangeAddress.StartColumn; i <= cellRangeAddress.EndColumn; i++) + { + for (auto j = cellRangeAddress.StartRow; j <= cellRangeAddress.EndRow; j++) + { + uno::Reference<table::XCell> xCell = xSheet->getCellByPosition(i, j); + CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE("Value of Cell " + std::to_string(i) + "," + + std::to_string(j), + 11.0, xCell->getValue(), 0.5); + } + } + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to test getArrayFormula()", OUString("{" + sFormula + "}"), + xAFR->getArrayFormula()); +} +} // namespace apitest + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |