[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
Wed Mar 28 01:28:53 UTC 2018


 include/test/sheet/xcalculatable.hxx                       |   39 +++++
 qadevOOo/Jar_OOoRunner.mk                                  |    1 
 qadevOOo/objdsc/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(-)

New commits:
commit 3fc835b79957b4ace99c1dc9526eda7549020951
Author: Jens Carl <j.carl43 at gmx.de>
Date:   Tue Mar 27 06:22:00 2018 +0000

    tdf#45904 Move _XCalculatable Java test to C++
    
    Change-Id: Ib1fac049d2a135074de45c17fbaa78b0af2bec91
    Reviewed-on: https://gerrit.libreoffice.org/51929
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jens Carl <j.carl43 at gmx.de>

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


More information about the Libreoffice-commits mailing list