summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Carl <j.carl43@gmx.de>2018-03-27 06:22:00 +0000
committerJens Carl <j.carl43@gmx.de>2018-03-28 03:28:30 +0200
commit3fc835b79957b4ace99c1dc9526eda7549020951 (patch)
tree0cbc6d401ac96e8eb45cc1b51cab5c467e1b10d1
parente32b4c8a079e4b51b1028d2467b872ff5b8cdd3a (diff)
tdf#45904 Move _XCalculatable Java test to C++
Change-Id: Ib1fac049d2a135074de45c17fbaa78b0af2bec91 Reviewed-on: https://gerrit.libreoffice.org/51929 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Jens Carl <j.carl43@gmx.de>
-rw-r--r--include/test/sheet/xcalculatable.hxx39
-rw-r--r--qadevOOo/Jar_OOoRunner.mk1
-rw-r--r--qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv4
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XCalculatable.java98
-rw-r--r--sc/qa/extras/scmodelobj.cxx38
-rw-r--r--test/Library_subsequenttest.mk1
-rw-r--r--test/source/sheet/xcalculatable.cxx74
7 files changed, 150 insertions, 105 deletions
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 <com/sun/star/table/XCell.hpp>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+
+#include <test/testdllapi.hxx>
+
+namespace apitest
+{
+class OOO_DLLPUBLIC_TEST XCalculatable
+{
+public:
+ virtual css::uno::Reference<css::uno::XInterface> init() = 0;
+ virtual css::uno::Sequence<css::uno::Reference<css::table::XCell>> 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 <test/unoapi_test.hxx>
#include <test/sheet/spreadsheetdocumentsettings.hxx>
+#include <test/sheet/xcalculatable.hxx>
#include <test/sheet/xconsolidatable.hxx>
#include <test/sheet/xgoalseek.hxx>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/sheet/XSpreadsheets.hpp>
#include <com/sun/star/uno/XInterface.hpp>
#include <com/sun/star/uno/Reference.hxx>
@@ -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<uno::Reference<table::XCell>> 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<uno::Reference<table::XCell>> 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<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_MESSAGE("no calc document", xDoc.is());
+
+ uno::Reference<frame::XModel> xModel(xDoc, UNO_QUERY_THROW);
+
+ uno::Reference<sheet::XSpreadsheets> xSheets(xDoc->getSheets(), UNO_QUERY_THROW);
+ uno::Reference<container::XIndexAccess> xIA(xSheets, UNO_QUERY_THROW);
+ uno::Reference<sheet::XSpreadsheet> 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<uno::Reference<table::XCell>> 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 <test/sheet/xcalculatable.hxx>
+
+#include <com/sun/star/sheet/XCalculatable.hpp>
+#include <com/sun/star/table/XCell.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;
+
+namespace apitest
+{
+void XCalculatable::testEnableAutomaticCaclulation()
+{
+ uno::Reference<sheet::XCalculatable> 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<sheet::XCalculatable> xCalculatable(init(), UNO_QUERY_THROW);
+ xCalculatable->enableAutomaticCalculation(false);
+
+ uno::Sequence<uno::Reference<table::XCell>> 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<sheet::XCalculatable> xCalculatable(init(), UNO_QUERY_THROW);
+ xCalculatable->enableAutomaticCalculation(false);
+
+ uno::Sequence<uno::Reference<table::XCell>> 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: */