From 3fc835b79957b4ace99c1dc9526eda7549020951 Mon Sep 17 00:00:00 2001 From: Jens Carl Date: Tue, 27 Mar 2018 06:22:00 +0000 Subject: tdf#45904 Move _XCalculatable Java test to C++ Change-Id: Ib1fac049d2a135074de45c17fbaa78b0af2bec91 Reviewed-on: https://gerrit.libreoffice.org/51929 Tested-by: Jenkins Reviewed-by: Jens Carl --- include/test/sheet/xcalculatable.hxx | 39 +++++++++ qadevOOo/Jar_OOoRunner.mk | 1 - .../sc/com.sun.star.comp.office.ScModelObj.csv | 4 - qadevOOo/tests/java/ifc/sheet/_XCalculatable.java | 98 ---------------------- sc/qa/extras/scmodelobj.cxx | 38 ++++++++- test/Library_subsequenttest.mk | 1 + test/source/sheet/xcalculatable.cxx | 74 ++++++++++++++++ 7 files changed, 150 insertions(+), 105 deletions(-) create mode 100644 include/test/sheet/xcalculatable.hxx delete mode 100644 qadevOOo/tests/java/ifc/sheet/_XCalculatable.java create mode 100644 test/source/sheet/xcalculatable.cxx diff --git a/include/test/sheet/xcalculatable.hxx b/include/test/sheet/xcalculatable.hxx new file mode 100644 index 000000000000..7978fe42acdc --- /dev/null +++ b/include/test/sheet/xcalculatable.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_XCALCULATABLE_HXX +#define INCLUDED_TEST_SHEET_XCALCULATABLE_HXX + +#include +#include +#include +#include + +#include + +namespace apitest +{ +class OOO_DLLPUBLIC_TEST XCalculatable +{ +public: + virtual css::uno::Reference init() = 0; + virtual css::uno::Sequence> getXCells() = 0; + + void testCalculate(); + void testCalculateAll(); + void testEnableAutomaticCaclulation(); + +protected: + ~XCalculatable() {} +}; +} // namespace apitest + +#endif // INCLUDED_TEST_SHEET_XCALCULATABLE_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 6e8f20b69683..1f9af86d89b6 100644 --- a/qadevOOo/Jar_OOoRunner.mk +++ b/qadevOOo/Jar_OOoRunner.mk @@ -569,7 +569,6 @@ $(eval $(call gb_Jar_add_sourcefiles,OOoRunner,\ qadevOOo/tests/java/ifc/sheet/_TableAutoFormatField \ qadevOOo/tests/java/ifc/sheet/_XActivationBroadcaster \ qadevOOo/tests/java/ifc/sheet/_XArrayFormulaRange \ - qadevOOo/tests/java/ifc/sheet/_XCalculatable \ 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.ScModelObj.csv b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv index a1f591442897..7509197e7665 100644 --- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv +++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv @@ -33,10 +33,6 @@ "ScModelObj";"com::sun::star::document::XEventsSupplier#optional";"getEvents()" "ScModelObj";"com::sun::star::util::XModifiable";"isModified()" "ScModelObj";"com::sun::star::util::XModifiable";"setModified()" -"ScModelObj";"com::sun::star::sheet::XCalculatable";"calculate()" -"ScModelObj";"com::sun::star::sheet::XCalculatable";"calculateAll()" -"ScModelObj";"com::sun::star::sheet::XCalculatable";"isAutomaticCalculationEnabled()" -"ScModelObj";"com::sun::star::sheet::XCalculatable";"enableAutomaticCalculation()" "ScModelObj";"com::sun::star::beans::XPropertySet#optional";"getPropertySetInfo()" "ScModelObj";"com::sun::star::beans::XPropertySet#optional";"setPropertyValue()" "ScModelObj";"com::sun::star::beans::XPropertySet#optional";"getPropertyValue()" diff --git a/qadevOOo/tests/java/ifc/sheet/_XCalculatable.java b/qadevOOo/tests/java/ifc/sheet/_XCalculatable.java deleted file mode 100644 index 260b452b131c..000000000000 --- a/qadevOOo/tests/java/ifc/sheet/_XCalculatable.java +++ /dev/null @@ -1,98 +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 com.sun.star.sheet.XCalculatable; -import com.sun.star.table.XCell; -import lib.MultiMethodTest; -import lib.Status; -import lib.StatusException; - -/** - * - */ -public class _XCalculatable extends MultiMethodTest { - public XCalculatable oObj = null; - private boolean bIsAutomaticCalculationEnabled = false; - private XCell[] xCells = null; - - /** - * Get object relation: four cells with values and formulas. - * @see mod._sc.ScModelObj - */ - @Override - public void before() { - xCells = (XCell[])tEnv.getObjRelation("XCalculatable.Cells"); - if (xCells == null || xCells.length != 3) - throw new StatusException(Status.failed("Couldn't find correct object relation 'XCalculatable.Cells'")); - - } - - /** - * Restore begin setting - */ - @Override - public void after() { - // reset to begin value - oObj.enableAutomaticCalculation(bIsAutomaticCalculationEnabled); - } - - - public void _calculate() { - requiredMethod("isAutomaticCalculationEnabled()"); - boolean result = true; - double ergValue1 = xCells[2].getValue(); - double sourceValue1 = xCells[0].getValue(); - xCells[0].setValue(sourceValue1 +1); - double ergValue2 = xCells[2].getValue(); - result &= ergValue1 == ergValue2; - oObj.calculate(); - ergValue2 = xCells[2].getValue(); - result &= ergValue1 != ergValue2; - tRes.tested("calculate()", result); - } - - public void _calculateAll() { - requiredMethod("isAutomaticCalculationEnabled()"); - boolean result = true; - double ergValue1 = xCells[2].getValue(); - double sourceValue1 = xCells[0].getValue(); - xCells[0].setValue(sourceValue1 +1); - double ergValue2 = xCells[2].getValue(); - result &= ergValue1 == ergValue2; - oObj.calculateAll(); - ergValue2 = xCells[2].getValue(); - result &= ergValue1 != ergValue2; - oObj.calculateAll(); - tRes.tested("calculateAll()", result); - } - - public void _enableAutomaticCalculation() { - bIsAutomaticCalculationEnabled = oObj.isAutomaticCalculationEnabled(); - oObj.enableAutomaticCalculation(!bIsAutomaticCalculationEnabled); - tRes.tested("enableAutomaticCalculation()", true); - } - - public void _isAutomaticCalculationEnabled() { - requiredMethod("enableAutomaticCalculation()"); - boolean result = oObj.isAutomaticCalculationEnabled(); - oObj.enableAutomaticCalculation(false); - tRes.tested("isAutomaticCalculationEnabled()", result != bIsAutomaticCalculationEnabled); - } - -} diff --git a/sc/qa/extras/scmodelobj.cxx b/sc/qa/extras/scmodelobj.cxx index 9e57c88b0add..2927f2f9d9c2 100644 --- a/sc/qa/extras/scmodelobj.cxx +++ b/sc/qa/extras/scmodelobj.cxx @@ -9,10 +9,16 @@ #include #include +#include #include #include +#include +#include #include +#include +#include +#include #include #include @@ -24,6 +30,7 @@ namespace sc_apitest { class ScModelObj : public UnoApiTest, public apitest::SpreadsheetDocumentSettings, + public apitest::XCalculatable, public apitest::XConsolidatable, public apitest::XGoalSeek { @@ -32,6 +39,7 @@ public: virtual void tearDown() override; virtual uno::Reference< uno::XInterface > init() override; + virtual uno::Sequence> getXCells() override; ScModelObj(); @@ -40,6 +48,11 @@ public: // SpreadsheetDocumentSettings CPPUNIT_TEST(testSpreadsheetDocumentSettingsProperties); + // XCalculatable + CPPUNIT_TEST(testCalculate); + CPPUNIT_TEST(testCalculateAll); + CPPUNIT_TEST(testEnableAutomaticCaclulation); + // XConsolidatable CPPUNIT_TEST(testCreateConsolidationDescriptor); CPPUNIT_TEST(testConsolidate); @@ -51,6 +64,7 @@ public: private: uno::Reference< lang::XComponent > mxComponent; + uno::Sequence> m_xCells; }; ScModelObj::ScModelObj() @@ -60,9 +74,29 @@ ScModelObj::ScModelObj() uno::Reference< uno::XInterface > ScModelObj::init() { - CPPUNIT_ASSERT_MESSAGE("no component loaded", mxComponent.is()); + uno::Reference xDoc(mxComponent, UNO_QUERY_THROW); + CPPUNIT_ASSERT_MESSAGE("no calc document", xDoc.is()); + + uno::Reference xModel(xDoc, UNO_QUERY_THROW); + + uno::Reference xSheets(xDoc->getSheets(), UNO_QUERY_THROW); + uno::Reference xIA(xSheets, UNO_QUERY_THROW); + uno::Reference xSheet(xIA->getByIndex(0), UNO_QUERY_THROW); + + m_xCells.realloc(3); + m_xCells[0] = xSheet->getCellByPosition(4, 5); + m_xCells[0]->setValue(15); + m_xCells[1] = xSheet->getCellByPosition(5, 5); + m_xCells[1]->setValue(10); + m_xCells[2] = xSheet->getCellByPosition(6, 5); + m_xCells[2]->setFormula("= E6 * F6"); - return mxComponent; + return xModel; +} + +uno::Sequence> ScModelObj::getXCells() +{ + return m_xCells; } void ScModelObj::setUp() diff --git a/test/Library_subsequenttest.mk b/test/Library_subsequenttest.mk index c781af1fa31d..02a125d3dec5 100644 --- a/test/Library_subsequenttest.mk +++ b/test/Library_subsequenttest.mk @@ -70,6 +70,7 @@ $(eval $(call gb_Library_add_exception_objects,subsequenttest,\ test/source/sheet/tablevalidation \ test/source/sheet/xarealink \ test/source/sheet/xarealinks \ + test/source/sheet/xcalculatable \ test/source/sheet/xcelladdressable \ test/source/sheet/xcellformatrangessupplier \ test/source/sheet/xcellrangeaddressable \ diff --git a/test/source/sheet/xcalculatable.cxx b/test/source/sheet/xcalculatable.cxx new file mode 100644 index 000000000000..4ee1cd800630 --- /dev/null +++ b/test/source/sheet/xcalculatable.cxx @@ -0,0 +1,74 @@ +/* -*- 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 + +#include +#include + +#include +#include + +#include + +using namespace com::sun::star; +using namespace com::sun::star::uno; + +namespace apitest +{ +void XCalculatable::testEnableAutomaticCaclulation() +{ + uno::Reference xCalculatable(init(), UNO_QUERY_THROW); + + bool bIsAutomaticCalculationEnabled = xCalculatable->isAutomaticCalculationEnabled(); + xCalculatable->enableAutomaticCalculation(!bIsAutomaticCalculationEnabled); + bool bIsAutomaticCalculationEnabledNew = xCalculatable->isAutomaticCalculationEnabled(); + CPPUNIT_ASSERT_MESSAGE("Unable to set enableAutomaticCalculation()", + bIsAutomaticCalculationEnabled != bIsAutomaticCalculationEnabledNew); +} + +void XCalculatable::testCalculate() +{ + uno::Reference xCalculatable(init(), UNO_QUERY_THROW); + xCalculatable->enableAutomaticCalculation(false); + + uno::Sequence> xCells = getXCells(); + + double dProduct = xCells[2]->getValue(); + double dFactor1 = xCells[0]->getValue(); + xCells[0]->setValue(dFactor1 + 1.0); + double dProduct2 = xCells[2]->getValue(); + CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE("Calculated products are equal", dProduct, dProduct2, 0.5); + + xCalculatable->calculate(); + dProduct2 = xCells[2]->getValue(); + CPPUNIT_ASSERT_MESSAGE("Calculated products are not equal", dProduct != dProduct2); +} + +void XCalculatable::testCalculateAll() +{ + uno::Reference xCalculatable(init(), UNO_QUERY_THROW); + xCalculatable->enableAutomaticCalculation(false); + + uno::Sequence> xCells = getXCells(); + + double dProduct = xCells[2]->getValue(); + double dFactor1 = xCells[0]->getValue(); + xCells[0]->setValue(dFactor1 + 1.0); + double dProduct2 = xCells[2]->getValue(); + CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE("Calculated products are equal", dProduct, dProduct2, 0.5); + + xCalculatable->calculateAll(); + dProduct2 = xCells[2]->getValue(); + CPPUNIT_ASSERT_MESSAGE("Calculated products are not equal", dProduct != dProduct2); + xCalculatable->calculateAll(); +} +} // namespace apitest + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ -- cgit v1.2.3