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

Jens Carl j.carl43 at gmx.de
Fri Jun 29 04:15:43 UTC 2018


 include/test/sheet/xdocumentauditing.hxx                   |   47 ++
 qadevOOo/Jar_OOoRunner.mk                                  |    1 
 qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv |    1 
 qadevOOo/tests/java/ifc/sheet/_XDocumentAuditing.java      |  219 -------------
 sc/CppunitTest_sc_modelobj.mk                              |   47 --
 sc/qa/extras/scmodelobj.cxx                                |   12 
 test/Library_subsequenttest.mk                             |    1 
 test/source/sheet/xdocumentauditing.cxx                    |  141 ++++++++
 8 files changed, 211 insertions(+), 258 deletions(-)

New commits:
commit 81260b12666853bb9c21da487657e169cac6d4d9
Author: Jens Carl <j.carl43 at gmx.de>
Date:   Fri Jun 29 02:47:08 2018 +0000

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

diff --git a/include/test/sheet/xdocumentauditing.hxx b/include/test/sheet/xdocumentauditing.hxx
new file mode 100644
index 000000000000..6453c06c8e7b
--- /dev/null
+++ b/include/test/sheet/xdocumentauditing.hxx
@@ -0,0 +1,47 @@
+/* -*- 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_XDOCUMENTAUDITING_HXX
+#define INCLUDED_TEST_SHEET_XDOCUMENTAUDITING_HXX
+
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/frame/XFrame.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 XDocumentAuditing
+{
+public:
+    virtual css::uno::Reference<css::uno::XInterface> init() = 0;
+    virtual css::uno::Reference<css::uno::XInterface> getXMSF() = 0;
+
+    void testRefreshArrows();
+
+protected:
+    ~XDocumentAuditing() {}
+
+private:
+    bool hasRightAmountOfShapes(const css::uno::Reference<css::drawing::XDrawPage>& xDrawPage,
+                                const sal_Int32& nElementCount, const sal_Int32& nShapes);
+    void dispatch(const css::uno::Reference<css::frame::XFrame>& xFrame,
+                  const css::uno::Sequence<css::beans::PropertyValue>& rArguments);
+    css::awt::Point m_Position;
+};
+} // namespace apitest
+
+#endif // INCLUDED_TEST_SHEET_XDOCUMENTAUDITING_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 a7bc5b37b02d..a3188143c9f3 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/_TableAutoFormatField \
     qadevOOo/tests/java/ifc/sheet/_XCellRangeData \
     qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery \
-    qadevOOo/tests/java/ifc/sheet/_XDocumentAuditing \
     qadevOOo/tests/java/ifc/sheet/_XEnhancedMouseClickBroadcaster \
     qadevOOo/tests/java/ifc/sheet/_XRangeSelection \
     qadevOOo/tests/java/ifc/sheet/_XSheetCellCursor \
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 7509197e7665..6c6fe08e39c7 100644
--- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv
+++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScModelObj.csv
@@ -40,7 +40,6 @@
 "ScModelObj";"com::sun::star::beans::XPropertySet#optional";"removePropertyChangeListener()"
 "ScModelObj";"com::sun::star::beans::XPropertySet#optional";"addVetoableChangeListener()"
 "ScModelObj";"com::sun::star::beans::XPropertySet#optional";"removeVetoableChangeListener()"
-"ScModelObj";"com::sun::star::sheet::XDocumentAuditing";"refreshArrows()"
 "ScModelObj";"com::sun::star::sheet::SpreadsheetDocument";"NamedRanges"
 "ScModelObj";"com::sun::star::sheet::SpreadsheetDocument";"DatabaseRanges"
 "ScModelObj";"com::sun::star::sheet::SpreadsheetDocument";"ColumnLabelRanges"
diff --git a/qadevOOo/tests/java/ifc/sheet/_XDocumentAuditing.java b/qadevOOo/tests/java/ifc/sheet/_XDocumentAuditing.java
deleted file mode 100644
index 2d35679df840..000000000000
--- a/qadevOOo/tests/java/ifc/sheet/_XDocumentAuditing.java
+++ /dev/null
@@ -1,219 +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.awt.Point;
-import com.sun.star.beans.PropertyValue;
-import com.sun.star.container.XIndexAccess;
-import com.sun.star.container.XNamed;
-import com.sun.star.drawing.XDrawPage;
-import com.sun.star.drawing.XDrawPagesSupplier;
-import com.sun.star.drawing.XShape;
-import com.sun.star.frame.XDispatchHelper;
-import com.sun.star.frame.XDispatchProvider;
-import com.sun.star.frame.XModel;
-import com.sun.star.lang.XMultiServiceFactory;
-import com.sun.star.sheet.XDocumentAuditing;
-import com.sun.star.sheet.XSheetAuditing;
-import com.sun.star.sheet.XSpreadsheet;
-import com.sun.star.sheet.XSpreadsheetDocument;
-import com.sun.star.sheet.XSpreadsheets;
-import com.sun.star.table.CellAddress;
-import com.sun.star.uno.UnoRuntime;
-import lib.MultiMethodTest;
-import lib.Status;
-import lib.StatusException;
-
-/**
- *
- */
-public class _XDocumentAuditing extends MultiMethodTest {
-    public XDocumentAuditing oObj = null;
-    XDrawPage xDrawPage = null;
-    XSpreadsheet[] xSheet = null;
-    int elementCount = 0;
-    String sheetName = null;
-    Point pos = null;
-
-    @Override
-    public void before() {
-        Exception ex = null;
-        // get two sheets
-        xSheet = new XSpreadsheet[2];
-        try {
-            XSpreadsheetDocument xSpreadsheetDocument = UnoRuntime.queryInterface(XSpreadsheetDocument.class, oObj);
-            XSpreadsheets oSheets = xSpreadsheetDocument.getSheets();
-            XIndexAccess oIndexSheets = UnoRuntime.queryInterface(
-                                                XIndexAccess.class, oSheets);
-            XSpreadsheet oSheet = UnoRuntime.queryInterface(
-                                      XSpreadsheet.class, oIndexSheets.getByIndex(0));
-            xSheet[0] = oSheet;
-            oSheet = UnoRuntime.queryInterface(
-                                      XSpreadsheet.class, oIndexSheets.getByIndex(1));
-            xSheet[1] = oSheet;
-        }
-        catch(com.sun.star.lang.IndexOutOfBoundsException e) {
-            ex = e;
-        }
-        catch(com.sun.star.lang.WrappedTargetException e) {
-            ex = e;
-        }
-        catch(NullPointerException e) {
-            ex = e;
-        }
-        if (ex != null) {
-            throw new StatusException("Could not get two sheets.", ex);
-        }
-
-        // get the draw page for checking the shapes
-        xDrawPage = (XDrawPage)tEnv.getObjRelation("XDocumentAuditing.DrawPage");
-        if (xDrawPage == null) { // get from object
-            try {
-                XDrawPagesSupplier oDPS = UnoRuntime.queryInterface(XDrawPagesSupplier.class, oObj);
-                Object o = oDPS.getDrawPages().getByIndex(1);
-                xDrawPage = UnoRuntime.queryInterface(XDrawPage.class, o);
-            }
-            catch(com.sun.star.lang.IndexOutOfBoundsException e) {
-            } // ignore exceptions, we'll run into next if statement anyway
-            catch(com.sun.star.lang.WrappedTargetException e) {
-            }
-        }
-        if (xDrawPage == null) {
-            throw new StatusException(Status.failed("'XSheetAuditing.DrawPage' object relation not found."));
-        }
-        if (xDrawPage.hasElements()) {
-            elementCount = xDrawPage.getCount();
-        }
-
-        // switch off the automatic refresh
-        PropertyValue[] props = new PropertyValue[1];
-        props[0] = new PropertyValue();
-        props[0].Name = "AutoRefreshArrows";
-        props[0].Value = Boolean.FALSE;
-        XModel xModel = UnoRuntime.queryInterface(XModel.class, oObj);
-        dispatch(xModel.getCurrentController().getFrame(), tParam.getMSF(), ".uno:AutoRefreshArrows", props);
-
-        // prepare the sheets
-        try {
-            xSheet[0].getCellByPosition(6, 6).setValue(9);
-            XNamed xNamed = UnoRuntime.queryInterface(XNamed.class, xSheet[0]);
-            sheetName = xNamed.getName();
-            xSheet[1].getCellByPosition(6, 6).setValue(16);
-            xSheet[1].getCellByPosition(6, 7).setFormula("= SQRT(G7)");
-            XSheetAuditing xSheetAuditing = UnoRuntime.queryInterface(XSheetAuditing.class, xSheet[1]);
-            CellAddress add = new CellAddress((short)1, 6, 7);
-            xSheetAuditing.showPrecedents(add);
-            boolean ok = hasRightAmountOfShapes(1);
-            if (!ok)
-                throw new StatusException(Status.failed("Wrong amount of shapes on page."));
-        }
-        catch(com.sun.star.lang.IndexOutOfBoundsException e) {
-            throw new StatusException("Could not set formulas on sheets.", e);
-        }
-    }
-
-    @Override
-    public void after() {
-        // switch the automatic refresh back on
-        PropertyValue[] props = new PropertyValue[1];
-        props[0] = new PropertyValue();
-        props[0].Name = "AutoRefreshArrows";
-        props[0].Value = Boolean.TRUE;
-        XModel xModel = UnoRuntime.queryInterface(XModel.class, oObj);
-        dispatch(xModel.getCurrentController().getFrame(), tParam.getMSF(), ".uno:AutoRefreshArrows", props);
-    }
-
-    public void _refreshArrows() {
-        boolean result = true;
-
-        Point p0 = pos;
-
-        try {
-            result &= xSheet[1].getCellByPosition(6, 7).getValue() == 4;
-            xSheet[1].getCellByPosition(6, 7).setFormula("= SQRT(" + sheetName + ".G7)");
-            result &= xSheet[1].getCellByPosition(6, 7).getValue() == 3;
-        }
-        catch(com.sun.star.lang.IndexOutOfBoundsException e) {
-            throw new StatusException("Could not set formulas on sheets.", e);
-        }
-
-        result &= hasRightAmountOfShapes(1);
-        Point p1 = pos;
-
-        // points have to be the same: if not we have an auto update
-        boolean res = (p0.X == p1.X && p0.Y == p1.Y);
-        result &= res;
-        if (!res)
-            log.println("Arrow has been refreshed, but this should have been switched off.");
-
-        oObj.refreshArrows();
-
-        result &= hasRightAmountOfShapes(1);
-        Point p2 = pos;
-
-        // points have to differ
-        res = (p1.X != p2.X || p1.Y != p2.Y);
-        result &= res;
-        if (!res)
-            log.println("Arrow has not been refreshed.");
-
-        tRes.tested("refreshArrows()", result);
-    }
-
-    /**
-     * Check if the amount of shapes is the right one after displaying that stuff
-     * 2do improve this: check that the shapes are the correct ones -> convwatch
-     * @desiredValue That's the amount of shapes that have to be here.
-     * @return True, if the actual count of shapes is the same
-     */
-    private boolean hasRightAmountOfShapes(int desiredValue) {
-        int newCount = xDrawPage.getCount();
-        if (newCount != elementCount + desiredValue) {
-            return false;
-        }
-        else {
-            if (desiredValue >= 0) {
-                for (int i=elementCount; i<newCount; i++) {
-                    try {
-                        Object o = xDrawPage.getByIndex(i);
-                        XShape xShape = UnoRuntime.queryInterface(XShape.class, o);
-                        pos = xShape.getPosition();
-                        System.out.println("Shape Type: " + xShape.getShapeType());
-                    }
-                    catch(com.sun.star.uno.Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-        }
-        return true;
-    }
-
-    private void dispatch(Object oProvider, XMultiServiceFactory xMSF, String url, PropertyValue[] prop) {
-        XDispatchProvider xDispatchProvider = UnoRuntime.queryInterface(XDispatchProvider.class, oProvider);
-        Object dispatcher = null;
-        try {
-            dispatcher = xMSF.createInstance("com.sun.star.frame.DispatchHelper");
-        }
-        catch(com.sun.star.uno.Exception e) {
-        }
-
-        XDispatchHelper xDispatchHelper = UnoRuntime.queryInterface(XDispatchHelper.class, dispatcher);
-        xDispatchHelper.executeDispatch(xDispatchProvider, url, "", 0, prop);
-    }
-}
diff --git a/sc/CppunitTest_sc_modelobj.mk b/sc/CppunitTest_sc_modelobj.mk
index 77bef309eaf1..6ad683c0a793 100644
--- a/sc/CppunitTest_sc_modelobj.mk
+++ b/sc/CppunitTest_sc_modelobj.mk
@@ -14,48 +14,21 @@ $(eval $(call gb_CppunitTest_CppunitTest,sc_modelobj))
 $(eval $(call gb_CppunitTest_use_external,sc_modelobj,boost_headers))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,sc_modelobj, \
-    sc/qa/extras/scmodelobj \
+	sc/qa/extras/scmodelobj \
 ))
 
 $(eval $(call gb_CppunitTest_use_libraries,sc_modelobj, \
-    basegfx \
-    comphelper \
-    cppu \
-    cppuhelper \
-    drawinglayer \
-    editeng \
-    for \
-    forui \
-    i18nlangtag \
-    msfilter \
-    oox \
-    sal \
-    salhelper \
-    sax \
-    sb \
-    sc \
-    sfx \
-    sot \
-    subsequenttest \
-    svl \
-    svt \
-    svx \
-    svxcore \
+	comphelper \
+	cppu \
+	cppuhelper \
+	sal \
+	subsequenttest \
 	test \
-    tk \
-    tl \
-    ucbhelper \
 	unotest \
-    utl \
-    vbahelper \
-    vcl \
-    xo \
 ))
 
 $(eval $(call gb_CppunitTest_set_include,sc_modelobj,\
-    -I$(SRCDIR)/sc/source/ui/inc \
-    -I$(SRCDIR)/sc/inc \
-    $$(INCLUDE) \
+	$$(INCLUDE) \
 ))
 
 $(eval $(call gb_CppunitTest_use_sdk_api,sc_modelobj))
@@ -63,9 +36,9 @@ $(eval $(call gb_CppunitTest_use_sdk_api,sc_modelobj))
 $(eval $(call gb_CppunitTest_use_ure,sc_modelobj))
 $(eval $(call gb_CppunitTest_use_vcl,sc_modelobj))
 
-$(eval $(call gb_CppunitTest_use_components,sc_modelobj,\
-    $(sc_unoapi_common_components) \
-))
+$(eval $(call gb_CppunitTest_use_rdb,sc_modelobj,services))
+
+$(eval $(call gb_CppunitTest_use_components,sc_modelobj))
 
 $(eval $(call gb_CppunitTest_use_configuration,sc_modelobj))
 
diff --git a/sc/qa/extras/scmodelobj.cxx b/sc/qa/extras/scmodelobj.cxx
index 79f44080f7a7..78bc8f7b34d5 100644
--- a/sc/qa/extras/scmodelobj.cxx
+++ b/sc/qa/extras/scmodelobj.cxx
@@ -11,11 +11,13 @@
 #include <test/sheet/spreadsheetdocumentsettings.hxx>
 #include <test/sheet/xcalculatable.hxx>
 #include <test/sheet/xconsolidatable.hxx>
+#include <test/sheet/xdocumentauditing.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/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
 #include <com/sun/star/sheet/XSpreadsheet.hpp>
 #include <com/sun/star/sheet/XSpreadsheets.hpp>
@@ -32,6 +34,7 @@ class ScModelObj : public UnoApiTest,
                    public apitest::SpreadsheetDocumentSettings,
                    public apitest::XCalculatable,
                    public apitest::XConsolidatable,
+                   public apitest::XDocumentAuditing,
                    public apitest::XGoalSeek
 {
 public:
@@ -39,6 +42,7 @@ public:
     virtual void tearDown() override;
 
     virtual uno::Reference< uno::XInterface > init() override;
+    virtual uno::Reference< uno::XInterface > getXMSF() override;
     virtual uno::Sequence<uno::Reference<table::XCell>> getXCells() override;
 
     ScModelObj();
@@ -57,6 +61,9 @@ public:
     CPPUNIT_TEST(testCreateConsolidationDescriptor);
     CPPUNIT_TEST(testConsolidate);
 
+    // XDocumentAuditing
+    CPPUNIT_TEST(testRefreshArrows);
+
     // XGoalSeek
     CPPUNIT_TEST(testSeekGoal);
 
@@ -93,6 +100,11 @@ uno::Reference< uno::XInterface > ScModelObj::init()
     return xModel;
 }
 
+uno::Reference<uno::XInterface> ScModelObj::getXMSF()
+{
+    return getMultiServiceFactory();
+}
+
 uno::Sequence<uno::Reference<table::XCell>> ScModelObj::getXCells()
 {
     return m_xCells;
diff --git a/test/Library_subsequenttest.mk b/test/Library_subsequenttest.mk
index 83ba40a06850..c6a69d23623b 100644
--- a/test/Library_subsequenttest.mk
+++ b/test/Library_subsequenttest.mk
@@ -86,6 +86,7 @@ $(eval $(call gb_Library_add_exception_objects,subsequenttest,\
 	test/source/sheet/xcellseries \
 	test/source/sheet/xconsolidatable \
 	test/source/sheet/xconsolidationdescriptor \
+	test/source/sheet/xdocumentauditing \
 	test/source/sheet/xgoalseek \
 	test/source/sheet/xdatabaserange \
 	test/source/sheet/xdatabaseranges \
diff --git a/test/source/sheet/xdocumentauditing.cxx b/test/source/sheet/xdocumentauditing.cxx
new file mode 100644
index 000000000000..7b1565a62a43
--- /dev/null
+++ b/test/source/sheet/xdocumentauditing.cxx
@@ -0,0 +1,141 @@
+/* -*- 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/xdocumentauditing.hxx>
+
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/frame/DispatchHelper.hpp>
+#include <com/sun/star/frame/XDispatchHelper.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/sheet/XDocumentAuditing.hpp>
+#include <com/sun/star/sheet/XSheetAuditing.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheets.hpp>
+#include <com/sun/star/table/CellAddress.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
+#include <comphelper/processfactory.hxx>
+
+#include <cppunit/extensions/HelperMacros.h>
+
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+
+namespace apitest
+{
+void XDocumentAuditing::dispatch(const uno::Reference<frame::XFrame>& xFrame,
+                                 const uno::Sequence<beans::PropertyValue>& rArguments)
+{
+    uno::Reference<uno::XComponentContext> xContext = ::comphelper::getProcessComponentContext();
+    uno::Reference<frame::XDispatchHelper> xDispatchHelper(frame::DispatchHelper::create(xContext),
+                                                           UNO_QUERY_THROW);
+    CPPUNIT_ASSERT(xDispatchHelper.is());
+
+    uno::Reference<frame::XDispatchProvider> xDispatchProvider(xFrame, UNO_QUERY_THROW);
+    CPPUNIT_ASSERT(xDispatchProvider.is());
+
+    xDispatchHelper->executeDispatch(xDispatchProvider, ".uno:AutoRefreshArrows", "", 0,
+                                     rArguments);
+}
+
+bool XDocumentAuditing::hasRightAmountOfShapes(const uno::Reference<drawing::XDrawPage>& xDrawPage,
+                                               const sal_Int32& nElementCount,
+                                               const sal_Int32& nShapes)
+{
+    const sal_Int32 nCount = xDrawPage->getCount();
+    if (nCount != nElementCount + nShapes)
+        return false;
+    else
+    {
+        if (nShapes >= 0)
+        {
+            for (sal_Int32 i = nElementCount; i < nCount; i++)
+            {
+                uno::Reference<drawing::XShape> xShape(xDrawPage->getByIndex(i), UNO_QUERY_THROW);
+                m_Position = xShape->getPosition();
+            }
+        }
+    }
+    return true;
+}
+
+void XDocumentAuditing::testRefreshArrows()
+{
+    uno::Reference<sheet::XDocumentAuditing> xDocumentAuditing(init(), UNO_QUERY_THROW);
+
+    uno::Reference<sheet::XSpreadsheetDocument> xDoc(xDocumentAuditing, 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> xSheet1(xIA->getByIndex(0), UNO_QUERY_THROW);
+    uno::Reference<sheet::XSpreadsheet> xSheet2(xIA->getByIndex(1), UNO_QUERY_THROW);
+
+    uno::Reference<drawing::XDrawPagesSupplier> xDPS(xDocumentAuditing, UNO_QUERY_THROW);
+    uno::Reference<drawing::XDrawPage> xDrawPage(xDPS->getDrawPages()->getByIndex(1),
+                                                 UNO_QUERY_THROW);
+
+    sal_Int32 nDrawPageElementCount = 0;
+    if (xDrawPage->hasElements())
+        nDrawPageElementCount = xDrawPage->getCount();
+
+    uno::Sequence<beans::PropertyValue> aPropertyValue(1);
+    uno::Any aValue;
+    aValue <<= false;
+    aPropertyValue[0].Name = "AutoRefreshArrows";
+    aPropertyValue[0].Value = aValue;
+    uno::Reference<frame::XModel> xModel(xDocumentAuditing, UNO_QUERY_THROW);
+    dispatch(xModel->getCurrentController()->getFrame(), aPropertyValue);
+
+    xSheet1->getCellByPosition(6, 6)->setValue(9);
+    uno::Reference<container::XNamed> xNA1(xSheet1, UNO_QUERY_THROW);
+    OUString sSheet1Name = xNA1->getName();
+
+    xSheet2->getCellByPosition(6, 6)->setValue(16);
+    xSheet2->getCellByPosition(6, 7)->setFormula("= SQRT(G7)");
+
+    uno::Reference<sheet::XSheetAuditing> xSheetAuditing(xSheet2, UNO_QUERY_THROW);
+    xSheetAuditing->showPrecedents(table::CellAddress(1, 6, 7));
+    bool bResult = hasRightAmountOfShapes(xDrawPage, nDrawPageElementCount, 1);
+    CPPUNIT_ASSERT_MESSAGE("Wrong amount of shapes on page", bResult);
+    awt::Point Position0 = m_Position;
+
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(4, xSheet2->getCellByPosition(6, 7)->getValue(), 0.1);
+    xSheet2->getCellByPosition(6, 7)->setFormula("= SQRT(" + sSheet1Name + ".G7)");
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(3, xSheet2->getCellByPosition(6, 7)->getValue(), 0.1);
+
+    bResult = hasRightAmountOfShapes(xDrawPage, nDrawPageElementCount, 1);
+    CPPUNIT_ASSERT_MESSAGE("Wrong amount of shapes on page", bResult);
+    awt::Point Position1 = m_Position;
+
+    CPPUNIT_ASSERT_MESSAGE("Arrow has been refreshed",
+                           Position0.X == Position1.X && Position0.Y == Position1.Y);
+
+    xDocumentAuditing->refreshArrows();
+
+    bResult = hasRightAmountOfShapes(xDrawPage, nDrawPageElementCount, 1);
+    CPPUNIT_ASSERT_MESSAGE("Wrong amount of shapes on page", bResult);
+    awt::Point Position2 = m_Position;
+
+    CPPUNIT_ASSERT_MESSAGE("Arrow has not been refreshed",
+                           Position1.X != Position2.X || Position1.Y != Position2.Y);
+}
+} // 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