sc/CppunitTest_sc_uicalc2.mk   |   62 +
 sc/Module_sc.mk                |    1 
 sc/qa/unit/helper/qahelper.cxx |   68 +
 sc/qa/unit/helper/qahelper.hxx |    7 
 sc/qa/unit/uicalc/uicalc.cxx   | 1413 -----------------------------------------
 sc/qa/unit/uicalc/uicalc2.cxx  | 1400 ++++++++++++++++++++++++++++++++++++++++
 6 files changed, 1538 insertions(+), 1413 deletions(-)

New commits:
commit 07fa6e041f0d6146fc34ade4dcea1be8d69f80e2
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Thu Mar 23 18:02:18 2023 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Mar 23 20:12:44 2023 +0000

    CppunitTest_sc_uicalc: split in two
    
    It already has 99 tests
    
    Change-Id: I672de980ce170b83ba84252170878731e1ce02f7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149462
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/CppunitTest_sc_uicalc2.mk b/sc/CppunitTest_sc_uicalc2.mk
new file mode 100644
index 000000000000..647d4ec7abed
--- /dev/null
+++ b/sc/CppunitTest_sc_uicalc2.mk
@@ -0,0 +1,62 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# 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/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,sc_uicalc2))
+
+$(eval $(call gb_CppunitTest_use_externals,sc_uicalc2, \
+       boost_headers \
+       mdds_headers \
+       libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_uicalc2, \
+    sc/qa/unit/uicalc/uicalc2 \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sc_uicalc2, \
+    comphelper \
+    cppu \
+    cppuhelper \
+    i18nlangtag \
+    sal \
+    sc \
+    scqahelper \
+    sfx \
+    subsequenttest \
+    svl \
+    svl \
+    svx \
+    svxcore \
+    test \
+    tl \
+    unotest \
+    utl \
+    vcl \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_uicalc2,\
+    -I$(SRCDIR)/sc/source/ui/inc \
+    -I$(SRCDIR)/sc/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_sdk_api,sc_uicalc2))
+
+$(eval $(call gb_CppunitTest_use_ure,sc_uicalc2))
+$(eval $(call gb_CppunitTest_use_vcl,sc_uicalc2))
+
+$(eval $(call gb_CppunitTest_use_rdb,sc_uicalc2,services))
+
+$(eval $(call gb_CppunitTest_use_configuration,sc_uicalc2))
+
+$(eval $(call gb_CppunitTest_add_arguments,sc_uicalc2, \
+    
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}"
 \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index b8761a24e78a..e9710baf10ee 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -91,6 +91,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc, \
        CppunitTest_sc_subsequent_export_test3 \
        CppunitTest_sc_subsequent_export_test4 \
        CppunitTest_sc_uicalc \
+       CppunitTest_sc_uicalc2 \
        CppunitTest_sc_vba_macro_test \
        CppunitTest_sc_a11y \
 ))
diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index e132b5dd7bb5..27230e0d2b43 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -8,6 +8,8 @@
  */
 
 #include "qahelper.hxx"
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <comphelper/propertysequence.hxx>
 #include "csv_handler.hxx"
 #include "debughelper.hxx"
 #include <drwlayer.hxx>
@@ -33,6 +35,8 @@
 #include <scitems.hxx>
 #include <stringutil.hxx>
 #include <tokenarray.hxx>
+#include <vcl/keycodes.hxx>
+#include <vcl/scheduler.hxx>
 
 #include <orcus/csv_parser.hpp>
 
@@ -271,6 +275,70 @@ void ScModelTestBase::testFormats(ScDocument* 
pDoc,std::u16string_view sFormat)
     CPPUNIT_ASSERT_EQUAL(ScRangeList(ScRange(1,1,2,3,1,2)), rRange3);
 }
 
+void ScModelTestBase::goToCell(const OUString& rCell)
+{
+    uno::Sequence<beans::PropertyValue> aArgs
+        = comphelper::InitPropertySequence({ { "ToPoint", uno::Any(rCell) } });
+    dispatchCommand(mxComponent, ".uno:GoToCell", aArgs);
+}
+
+void ScModelTestBase::typeString(const std::u16string_view& rStr)
+{
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
+    for (const char16_t c : rStr)
+    {
+        pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, c, 0);
+        pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, c, 0);
+        Scheduler::ProcessEventsToIdle();
+    }
+}
+
+void ScModelTestBase::insertStringToCell(const OUString& rCell, const 
std::u16string_view& rStr)
+{
+    goToCell(rCell);
+
+    typeString(rStr);
+
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
+    Scheduler::ProcessEventsToIdle();
+}
+
+void ScModelTestBase::insertArrayToCell(const OUString& rCell, const 
std::u16string_view& rStr)
+{
+    goToCell(rCell);
+
+    typeString(rStr);
+
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_MOD1 | KEY_SHIFT | 
awt::Key::RETURN);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_MOD1 | KEY_SHIFT | 
awt::Key::RETURN);
+    Scheduler::ProcessEventsToIdle();
+}
+
+void ScModelTestBase::insertNewSheet(ScDocument& rDoc)
+{
+    sal_Int32 nTabs = static_cast<sal_Int32>(rDoc.GetTableCount());
+
+    uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence(
+        { { "Name", uno::Any(OUString("NewTab")) }, { "Index", uno::Any(nTabs 
+ 1) } }));
+    dispatchCommand(mxComponent, ".uno:Insert", aArgs);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(nTabs + 1), rDoc.GetTableCount());
+}
+
+void ScModelTestBase::executeAutoSum()
+{
+    dispatchCommand(mxComponent, ".uno:AutoSum", {});
+
+    // Use RETURN key to exit autosum edit view
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
+    Scheduler::ProcessEventsToIdle();
+}
+
 const SdrOle2Obj* ScModelTestBase::getSingleOleObject(ScDocument& rDoc, 
sal_uInt16 nPage)
 {
     // Retrieve the chart object instance from the 2nd page (for the 2nd 
sheet).
diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx
index f632d57bdbbb..fecf88a6ad0e 100644
--- a/sc/qa/unit/helper/qahelper.hxx
+++ b/sc/qa/unit/helper/qahelper.hxx
@@ -173,6 +173,13 @@ public:
 
     void testFormats(ScDocument* pDoc,std::u16string_view sFormat);
 
+    void goToCell(const OUString& rCell);
+    void typeString(const std::u16string_view& rStr);
+    void insertStringToCell(const OUString& rCell, const std::u16string_view& 
rStr);
+    void insertArrayToCell(const OUString& rCell, const std::u16string_view& 
rStr);
+    void insertNewSheet(ScDocument& rDoc);
+    void executeAutoSum();
+
 private:
     // Why is this here and not in osl, and using the already existing file
     // handling APIs? Do we really want to add arbitrary new file handling
diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx
index 4fb9416badd8..dcf74b8790f6 100644
--- a/sc/qa/unit/uicalc/uicalc.cxx
+++ b/sc/qa/unit/uicalc/uicalc.cxx
@@ -9,7 +9,6 @@
 
 #include "../helper/qahelper.hxx"
 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
-#include <svx/svdpage.hxx>
 #include <unotools/syslocaleoptions.hxx>
 #include <vcl/keycodes.hxx>
 #include <vcl/scheduler.hxx>
@@ -19,20 +18,15 @@
 #include <comphelper/scopeguard.hxx>
 #include <comphelper/servicehelper.hxx>
 #include <com/sun/star/awt/Key.hpp>
-#include <com/sun/star/frame/Desktop.hpp>
 #include <com/sun/star/sheet/GlobalSheetSettings.hpp>
-#include <com/sun/star/text/XTextRange.hpp>
 #include <conditio.hxx>
-#include <dbdata.hxx>
 #include <document.hxx>
 #include <docsh.hxx>
 #include <dpobject.hxx>
-#include <drwlayer.hxx>
 #include <formulaopt.hxx>
 #include <inputopt.hxx>
 #include <postit.hxx>
 #include <rangeutl.hxx>
-#include <scdll.hxx>
 #include <scmod.hxx>
 #include <tabvwsh.hxx>
 #include <viewdata.hxx>
@@ -43,12 +37,6 @@ class ScUiCalcTest : public ScModelTestBase
 {
 public:
     ScUiCalcTest();
-    void goToCell(const OUString& rCell);
-    void typeString(const std::u16string_view& rStr);
-    void insertStringToCell(const OUString& rCell, const std::u16string_view& 
rStr);
-    void insertArrayToCell(const OUString& rCell, const std::u16string_view& 
rStr);
-    void insertNewSheet(ScDocument& rDoc);
-    void executeAutoSum();
 };
 
 ScUiCalcTest::ScUiCalcTest()
@@ -71,80 +59,6 @@ static void lcl_AssertCurrentCursorPosition(ScDocShell& 
rDocSh, std::u16string_v
         aAddr.Row(), pViewShell->GetViewData().GetCurY());
 }
 
-static void lcl_SelectObjectByName(ScTabViewShell& rViewShell, 
std::u16string_view rObjName)
-{
-    bool bFound = rViewShell.SelectObject(rObjName);
-    CPPUNIT_ASSERT_MESSAGE(
-        OString(OUStringToOString(rObjName, RTL_TEXTENCODING_UTF8) + " not 
found.").getStr(),
-        bFound);
-
-    
CPPUNIT_ASSERT(rViewShell.GetViewData().GetScDrawView()->AreObjectsMarked());
-}
-
-void ScUiCalcTest::goToCell(const OUString& rCell)
-{
-    uno::Sequence<beans::PropertyValue> aArgs
-        = comphelper::InitPropertySequence({ { "ToPoint", uno::Any(rCell) } });
-    dispatchCommand(mxComponent, ".uno:GoToCell", aArgs);
-}
-
-void ScUiCalcTest::typeString(const std::u16string_view& rStr)
-{
-    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
-    for (const char16_t c : rStr)
-    {
-        pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, c, 0);
-        pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, c, 0);
-        Scheduler::ProcessEventsToIdle();
-    }
-}
-
-void ScUiCalcTest::insertStringToCell(const OUString& rCell, const 
std::u16string_view& rStr)
-{
-    goToCell(rCell);
-
-    typeString(rStr);
-
-    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
-    Scheduler::ProcessEventsToIdle();
-}
-
-void ScUiCalcTest::insertArrayToCell(const OUString& rCell, const 
std::u16string_view& rStr)
-{
-    goToCell(rCell);
-
-    typeString(rStr);
-
-    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_MOD1 | KEY_SHIFT | 
awt::Key::RETURN);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_MOD1 | KEY_SHIFT | 
awt::Key::RETURN);
-    Scheduler::ProcessEventsToIdle();
-}
-
-void ScUiCalcTest::insertNewSheet(ScDocument& rDoc)
-{
-    sal_Int32 nTabs = static_cast<sal_Int32>(rDoc.GetTableCount());
-
-    uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence(
-        { { "Name", uno::Any(OUString("NewTab")) }, { "Index", uno::Any(nTabs 
+ 1) } }));
-    dispatchCommand(mxComponent, ".uno:Insert", aArgs);
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(nTabs + 1), rDoc.GetTableCount());
-}
-
-void ScUiCalcTest::executeAutoSum()
-{
-    dispatchCommand(mxComponent, ".uno:AutoSum", {});
-
-    // Use RETURN key to exit autosum edit view
-    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
-    Scheduler::ProcessEventsToIdle();
-}
-
 CPPUNIT_TEST_FIXTURE(ScUiCalcTest, 
testTdf142854_GridVisibilityImportXlsxInHeadlessMode)
 {
     // Tests are running in Headless mode
@@ -1950,1333 +1864,6 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf150219)
     CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(0, 0, 1)));
 }
 
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf150499)
-{
-    createScDoc("tdf150499.xls");
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
-
-    uno::Sequence<beans::PropertyValue> aArgs(
-        comphelper::InitPropertySequence({ { "Index", uno::Any(sal_uInt16(0)) 
} }));
-
-    // Without the fix in place, this test would have crashed here
-    dispatchCommand(mxComponent, ".uno:Remove", aArgs);
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(1), pDoc->GetTableCount());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf133326)
-{
-    createScDoc("tdf133326.ods");
-    ScDocument* pDoc = getScDoc();
-
-    dispatchCommand(mxComponent, ".uno:SelectAll", {});
-
-    dispatchCommand(mxComponent, ".uno:Copy", {});
-
-    insertNewSheet(*pDoc);
-
-    OUString aFormula = pDoc->GetFormula(0, 0, 1);
-    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
-
-    dispatchCommand(mxComponent, ".uno:Paste", {});
-
-    aFormula = pDoc->GetFormula(0, 0, 1);
-    CPPUNIT_ASSERT_EQUAL(OUString("=RAND()*1000000"), aFormula);
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    aFormula = pDoc->GetFormula(0, 0, 1);
-    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(1), pDoc->GetTableCount());
-
-    dispatchCommand(mxComponent, ".uno:Redo", {});
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
-    aFormula = pDoc->GetFormula(0, 0, 1);
-    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
-
-    // Without the fix in place, it would have crashed here
-    dispatchCommand(mxComponent, ".uno:Redo", {});
-
-    aFormula = pDoc->GetFormula(0, 0, 1);
-    CPPUNIT_ASSERT_EQUAL(OUString("=RAND()*1000000"), aFormula);
-    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf126685)
-{
-    createScDoc("tdf126685.ods");
-
-    ScDocument* pDoc = getScDoc();
-
-    dispatchCommand(mxComponent, ".uno:SelectAll", {}); // test should crash 
here without the fix
-
-    CPPUNIT_ASSERT_EQUAL(
-        OUString("Control Height will change from 0.65 to 0.61 cm with 120dpi 
..."),
-        pDoc->GetString(ScAddress(3, 1, 1)));
-    dispatchCommand(mxComponent, ".uno:Cut", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(3, 1, 1)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf119793)
-{
-    createScDoc("tdf119793.ods");
-
-    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
-    uno::Reference<drawing::XDrawPage> 
xPage(pModelObj->getDrawPages()->getByIndex(0),
-                                             uno::UNO_QUERY_THROW);
-    uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), 
uno::UNO_QUERY_THROW);
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4984), 
xShape->getPosition().X);
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
-
-    // Move the shape to the right
-    lcl_SelectObjectByName(*getViewShell(), u"Shape 1");
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RIGHT);
-    Scheduler::ProcessEventsToIdle();
-
-    //position has changed
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5084), 
xShape->getPosition().X);
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
-
-    // Type into the shape
-    typeString(u"x");
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_ESCAPE);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_ESCAPE);
-    Scheduler::ProcessEventsToIdle();
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5084), 
xShape->getPosition().X);
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: 4984
-    // - Actual  : 5084
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4984), 
xShape->getPosition().X);
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
-
-    // tdf#141816: Without the fix in place, this test would have failed with
-    // - Expected:
-    // - Actual  : x
-    uno::Reference<text::XText> xText
-        = uno::Reference<text::XTextRange>(xShape, 
uno::UNO_QUERY_THROW)->getText();
-    CPPUNIT_ASSERT_EQUAL(OUString(""), xText->getString());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf131455)
-{
-    // Note that tdf#131455 and tdf#126904 were actually incorrect,
-    // but keep the test with a fixed version of the document.
-    createScDoc("tdf131455-fixed.ods");
-    ScDocShell* pDocSh = getScDocShell();
-
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"A5");
-    dispatchCommand(mxComponent, ".uno:GoRight", {});
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"B5");
-    dispatchCommand(mxComponent, ".uno:GoRight", {});
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"E5");
-    dispatchCommand(mxComponent, ".uno:GoRight", {});
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"F5");
-    dispatchCommand(mxComponent, ".uno:GoRight", {});
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"I5");
-    dispatchCommand(mxComponent, ".uno:GoRight", {});
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"J5");
-    dispatchCommand(mxComponent, ".uno:GoRight", {});
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"M5");
-
-    //Cursor can't move forward to the right
-    for (size_t i = 0; i < 5; ++i)
-    {
-        dispatchCommand(mxComponent, ".uno:GoRight", {});
-        lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
-    }
-
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().GetTabNo());
-
-    dispatchCommand(mxComponent, ".uno:JumpToNextTable", {});
-
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().GetTabNo());
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"A4");
-
-    // Go to row 9
-    for (size_t i = 0; i < 6; ++i)
-    {
-        dispatchCommand(mxComponent, ".uno:GoDown", {});
-    }
-
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"A10");
-
-    dispatchCommand(mxComponent, ".uno:SelectRow", {});
-    dispatchCommand(mxComponent, ".uno:DeleteRows", {});
-
-    dispatchCommand(mxComponent, ".uno:JumpToPrevTable", {});
-
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().GetTabNo());
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
-
-    //Cursor can't move forward to the right
-    for (size_t i = 0; i < 5; ++i)
-    {
-        dispatchCommand(mxComponent, ".uno:GoRight", {});
-        lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
-    }
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124818)
-{
-    createScDoc("tdf124818.xls");
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), 
getViewShell()->GetViewData().GetTabNo());
-
-    dispatchCommand(mxComponent, ".uno:JumpToPrevTable", {});
-
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().GetTabNo());
-
-    ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
-    SdrPage* pPage = pDrawLayer->GetPage(1);
-    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
-
-    dispatchCommand(mxComponent, ".uno:SelectAll", {});
-
-    dispatchCommand(mxComponent, ".uno:Cut", {});
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), pPage->GetObjCount());
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124816)
-{
-    createScDoc("tdf124816.xlsx");
-    ScDocShell* pDocSh = getScDocShell();
-    ScDocument* pDoc = getScDoc();
-
-    // The actual result is completely unrelated to this test and behaviour of
-    // OFFSET() was changed as of tdf#85551 and here result of that test
-    // document is now Err:502 instead of 0.
-    const OUString aExpectedResult("Err:502");
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"D10");
-    CPPUNIT_ASSERT_EQUAL(aExpectedResult, pDoc->GetString(ScAddress(3, 9, 0)));
-
-    //Without the fix, it would crash
-    dispatchCommand(mxComponent, ".uno:InsertRowsBefore", {});
-    CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(3, 9, 0)));
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-    CPPUNIT_ASSERT_EQUAL(aExpectedResult, pDoc->GetString(ScAddress(3, 9, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124815)
-{
-    createScDoc("tdf124815.ods");
-
-    ScDocument* pDoc = getScDoc();
-    CPPUNIT_ASSERT_EQUAL(OUString("Rakennukset"), pDoc->GetString(ScAddress(2, 
0, 0)));
-
-    //Without the fix, it would crash
-    dispatchCommand(mxComponent, ".uno:InsertColumnsBefore", {});
-    CPPUNIT_ASSERT_EQUAL(OUString("Rakennukset"), pDoc->GetString(ScAddress(3, 
0, 0)));
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-    CPPUNIT_ASSERT_EQUAL(OUString("Rakennukset"), pDoc->GetString(ScAddress(2, 
0, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf142010)
-{
-    createScDoc("tdf142010.xls");
-    ScDocument* pDoc = getScDoc();
-
-    goToCell("A1");
-
-    OUString aFormula = pDoc->GetFormula(5, 71, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=MOD(F$71+$C72,9)"), aFormula);
-    CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(5, 71, 0)));
-
-    dispatchCommand(mxComponent, ".uno:InsertColumnsBefore", {});
-
-    aFormula = pDoc->GetFormula(6, 71, 0);
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: =MOD(G$71+$D72,9)
-    // - Actual  : =MOD(G$71+$K72,9)
-    CPPUNIT_ASSERT_EQUAL(OUString("=MOD(G$71+$D72,9)"), aFormula);
-    CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(6, 71, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    aFormula = pDoc->GetFormula(5, 71, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=MOD(F$71+$C72,9)"), aFormula);
-    CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(5, 71, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf154061)
-{
-    createScDoc("simpleTable.xlsx");
-    ScDocument* pDoc = getScDoc();
-    CPPUNIT_ASSERT_EQUAL(OUString("Column2"), pDoc->GetString(ScAddress(1, 0, 
0)));
-
-    goToCell("B1");
-
-    // Without the fix in place, it would crash here due to an out of bounds 
array access
-    dispatchCommand(mxComponent, ".uno:InsertColumnsBefore", {});
-    CPPUNIT_ASSERT_EQUAL(OUString("Column2"), pDoc->GetString(ScAddress(2, 0, 
0)));
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-    CPPUNIT_ASSERT_EQUAL(OUString("Column2"), pDoc->GetString(ScAddress(1, 0, 
0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf132431)
-{
-    createScDoc("tdf132431.ods");
-    ScDocument* pDoc = getScDoc();
-
-    OUString aFormula = pDoc->GetFormula(7, 219, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUMIFS($H$2:$H$198,B$2:B$198,G220)"), 
aFormula);
-    CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(7, 219, 0)));
-
-    // Without the fix in place, it would crash here with
-    // uncaught exception of type std::exception (or derived).
-    // - vector::_M_fill_insert
-    insertStringToCell("H220", u"=SUMIFS($H$2:$DB$198,B$2:B$198,G220)");
-
-    aFormula = pDoc->GetFormula(7, 219, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUMIFS($H$2:$DB$198,B$2:B$198,G220)"), 
aFormula);
-    CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(7, 219, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("Err:502"), pDoc->GetString(ScAddress(7, 
219, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf131073)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    for (SCCOLROW nColRow = 0; nColRow < 3; nColRow++)
-    {
-        pDoc->SetString(ScAddress(0, nColRow, 0), "Hello World");
-        pDoc->SetRowHeight(0, nColRow, 1000 * (nColRow + 1));
-        pDoc->SetString(ScAddress(nColRow, 0, 0), "Hello World");
-        pDoc->SetColWidth(nColRow, 0, 1000 * (nColRow + 1));
-    }
-
-    // Check rows
-    pDoc->SetRowHidden(1, 1, 0, true);
-    goToCell("A1:A3");
-    dispatchCommand(
-        mxComponent, ".uno:SetOptimalRowHeight",
-        comphelper::InitPropertySequence({ { "aExtraHeight", 
uno::Any(sal_uInt16(0)) } }));
-
-    CPPUNIT_ASSERT(!pDoc->RowHidden(0, 0));
-    // tdf#131073: Without the fix in place, the second row would not be hidden
-    CPPUNIT_ASSERT(pDoc->RowHidden(1, 0));
-    CPPUNIT_ASSERT(!pDoc->RowHidden(2, 0));
-    const sal_uInt16 nStdRowHeight = pDoc->GetRowHeight(4, 0);
-    CPPUNIT_ASSERT_EQUAL(nStdRowHeight, pDoc->GetRowHeight(0, 0));
-    CPPUNIT_ASSERT_EQUAL(nStdRowHeight, pDoc->GetRowHeight(1, SCTAB(0), 
false));
-    CPPUNIT_ASSERT_EQUAL(nStdRowHeight, pDoc->GetRowHeight(2, 0));
-
-    // Check columns
-    pDoc->SetColHidden(1, 1, 0, true);
-    goToCell("A1:C1");
-    dispatchCommand(
-        mxComponent, ".uno:SetOptimalColumnWidth",
-        comphelper::InitPropertySequence({ { "aExtraWidth", 
uno::Any(sal_uInt16(0)) } }));
-
-    CPPUNIT_ASSERT(!pDoc->ColHidden(0, 0));
-    // tdf#131073: Without the fix in place, the second column would not be 
hidden
-    CPPUNIT_ASSERT(pDoc->ColHidden(1, 0));
-    CPPUNIT_ASSERT(!pDoc->ColHidden(2, 0));
-    const sal_uInt16 nStdColWidth = pDoc->GetColWidth(0, 0);
-    CPPUNIT_ASSERT_EQUAL(nStdColWidth, pDoc->GetColWidth(0, 0));
-    CPPUNIT_ASSERT_EQUAL(nStdColWidth, pDoc->GetColWidth(1, SCTAB(0), false));
-    CPPUNIT_ASSERT_EQUAL(nStdColWidth, pDoc->GetColWidth(2, 0));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf83901)
-{
-    createScDoc();
-    ScDocShell* pDocSh = getScDocShell();
-
-    insertStringToCell("A2", u"=ROW(A3)");
-    ScDocument* pDoc = getScDoc();
-    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(0, 1, 0)));
-
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"A3");
-    dispatchCommand(mxComponent, ".uno:SelectRow", {});
-    dispatchCommand(mxComponent, ".uno:InsertRowsBefore", {});
-
-    //Without the fix, it would be 3.0
-    CPPUNIT_ASSERT_EQUAL(4.0, pDoc->GetValue(ScAddress(0, 1, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(0, 1, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124822)
-{
-    createScDoc("tdf124822.xls");
-
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(OUString("X"), pDoc->GetString(ScAddress(0, 0, 2)));
-
-    dispatchCommand(mxComponent, ".uno:SelectAll", {});
-
-    dispatchCommand(mxComponent, ".uno:Cut", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(0, 0, 2)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString("X"), pDoc->GetString(ScAddress(0, 0, 2)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf118189)
-{
-    createScDoc("tdf118189.xlsx");
-
-    ScDocument* pDoc = getScDoc();
-
-    // Select column A
-    goToCell("A:A");
-
-    dispatchCommand(mxComponent, ".uno:Copy", {});
-
-    // Open a new document
-    createScDoc();
-    pDoc = getScDoc();
-
-    dispatchCommand(mxComponent, ".uno:Paste", {});
-
-    OUString aFormula = pDoc->GetFormula(0, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
-
-    dispatchCommand(mxComponent, ".uno:Cut", {});
-
-    aFormula = pDoc->GetFormula(0, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
-
-    // Without the fix in place, this test would have crashed here
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    aFormula = pDoc->GetFormula(0, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf118207)
-{
-    createScDoc("tdf118189.xlsx");
-
-    ScDocument* pDoc = getScDoc();
-
-    // Disable replace cell warning
-    ScModule* pMod = SC_MOD();
-    ScInputOptions aInputOption = pMod->GetInputOptions();
-    bool bOldStatus = aInputOption.GetReplaceCellsWarn();
-    aInputOption.SetReplaceCellsWarn(false);
-    pMod->SetInputOptions(aInputOption);
-
-    // Select column A
-    goToCell("A:A");
-
-    OUString aFormula = pDoc->GetFormula(0, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
-
-    dispatchCommand(mxComponent, ".uno:Cut", {});
-
-    aFormula = pDoc->GetFormula(0, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
-
-    // Select column B
-    goToCell("B:B");
-
-    dispatchCommand(mxComponent, ".uno:Paste", {});
-
-    aFormula = pDoc->GetFormula(1, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
-
-    dispatchCommand(mxComponent, ".uno:Paste", {});
-
-    aFormula = pDoc->GetFormula(1, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    aFormula = pDoc->GetFormula(1, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    aFormula = pDoc->GetFormula(1, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
-    aFormula = pDoc->GetFormula(0, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    aFormula = pDoc->GetFormula(0, 77, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
-
-    // Restore previous status
-    aInputOption.SetReplaceCellsWarn(bOldStatus);
-    pMod->SetInputOptions(aInputOption);
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf148669)
-{
-    // Without the fix in place, this test would have failed with an assert
-    createScDoc("tdf148669.xlsx");
-
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_MESSAGE("There should be a note", 
pDoc->HasNote(ScAddress(701, 0, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124778)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    // Add a new comment
-    uno::Sequence<beans::PropertyValue> aArgs
-        = comphelper::InitPropertySequence({ { "Text", 
uno::Any(OUString("Comment")) } });
-    dispatchCommand(mxComponent, ".uno:InsertAnnotation", aArgs);
-
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
-
-    // Without the fix in place, this test would have crashed
-    dispatchCommand(mxComponent, ".uno:ShowAnnotations", {});
-
-    ScPostIt* pNote = pDoc->GetNote(ScAddress(0, 0, 0));
-    CPPUNIT_ASSERT(pNote);
-    CPPUNIT_ASSERT_EQUAL(true, pNote->IsCaptionShown());
-
-    dispatchCommand(mxComponent, ".uno:ShowAnnotations", {});
-
-    CPPUNIT_ASSERT_EQUAL(false, pNote->IsCaptionShown());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf138428)
-{
-    createScDoc();
-    ScDocShell* pDocSh = getScDocShell();
-
-    // Add a new comment
-    uno::Sequence<beans::PropertyValue> aArgs
-        = comphelper::InitPropertySequence({ { "Text", 
uno::Any(OUString("Comment")) } });
-    dispatchCommand(mxComponent, ".uno:InsertAnnotation", aArgs);
-
-    ScDocument* pDoc = getScDoc();
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Copy", {});
-
-    dispatchCommand(mxComponent, ".uno:GoRight", {});
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"B1");
-
-    dispatchCommand(mxComponent, ".uno:Paste", {});
-
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on B1", 
pDoc->HasNote(ScAddress(1, 0, 0)));
-
-    // Without the fix in place, this test would have crashed here
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on A1", 
!pDoc->HasNote(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Redo", {});
-
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Redo", {});
-
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_MESSAGE("There should be a note on B1", 
pDoc->HasNote(ScAddress(1, 0, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf136113)
-{
-    createScDoc("tdf136113.xlsx");
-    ScDocument* pDoc = getScDoc();
-
-    ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
-    SdrPage* pPage = pDrawLayer->GetPage(0);
-    SdrObject* pObj = pPage->GetObj(0);
-
-    CPPUNIT_ASSERT_EQUAL(tools::Long(18142), pObj->GetSnapRect().Left());
-    CPPUNIT_ASSERT_EQUAL(tools::Long(1709), pObj->GetSnapRect().Top());
-
-    lcl_SelectObjectByName(*getViewShell(), u"Arrow");
-
-    // Move the shape up
-    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::UP);
-    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::UP);
-    Scheduler::ProcessEventsToIdle();
-
-    CPPUNIT_ASSERT_EQUAL(tools::Long(18142), pObj->GetSnapRect().Left());
-    CPPUNIT_ASSERT_EQUAL(tools::Long(1609), pObj->GetSnapRect().Top());
-
-    // Without the fix in place, this test would have failed here
-    ScDocShell* pDocSh = getScDocShell();
-    CPPUNIT_ASSERT(pDocSh->IsModified());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf130614)
-{
-    createScDoc("tdf130614.ods");
-    ScDocument* pDoc = getScDoc();
-
-    lcl_SelectObjectByName(*getViewShell(), u"Object 1");
-
-    dispatchCommand(mxComponent, ".uno:Copy", {});
-
-    // Open a new document
-    createScDoc();
-    pDoc = getScDoc();
-
-    // Without the fix in place, this test would have crashed here
-    dispatchCommand(mxComponent, ".uno:Paste", {});
-
-    ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
-    SdrPage* pPage = pDrawLayer->GetPage(0);
-    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf112735)
-{
-    createScDoc("tdf112735.ods");
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(OUString("(empty)"), pDoc->GetString(ScAddress(1, 0, 
0)));
-
-    goToCell("B3");
-
-    dispatchCommand(mxComponent, ".uno:RecalcPivotTable", {});
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: (empty)
-    // - Actual  :
-    CPPUNIT_ASSERT_EQUAL(OUString("(empty)"), pDoc->GetString(ScAddress(1, 0, 
0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf112884)
-{
-    createScDoc("tdf112884.ods");
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(OUString("0.5"), pDoc->GetString(ScAddress(6, 2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("0.666666666666667"), 
pDoc->GetString(ScAddress(6, 3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("0.833333333333333"), 
pDoc->GetString(ScAddress(6, 4, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("#DIV/0!"), pDoc->GetString(ScAddress(6, 5, 
0)));
-
-    goToCell("G3");
-
-    dispatchCommand(mxComponent, ".uno:RecalcPivotTable", {});
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: #DIV/0!
-    // - Actual  : 0.5
-    CPPUNIT_ASSERT_EQUAL(OUString("#DIV/0!"), pDoc->GetString(ScAddress(6, 2, 
0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("0.5"), pDoc->GetString(ScAddress(6, 3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("0.666666666666667"), 
pDoc->GetString(ScAddress(6, 4, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("0.833333333333333"), 
pDoc->GetString(ScAddress(6, 5, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf133342)
-{
-    createScDoc("tdf133342.ods");
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(OUString("12,35 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
-    //Add decimals
-    dispatchCommand(mxComponent, ".uno:NumberFormatIncDecimals", {});
-    //Space should preserved before percent sign
-    CPPUNIT_ASSERT_EQUAL(OUString("12,346 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
-
-    //Delete decimals
-    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
-    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
-    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
-    //Space should preserved before percent sign
-    CPPUNIT_ASSERT_EQUAL(OUString("12 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
-
-    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
-    //Space should preserved before percent sign
-    CPPUNIT_ASSERT_EQUAL(OUString("12 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf71339)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    insertStringToCell("A2", u"1");
-    insertStringToCell("A3", u"1");
-
-    goToCell("A1:A3");
-
-    executeAutoSum();
-
-    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(0, 3, 0)));
-
-    OUString aFormula = pDoc->GetFormula(0, 3, 0);
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: =SUM(A1:A3)
-    // - Actual  : =SUM(A2:A3)
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:A3)"), aFormula);
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf116421)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    insertStringToCell("A1", u"1");
-    insertStringToCell("A2", u"1");
-    insertStringToCell("A3", u"1");
-
-    goToCell("A4");
-
-    executeAutoSum();
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: 3
-    // - Actual  : 0
-    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(0, 3, 0)));
-
-    OUString aFormula = pDoc->GetFormula(0, 3, 0);
-
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:A3)"), aFormula);
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf86305)
-{
-    createScDoc("tdf86305.ods");
-    ScDocument* pDoc = getScDoc();
-
-    OUString aFormula = pDoc->GetFormula(1, 6, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("{=IF(SUM(B2:B4) > 0, 
SUM(B2:B4*D2:D4/C2:C4), 0)}"), aFormula);
-    CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(1, 6, 0)));
-
-    insertStringToCell("B3", u"50");
-    CPPUNIT_ASSERT_EQUAL(50.0, pDoc->GetValue(ScAddress(1, 2, 0)));
-
-    aFormula = pDoc->GetFormula(1, 6, 0);
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: {=IF(SUM(B2:B4) > 0, SUM(B2:B4*D2:D4/C2:C4), 0)}
-    // - Actual  : {=IF(SUM(B2:B4) > 0, SUM(B2:B4*D2:D4/C2:C4), 0.175)}
-    CPPUNIT_ASSERT_EQUAL(OUString("{=IF(SUM(B2:B4) > 0, 
SUM(B2:B4*D2:D4/C2:C4), 0)}"), aFormula);
-    CPPUNIT_ASSERT_EQUAL(0.175, pDoc->GetValue(ScAddress(1, 6, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf81351)
-{
-    createScDoc("tdf81351.ods");
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
-
-    goToCell("A1:F5");
-
-    dispatchCommand(mxComponent, ".uno:SortAscending", {});
-    dispatchCommand(mxComponent, ".uno:GoDown", {});
-
-    // Without the fix in place, this test would have crashed
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Redo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
-
-    goToCell("A1:F5");
-
-    dispatchCommand(mxComponent, ".uno:SortDescending", {});
-    dispatchCommand(mxComponent, ".uno:GoDown", {});
-
-    // Without the fix in place, this test would have crashed
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
4, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Redo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
3, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
4, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf123202)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    insertStringToCell(u"A1", u"1");
-    insertStringToCell(u"A2", u"2");
-    insertStringToCell(u"A3", u"3");
-    insertStringToCell(u"A4", u"4");
-
-    goToCell("A3");
-
-    dispatchCommand(mxComponent, ".uno:HideRow", {});
-
-    goToCell("A1:A4");
-
-    dispatchCommand(mxComponent, ".uno:SortDescending", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString("4"), pDoc->GetString(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("3"), pDoc->GetString(ScAddress(0, 1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("2"), pDoc->GetString(ScAddress(0, 2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(0, 3, 0)));
-
-    // This failed, if the "3" is visible.
-    CPPUNIT_ASSERT(pDoc->RowHidden(1, 0));
-    CPPUNIT_ASSERT(!pDoc->RowHidden(2, 0));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(0, 0, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("2"), pDoc->GetString(ScAddress(0, 1, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("3"), pDoc->GetString(ScAddress(0, 2, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("4"), pDoc->GetString(ScAddress(0, 3, 0)));
-
-    CPPUNIT_ASSERT(!pDoc->RowHidden(1, 0));
-    CPPUNIT_ASSERT(pDoc->RowHidden(2, 0));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf134675)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-    insertStringToCell("A1", u"A");
-
-    // Select column A
-    goToCell("A:A");
-
-    dispatchCommand(mxComponent, ".uno:Copy", {});
-
-    // Select column B to Z
-    goToCell("B:Z");
-
-    dispatchCommand(mxComponent, ".uno:Paste", {});
-
-    for (size_t i = 1; i < 24; ++i)
-    {
-        // Without the fix in place, this test would have failed here with
-        // - Expected: A
-        // - Actual  :
-        CPPUNIT_ASSERT_EQUAL(OUString("A"), pDoc->GetString(ScAddress(i, 0, 
0)));
-    }
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf116215)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-    insertStringToCell("A1", u"1");
-    insertStringToCell("A2", u"1");
-    insertStringToCell("B1", u"1");
-    insertStringToCell("B2", u"1");
-    goToCell("A1:C3");
-
-    executeAutoSum();
-
-    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(0, 2, 0)));
-    OUString aFormula = pDoc->GetFormula(0, 2, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:A2)"), aFormula);
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: 2
-    // - Actual  : 4
-    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(1, 2, 0)));
-    aFormula = pDoc->GetFormula(1, 2, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B1:B2)"), aFormula);
-
-    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(2, 0, 0)));
-    aFormula = pDoc->GetFormula(2, 0, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:B1)"), aFormula);
-
-    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(2, 1, 0)));
-    aFormula = pDoc->GetFormula(2, 1, 0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A2:B2)"), aFormula);
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf99913)
-{
-    createScDoc("tdf99913.xlsx");
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT(pDoc->RowFiltered(2, 0));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf126540_GridToggleModifiesTheDocument)
-{
-    createScDoc("tdf99913.xlsx");
-
-    // Toggling the grid of a sheet, must set the document modified state
-    ScDocShell* pDocSh = getScDocShell();
-    CPPUNIT_ASSERT(!pDocSh->IsModified());
-    dispatchCommand(mxComponent, ".uno:ToggleSheetGrid", {});
-    CPPUNIT_ASSERT(pDocSh->IsModified());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf118983)
-{
-    createScDoc("tdf118983.ods");
-    ScDocument* pDoc = getScDoc();
-
-    css::uno::Reference<css::sheet::XGlobalSheetSettings> xGlobalSheetSettings
-        = 
css::sheet::GlobalSheetSettings::create(::comphelper::getProcessComponentContext());
-    bool bOldValue = xGlobalSheetSettings->getExpandReferences();
-
-    xGlobalSheetSettings->setExpandReferences(true);
-
-    const ScRangeData* pRD = pDoc->GetRangeName()->findByUpperName("TEST");
-    CPPUNIT_ASSERT(pRD);
-    CPPUNIT_ASSERT_EQUAL(OUString("$Test.$A$3:$D$7"), pRD->GetSymbol());
-
-    //Select columns E to G
-    goToCell("E:G");
-
-    dispatchCommand(mxComponent, ".uno:InsertColumnsBefore", {});
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: $Test.$A$3:$D$7
-    // - Actual  : $Test.$A$3:$G$7
-    CPPUNIT_ASSERT_EQUAL(OUString("$Test.$A$3:$D$7"), pRD->GetSymbol());
-
-    xGlobalSheetSettings->setExpandReferences(bOldValue);
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf107952)
-{
-    createScDoc();
-    ScDocShell* pDocSh = getScDocShell();
-
-    insertStringToCell("B1", u"=SUM(A1:A2)");
-
-    goToCell("D10");
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: 1
-    // - Actual  : 3
-    // - Incorrect Column in position B1
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"B1");
-
-    goToCell("D10");
-
-    dispatchCommand(mxComponent, ".uno:Redo", {});
-
-    lcl_AssertCurrentCursorPosition(*pDocSh, u"B1");
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf150766)
-{
-    createScDoc("tdf150766.ods");
-    ScDocument* pDoc = getScDoc();
-
-    goToCell("A3:C6");
-
-    dispatchCommand(mxComponent, ".uno:SortDescending", {});
-
-    insertStringToCell("B3", u"10");
-
-    CPPUNIT_ASSERT_EQUAL(12.0, pDoc->GetValue(ScAddress(2, 2, 0)));
-    CPPUNIT_ASSERT_EQUAL(13.0, pDoc->GetValue(ScAddress(2, 3, 0)));
-    CPPUNIT_ASSERT_EQUAL(14.0, pDoc->GetValue(ScAddress(2, 4, 0)));
-    CPPUNIT_ASSERT_EQUAL(15.0, pDoc->GetValue(ScAddress(2, 5, 0)));
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: 16
-    // - Actual  : 7
-    CPPUNIT_ASSERT_EQUAL(16.0, pDoc->GetValue(ScAddress(2, 6, 0)));
-    CPPUNIT_ASSERT_EQUAL(17.0, pDoc->GetValue(ScAddress(2, 7, 0)));
-    CPPUNIT_ASSERT_EQUAL(18.0, pDoc->GetValue(ScAddress(2, 8, 0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf144022)
-{
-    createScDoc("tdf144022.ods");
-    ScDocument* pDoc = getScDoc();
-
-    goToCell("A5:B79");
-
-    dispatchCommand(mxComponent, ".uno:Copy", {});
-
-    goToCell("D5");
-
-    //Without the fix in place, this test would have crashed
-    dispatchCommand(mxComponent, ".uno:PasteTransposed", {});
-
-    for (size_t i = 3; i < 76; ++i)
-    {
-        OUString sExpected = "A" + OUString::number(i + 2);
-        CPPUNIT_ASSERT_EQUAL(sExpected, pDoc->GetString(ScAddress(i, 4, 0)));
-    }
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf99386)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    insertStringToCell("B1", u"This");
-    insertStringToCell("B2", u"=B1");
-
-    goToCell("A1:B1");
-
-    dispatchCommand(mxComponent, ".uno:ToggleMergeCells", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString("0"), pDoc->GetString(ScAddress(1, 1, 0)));
-
-    dispatchCommand(mxComponent, ".uno:Undo", {});
-
-    CPPUNIT_ASSERT_EQUAL(OUString("This"), pDoc->GetString(ScAddress(1, 0, 
0)));
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: This
-    // - Actual  : 0
-    CPPUNIT_ASSERT_EQUAL(OUString("This"), pDoc->GetString(ScAddress(1, 1, 
0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf149378)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    insertStringToCell("A1", u"=MINVERSE(A1:C3)");
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: {=MINVERSE(A1:C3)}
-    // - Actual  : =MINVERSE(A1:C3)
-    CPPUNIT_ASSERT_EQUAL(OUString("{=MINVERSE(A1:C3)}"), pDoc->GetFormula(0, 
0, 0));
-
-    insertStringToCell("B1", u"={1;2}");
-    CPPUNIT_ASSERT_EQUAL(OUString("{={1;2}}"), pDoc->GetFormula(1, 0, 0));
-
-    insertStringToCell("C1", u"={1;2}+3");
-    CPPUNIT_ASSERT_EQUAL(OUString("{={1;2}+3}"), pDoc->GetFormula(2, 0, 0));
-
-    insertStringToCell("D1", u"={1;2}+{3;4}");
-    CPPUNIT_ASSERT_EQUAL(OUString("{={1;2}+{3;4}}"), pDoc->GetFormula(3, 0, 
0));
-
-    insertStringToCell("E1", u"={1;2}+A1");
-    CPPUNIT_ASSERT_EQUAL(OUString("{={1;2}+A1}"), pDoc->GetFormula(4, 0, 0));
-
-    insertStringToCell("F1", u"={1;2}+A1:A2");
-    CPPUNIT_ASSERT_EQUAL(OUString("={1;2}+A1:A2"), pDoc->GetFormula(5, 0, 0));
-
-    insertStringToCell("G1", u"=SUM(MUNIT(3))");
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(MUNIT(3))"), pDoc->GetFormula(6, 0, 
0));
-
-    insertStringToCell("H1", u"=SUM({1;2})");
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM({1;2})"), pDoc->GetFormula(7, 0, 0));
-
-    insertStringToCell("I1", u"=ABS({-1;-2})");
-    CPPUNIT_ASSERT_EQUAL(OUString("{=ABS({-1;-2})}"), pDoc->GetFormula(8, 0, 
0));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf152014)
-{
-    createScDoc();
-
-    insertStringToCell("A1", u"=MATCH(1,A2,0)");
-    insertStringToCell("A2", u"1");
-
-    ScDocument* pDoc = getScDoc();
-    CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(0, 0, 0)));
-
-    goToCell("A1");
-
-    dispatchCommand(mxComponent, ".uno:Copy", {});
-
-    // Create a second document
-    mxComponent2 = loadFromDesktop("private:factory/scalc");
-
-    uno::Reference<frame::XFrames> xFrames = mxDesktop->getFrames();
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xFrames->getCount());
-
-    dispatchCommand(mxComponent2, ".uno:Paste", {});
-
-    ScModelObj* pModelObj2 = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent2);
-    CPPUNIT_ASSERT(pModelObj2);
-    ScDocument* pDoc2 = pModelObj2->GetDocument();
-
-    // Without the fix in place, this test would have failed with
-    // - Expected: #N/A
-    // - Actual  : 1
-    CPPUNIT_ASSERT_EQUAL(OUString("#N/A"), pDoc2->GetString(ScAddress(0, 0, 
0)));
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf126926)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    insertStringToCell("A1", u"1");
-    insertStringToCell("A2", u"2");
-    insertStringToCell("B1", u"3");
-    insertStringToCell("B2", u"4");
-
-    ScDBData* pDBData = new ScDBData("testDB", 0, 0, 0, 1, 1);
-    bool bInserted
-        = 
pDoc->GetDBCollection()->getNamedDBs().insert(std::unique_ptr<ScDBData>(pDBData));
-    CPPUNIT_ASSERT(bInserted);
-
-    goToCell("A1:B1");
-
-    dispatchCommand(mxComponent, ".uno:DeleteColumns", {});
-
-    ScDBCollection* pDBs = pDoc->GetDBCollection();
-    CPPUNIT_ASSERT(pDBs->empty());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testUnallocatedColumnsAttributes)
-{
-    createScDoc();
-    ScDocument* pDoc = getScDoc();
-
-    CPPUNIT_ASSERT_EQUAL(INITIALCOLCOUNT, pDoc->GetAllocatedColumnsCount(0));
-
-    // Except for first 1 cell make the entire first row bold.
-    assert(INITIALCOLCOUNT >= 1);
-    goToCell("B1:" + pDoc->MaxColAsString() + "1");
-    dispatchCommand(mxComponent, ".uno:Bold", {});
-
-    // That shouldn't need allocating more columns, just changing the default 
attribute.
-    CPPUNIT_ASSERT_EQUAL(INITIALCOLCOUNT, pDoc->GetAllocatedColumnsCount(0));
-    vcl::Font aFont;
-    pDoc->GetPattern(pDoc->MaxCol(), 0, 0)->GetFont(aFont, SC_AUTOCOL_RAW);
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, 
aFont.GetWeight());
-
-    goToCell("A2:CV2"); // first 100 cells in row 2
-    dispatchCommand(mxComponent, ".uno:Bold", {});
-    // These need to be explicitly allocated.
-    CPPUNIT_ASSERT_EQUAL(SCCOL(100), pDoc->GetAllocatedColumnsCount(0));
-    pDoc->GetPattern(99, 1, 0)->GetFont(aFont, SC_AUTOCOL_RAW);
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, 
aFont.GetWeight());
-    pDoc->GetPattern(100, 1, 0)->GetFont(aFont, SC_AUTOCOL_RAW);
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("font should not be bold", WEIGHT_NORMAL, 
aFont.GetWeight());
-
-    goToCell("CW3:" + pDoc->MaxColAsString() + "3"); // All but first 100 
cells in row 3.
-    dispatchCommand(mxComponent, ".uno:Bold", {});
-    // First 100 columns need to be allocated to not be bold, the rest should 
be handled
-    // by the default attribute.
-    CPPUNIT_ASSERT_EQUAL(SCCOL(100), pDoc->GetAllocatedColumnsCount(0));
-    pDoc->GetPattern(99, 2, 0)->GetFont(aFont, SC_AUTOCOL_RAW);
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("font should not be bold", WEIGHT_NORMAL, 
aFont.GetWeight());
-    pDoc->GetPattern(100, 2, 0)->GetFont(aFont, SC_AUTOCOL_RAW);
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, 
aFont.GetWeight());
-}
-
-CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testAutoSum)
-{
-    createScDoc("autosum.ods");
-    ScDocument* pDoc = getScDoc();
-
-    //Sum on range and Sum on Sum's
-    goToCell("B10");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(1, 9, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B8:B9)"), pDoc->GetFormula(1, 9, 0));
-
-    goToCell("B13");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(1, 12, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B11:B12)"), pDoc->GetFormula(1, 12, 
0));
-
-    goToCell("B14");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(4.0, pDoc->GetValue(ScAddress(1, 13, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B13:B13,B10:B10)"), 
pDoc->GetFormula(1, 13, 0));
-
-    goToCell("F8:F14");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(4.0, pDoc->GetValue(ScAddress(5, 13, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(F13:F13,F10:F10)"), 
pDoc->GetFormula(5, 13, 0));
-
-    //Sum on Row and Column
-    goToCell("E25");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(4, 24, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(E22:E24)"), pDoc->GetFormula(4, 24, 
0));
-
-    goToCell("E26");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(4, 25, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B26:D26)"), pDoc->GetFormula(4, 25, 
0));
-
-    goToCell("E27");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(4, 26, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B27:D27)"), pDoc->GetFormula(4, 26, 
0));
-
-    goToCell("E28");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(4, 27, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B28:D28)"), pDoc->GetFormula(4, 27, 
0));
-
-    goToCell("E29");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(9.0, pDoc->GetValue(ScAddress(4, 28, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(E26:E28)"), pDoc->GetFormula(4, 28, 
0));
-
-    goToCell("E30");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(12.0, pDoc->GetValue(ScAddress(4, 29, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(E29:E29,E25:E25)"), 
pDoc->GetFormula(4, 29, 0));
-
-    //Subtotals on Autosum
-    goToCell("C49");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(20.0, pDoc->GetValue(ScAddress(2, 48, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUBTOTAL(9,C38:C48)"), pDoc->GetFormula(2, 
48, 0));
-
-    //Autosum on column with selected empty cell for result
-    goToCell("B59:B64");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(1, 63, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B59:B63)"), pDoc->GetFormula(1, 63, 
0));
-
-    //Autosum on rows with selected empty cell for result
-    goToCell("B76:E80");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(30.0, pDoc->GetValue(ScAddress(4, 75, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B76:D76)"), pDoc->GetFormula(4, 75, 
0));
-    CPPUNIT_ASSERT_EQUAL(60.0, pDoc->GetValue(ScAddress(4, 76, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B77:D77)"), pDoc->GetFormula(4, 76, 
0));
-    CPPUNIT_ASSERT_EQUAL(90.0, pDoc->GetValue(ScAddress(4, 77, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B78:D78)"), pDoc->GetFormula(4, 77, 
0));
-    CPPUNIT_ASSERT_EQUAL(120.0, pDoc->GetValue(ScAddress(4, 78, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B79:D79)"), pDoc->GetFormula(4, 78, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(4, 79, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B80:D80)"), pDoc->GetFormula(4, 79, 
0));
-
-    //Subtotal on column with selected empty cell for result
-    goToCell("C92:C101");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(19.0, pDoc->GetValue(ScAddress(2, 100, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUBTOTAL(9,C92:C100)"), 
pDoc->GetFormula(2, 100, 0));
-
-    //Autosum on column without selected empty cell for result
-    goToCell("B109:B113");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(1, 113, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B109:B113)"), pDoc->GetFormula(1, 113, 
0));
-
-    //Subtotal on column without selected empty cell for result
-    goToCell("C142:C149");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(19.0, pDoc->GetValue(ScAddress(2, 150, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUBTOTAL(9,C142:C149)"), 
pDoc->GetFormula(2, 150, 0));
-
-    //Autosum on multiselected columns without selected empty cell for result
-    goToCell("B160:D164");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(1, 164, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B160:B164)"), pDoc->GetFormula(1, 164, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(2, 164, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(C160:C164)"), pDoc->GetFormula(2, 164, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(3, 164, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(D160:D164)"), pDoc->GetFormula(3, 164, 
0));
-
-    //Autosum on columns with formula results without selected empty cell for 
result
-    goToCell("B173:D177");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(2.54, std::floor(pDoc->GetValue(ScAddress(1, 177, 0)) 
* 100.0) / 100.0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B173:B177)"), pDoc->GetFormula(1, 177, 
0));
-    CPPUNIT_ASSERT_EQUAL(-4.91, std::floor(pDoc->GetValue(ScAddress(2, 177, 
0)) * 100.0) / 100.0);
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(C173:C177)"), pDoc->GetFormula(2, 177, 
0));
-    CPPUNIT_ASSERT_EQUAL(5500.0, pDoc->GetValue(ScAddress(3, 177, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(D173:D177)"), pDoc->GetFormula(3, 177, 
0));
-
-    //Autosum on column with filled cell under selected area
-    goToCell("B186:D190");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(1, 191, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B186:B190)"), pDoc->GetFormula(1, 191, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(2, 191, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(C186:C190)"), pDoc->GetFormula(2, 191, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(3, 191, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(D186:D190)"), pDoc->GetFormula(3, 191, 
0));
-
-    //Autosum on column and rows with empty cells selected for row and column
-    goToCell("B203:E208");
-    executeAutoSum();
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(1, 207, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B203:B207)"), pDoc->GetFormula(1, 207, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(2, 207, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(C203:C207)"), pDoc->GetFormula(2, 207, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(3, 207, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(D203:D207)"), pDoc->GetFormula(3, 207, 
0));
-    CPPUNIT_ASSERT_EQUAL(450.0, pDoc->GetValue(ScAddress(4, 207, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B208:D208)"), pDoc->GetFormula(4, 207, 
0));
-    CPPUNIT_ASSERT_EQUAL(30.0, pDoc->GetValue(ScAddress(4, 202, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B203:D203)"), pDoc->GetFormula(4, 202, 
0));
-    CPPUNIT_ASSERT_EQUAL(60.0, pDoc->GetValue(ScAddress(4, 203, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B204:D204)"), pDoc->GetFormula(4, 203, 
0));
-    CPPUNIT_ASSERT_EQUAL(90.0, pDoc->GetValue(ScAddress(4, 204, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B205:D205)"), pDoc->GetFormula(4, 204, 
0));
-    CPPUNIT_ASSERT_EQUAL(120.0, pDoc->GetValue(ScAddress(4, 205, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B206:D206)"), pDoc->GetFormula(4, 205, 
0));
-    CPPUNIT_ASSERT_EQUAL(150.0, pDoc->GetValue(ScAddress(4, 206, 0)));
-    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B207:D207)"), pDoc->GetFormula(4, 206, 
0));
-}
-
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/unit/uicalc/uicalc2.cxx b/sc/qa/unit/uicalc/uicalc2.cxx
new file mode 100644
index 000000000000..a09c9b8e20e9
--- /dev/null
+++ b/sc/qa/unit/uicalc/uicalc2.cxx
@@ -0,0 +1,1400 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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 "../helper/qahelper.hxx"
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <svx/svdpage.hxx>
+#include <vcl/keycodes.hxx>
+#include <vcl/scheduler.hxx>
+
+#include <comphelper/processfactory.hxx>
+#include <comphelper/propertysequence.hxx>
+#include <comphelper/servicehelper.hxx>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/sheet/GlobalSheetSettings.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <dbdata.hxx>
+#include <document.hxx>
+#include <docsh.hxx>
+#include <drwlayer.hxx>
+#include <inputopt.hxx>
+#include <postit.hxx>
+#include <rangeutl.hxx>
+#include <scmod.hxx>
+#include <tabvwsh.hxx>
+#include <viewdata.hxx>
+
+using namespace ::com::sun::star;
+
+class ScUiCalcTest2 : public ScModelTestBase
+{
+public:
+    ScUiCalcTest2();
+};
+
+ScUiCalcTest2::ScUiCalcTest2()
+    : ScModelTestBase("sc/qa/unit/uicalc/data")
+{
+}
+
+static void lcl_AssertCurrentCursorPosition(ScDocShell& rDocSh, 
std::u16string_view rStr)
+{
+    ScAddress aAddr;
+    sal_Int32 nOffset = 0;
+    ScRangeStringConverter::GetAddressFromString(aAddr, rStr, 
rDocSh.GetDocument(),
+                                                 
formula::FormulaGrammar::CONV_OOO, nOffset);
+    ScTabViewShell* pViewShell = rDocSh.GetBestViewShell(false);
+    CPPUNIT_ASSERT_EQUAL_MESSAGE(
+        OUString(OUString::Concat("Incorrect Column in position ") + 
rStr).toUtf8().getStr(),
+        aAddr.Col(), pViewShell->GetViewData().GetCurX());
+    CPPUNIT_ASSERT_EQUAL_MESSAGE(
+        OUString(OUString::Concat("Incorrect Row in position ") + 
rStr).toUtf8().getStr(),
+        aAddr.Row(), pViewShell->GetViewData().GetCurY());
+}
+
+static void lcl_SelectObjectByName(ScTabViewShell& rViewShell, 
std::u16string_view rObjName)
+{
+    bool bFound = rViewShell.SelectObject(rObjName);
+    CPPUNIT_ASSERT_MESSAGE(
+        OString(OUStringToOString(rObjName, RTL_TEXTENCODING_UTF8) + " not 
found.").getStr(),
+        bFound);
+
+    
CPPUNIT_ASSERT(rViewShell.GetViewData().GetScDrawView()->AreObjectsMarked());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf150499)
+{
+    createScDoc("tdf150499.xls");
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
+
+    uno::Sequence<beans::PropertyValue> aArgs(
+        comphelper::InitPropertySequence({ { "Index", uno::Any(sal_uInt16(0)) 
} }));
+
+    // Without the fix in place, this test would have crashed here
+    dispatchCommand(mxComponent, ".uno:Remove", aArgs);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(1), pDoc->GetTableCount());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf133326)
+{
+    createScDoc("tdf133326.ods");
+    ScDocument* pDoc = getScDoc();
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+
+    insertNewSheet(*pDoc);
+
+    OUString aFormula = pDoc->GetFormula(0, 0, 1);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    aFormula = pDoc->GetFormula(0, 0, 1);
+    CPPUNIT_ASSERT_EQUAL(OUString("=RAND()*1000000"), aFormula);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    aFormula = pDoc->GetFormula(0, 0, 1);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(1), pDoc->GetTableCount());
+
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
+    aFormula = pDoc->GetFormula(0, 0, 1);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    // Without the fix in place, it would have crashed here
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+
+    aFormula = pDoc->GetFormula(0, 0, 1);
+    CPPUNIT_ASSERT_EQUAL(OUString("=RAND()*1000000"), aFormula);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(2), pDoc->GetTableCount());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf126685)
+{
+    createScDoc("tdf126685.ods");
+
+    ScDocument* pDoc = getScDoc();
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {}); // test should crash 
here without the fix
+
+    CPPUNIT_ASSERT_EQUAL(
+        OUString("Control Height will change from 0.65 to 0.61 cm with 120dpi 
..."),
+        pDoc->GetString(ScAddress(3, 1, 1)));
+    dispatchCommand(mxComponent, ".uno:Cut", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(3, 1, 1)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf119793)
+{
+    createScDoc("tdf119793.ods");
+
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
+    uno::Reference<drawing::XDrawPage> 
xPage(pModelObj->getDrawPages()->getByIndex(0),
+                                             uno::UNO_QUERY_THROW);
+    uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), 
uno::UNO_QUERY_THROW);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4984), 
xShape->getPosition().X);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
+
+    // Move the shape to the right
+    lcl_SelectObjectByName(*getViewShell(), u"Shape 1");
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RIGHT);
+    Scheduler::ProcessEventsToIdle();
+
+    //position has changed
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5084), 
xShape->getPosition().X);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
+
+    // Type into the shape
+    typeString(u"x");
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_ESCAPE);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_ESCAPE);
+    Scheduler::ProcessEventsToIdle();
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5084), 
xShape->getPosition().X);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: 4984
+    // - Actual  : 5084
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4984), 
xShape->getPosition().X);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1381), 
xShape->getPosition().Y);
+
+    // tdf#141816: Without the fix in place, this test would have failed with
+    // - Expected:
+    // - Actual  : x
+    uno::Reference<text::XText> xText
+        = uno::Reference<text::XTextRange>(xShape, 
uno::UNO_QUERY_THROW)->getText();
+    CPPUNIT_ASSERT_EQUAL(OUString(""), xText->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf131455)
+{
+    // Note that tdf#131455 and tdf#126904 were actually incorrect,
+    // but keep the test with a fixed version of the document.
+    createScDoc("tdf131455-fixed.ods");
+    ScDocShell* pDocSh = getScDocShell();
+
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"A5");
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"B5");
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"E5");
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"F5");
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"I5");
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"J5");
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"M5");
+
+    //Cursor can't move forward to the right
+    for (size_t i = 0; i < 5; ++i)
+    {
+        dispatchCommand(mxComponent, ".uno:GoRight", {});
+        lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
+    }
+
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().GetTabNo());
+
+    dispatchCommand(mxComponent, ".uno:JumpToNextTable", {});
+
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().GetTabNo());
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"A4");
+
+    // Go to row 9
+    for (size_t i = 0; i < 6; ++i)
+    {
+        dispatchCommand(mxComponent, ".uno:GoDown", {});
+    }
+
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"A10");
+
+    dispatchCommand(mxComponent, ".uno:SelectRow", {});
+    dispatchCommand(mxComponent, ".uno:DeleteRows", {});
+
+    dispatchCommand(mxComponent, ".uno:JumpToPrevTable", {});
+
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().GetTabNo());
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
+
+    //Cursor can't move forward to the right
+    for (size_t i = 0; i < 5; ++i)
+    {
+        dispatchCommand(mxComponent, ".uno:GoRight", {});
+        lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf124818)
+{
+    createScDoc("tdf124818.xls");
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), 
getViewShell()->GetViewData().GetTabNo());
+
+    dispatchCommand(mxComponent, ".uno:JumpToPrevTable", {});
+
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().GetTabNo());
+
+    ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+    SdrPage* pPage = pDrawLayer->GetPage(1);
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+
+    dispatchCommand(mxComponent, ".uno:Cut", {});
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), pPage->GetObjCount());
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf124816)
+{
+    createScDoc("tdf124816.xlsx");
+    ScDocShell* pDocSh = getScDocShell();
+    ScDocument* pDoc = getScDoc();
+
+    // The actual result is completely unrelated to this test and behaviour of
+    // OFFSET() was changed as of tdf#85551 and here result of that test
+    // document is now Err:502 instead of 0.
+    const OUString aExpectedResult("Err:502");
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"D10");
+    CPPUNIT_ASSERT_EQUAL(aExpectedResult, pDoc->GetString(ScAddress(3, 9, 0)));
+
+    //Without the fix, it would crash
+    dispatchCommand(mxComponent, ".uno:InsertRowsBefore", {});
+    CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(3, 9, 0)));
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(aExpectedResult, pDoc->GetString(ScAddress(3, 9, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf124815)
+{
+    createScDoc("tdf124815.ods");
+
+    ScDocument* pDoc = getScDoc();
+    CPPUNIT_ASSERT_EQUAL(OUString("Rakennukset"), pDoc->GetString(ScAddress(2, 
0, 0)));
+
+    //Without the fix, it would crash
+    dispatchCommand(mxComponent, ".uno:InsertColumnsBefore", {});
+    CPPUNIT_ASSERT_EQUAL(OUString("Rakennukset"), pDoc->GetString(ScAddress(3, 
0, 0)));
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(OUString("Rakennukset"), pDoc->GetString(ScAddress(2, 
0, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf142010)
+{
+    createScDoc("tdf142010.xls");
+    ScDocument* pDoc = getScDoc();
+
+    goToCell("A1");
+
+    OUString aFormula = pDoc->GetFormula(5, 71, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=MOD(F$71+$C72,9)"), aFormula);
+    CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(5, 71, 0)));
+
+    dispatchCommand(mxComponent, ".uno:InsertColumnsBefore", {});
+
+    aFormula = pDoc->GetFormula(6, 71, 0);
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: =MOD(G$71+$D72,9)
+    // - Actual  : =MOD(G$71+$K72,9)
+    CPPUNIT_ASSERT_EQUAL(OUString("=MOD(G$71+$D72,9)"), aFormula);
+    CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(6, 71, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    aFormula = pDoc->GetFormula(5, 71, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=MOD(F$71+$C72,9)"), aFormula);
+    CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(5, 71, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf154061)
+{
+    createScDoc("simpleTable.xlsx");
+    ScDocument* pDoc = getScDoc();
+    CPPUNIT_ASSERT_EQUAL(OUString("Column2"), pDoc->GetString(ScAddress(1, 0, 
0)));
+
+    goToCell("B1");
+
+    // Without the fix in place, it would crash here due to an out of bounds 
array access
+    dispatchCommand(mxComponent, ".uno:InsertColumnsBefore", {});
+    CPPUNIT_ASSERT_EQUAL(OUString("Column2"), pDoc->GetString(ScAddress(2, 0, 
0)));
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(OUString("Column2"), pDoc->GetString(ScAddress(1, 0, 
0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf132431)
+{
+    createScDoc("tdf132431.ods");
+    ScDocument* pDoc = getScDoc();
+
+    OUString aFormula = pDoc->GetFormula(7, 219, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUMIFS($H$2:$H$198,B$2:B$198,G220)"), 
aFormula);
+    CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(7, 219, 0)));
+
+    // Without the fix in place, it would crash here with
+    // uncaught exception of type std::exception (or derived).
+    // - vector::_M_fill_insert
+    insertStringToCell("H220", u"=SUMIFS($H$2:$DB$198,B$2:B$198,G220)");
+
+    aFormula = pDoc->GetFormula(7, 219, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUMIFS($H$2:$DB$198,B$2:B$198,G220)"), 
aFormula);
+    CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(7, 219, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("Err:502"), pDoc->GetString(ScAddress(7, 
219, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf131073)
+{
+    createScDoc();
+    ScDocument* pDoc = getScDoc();
+
+    for (SCCOLROW nColRow = 0; nColRow < 3; nColRow++)
+    {
+        pDoc->SetString(ScAddress(0, nColRow, 0), "Hello World");
+        pDoc->SetRowHeight(0, nColRow, 1000 * (nColRow + 1));
+        pDoc->SetString(ScAddress(nColRow, 0, 0), "Hello World");
+        pDoc->SetColWidth(nColRow, 0, 1000 * (nColRow + 1));
+    }
+
+    // Check rows
+    pDoc->SetRowHidden(1, 1, 0, true);
+    goToCell("A1:A3");
+    dispatchCommand(
+        mxComponent, ".uno:SetOptimalRowHeight",
+        comphelper::InitPropertySequence({ { "aExtraHeight", 
uno::Any(sal_uInt16(0)) } }));
+
+    CPPUNIT_ASSERT(!pDoc->RowHidden(0, 0));
+    // tdf#131073: Without the fix in place, the second row would not be hidden
+    CPPUNIT_ASSERT(pDoc->RowHidden(1, 0));
+    CPPUNIT_ASSERT(!pDoc->RowHidden(2, 0));
+    const sal_uInt16 nStdRowHeight = pDoc->GetRowHeight(4, 0);
+    CPPUNIT_ASSERT_EQUAL(nStdRowHeight, pDoc->GetRowHeight(0, 0));
+    CPPUNIT_ASSERT_EQUAL(nStdRowHeight, pDoc->GetRowHeight(1, SCTAB(0), 
false));
+    CPPUNIT_ASSERT_EQUAL(nStdRowHeight, pDoc->GetRowHeight(2, 0));
+
+    // Check columns
+    pDoc->SetColHidden(1, 1, 0, true);
+    goToCell("A1:C1");
+    dispatchCommand(
+        mxComponent, ".uno:SetOptimalColumnWidth",
+        comphelper::InitPropertySequence({ { "aExtraWidth", 
uno::Any(sal_uInt16(0)) } }));
+
+    CPPUNIT_ASSERT(!pDoc->ColHidden(0, 0));
+    // tdf#131073: Without the fix in place, the second column would not be 
hidden
+    CPPUNIT_ASSERT(pDoc->ColHidden(1, 0));
+    CPPUNIT_ASSERT(!pDoc->ColHidden(2, 0));
+    const sal_uInt16 nStdColWidth = pDoc->GetColWidth(0, 0);
+    CPPUNIT_ASSERT_EQUAL(nStdColWidth, pDoc->GetColWidth(0, 0));
+    CPPUNIT_ASSERT_EQUAL(nStdColWidth, pDoc->GetColWidth(1, SCTAB(0), false));
+    CPPUNIT_ASSERT_EQUAL(nStdColWidth, pDoc->GetColWidth(2, 0));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf83901)
+{
+    createScDoc();
+    ScDocShell* pDocSh = getScDocShell();
+
+    insertStringToCell("A2", u"=ROW(A3)");
+    ScDocument* pDoc = getScDoc();
+    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(0, 1, 0)));
+
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"A3");
+    dispatchCommand(mxComponent, ".uno:SelectRow", {});
+    dispatchCommand(mxComponent, ".uno:InsertRowsBefore", {});
+
+    //Without the fix, it would be 3.0
+    CPPUNIT_ASSERT_EQUAL(4.0, pDoc->GetValue(ScAddress(0, 1, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(0, 1, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf124822)
+{
+    createScDoc("tdf124822.xls");
+
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_EQUAL(OUString("X"), pDoc->GetString(ScAddress(0, 0, 2)));
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+
+    dispatchCommand(mxComponent, ".uno:Cut", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(0, 0, 2)));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString("X"), pDoc->GetString(ScAddress(0, 0, 2)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf118189)
+{
+    createScDoc("tdf118189.xlsx");
+
+    ScDocument* pDoc = getScDoc();
+
+    // Select column A
+    goToCell("A:A");
+
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+
+    // Open a new document
+    createScDoc();
+    pDoc = getScDoc();
+
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    OUString aFormula = pDoc->GetFormula(0, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Cut", {});
+
+    aFormula = pDoc->GetFormula(0, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    // Without the fix in place, this test would have crashed here
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    aFormula = pDoc->GetFormula(0, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf118207)
+{
+    createScDoc("tdf118189.xlsx");
+
+    ScDocument* pDoc = getScDoc();
+
+    // Disable replace cell warning
+    ScModule* pMod = SC_MOD();
+    ScInputOptions aInputOption = pMod->GetInputOptions();
+    bool bOldStatus = aInputOption.GetReplaceCellsWarn();
+    aInputOption.SetReplaceCellsWarn(false);
+    pMod->SetInputOptions(aInputOption);
+
+    // Select column A
+    goToCell("A:A");
+
+    OUString aFormula = pDoc->GetFormula(0, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Cut", {});
+
+    aFormula = pDoc->GetFormula(0, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    // Select column B
+    goToCell("B:B");
+
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    aFormula = pDoc->GetFormula(1, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    aFormula = pDoc->GetFormula(1, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    aFormula = pDoc->GetFormula(1, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    aFormula = pDoc->GetFormula(1, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+    aFormula = pDoc->GetFormula(0, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    aFormula = pDoc->GetFormula(0, 77, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    // Restore previous status
+    aInputOption.SetReplaceCellsWarn(bOldStatus);
+    pMod->SetInputOptions(aInputOption);
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf148669)
+{
+    // Without the fix in place, this test would have failed with an assert
+    createScDoc("tdf148669.xlsx");
+
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_MESSAGE("There should be a note", 
pDoc->HasNote(ScAddress(701, 0, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf124778)
+{
+    createScDoc();
+    ScDocument* pDoc = getScDoc();
+
+    // Add a new comment
+    uno::Sequence<beans::PropertyValue> aArgs
+        = comphelper::InitPropertySequence({ { "Text", 
uno::Any(OUString("Comment")) } });
+    dispatchCommand(mxComponent, ".uno:InsertAnnotation", aArgs);
+
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
+
+    // Without the fix in place, this test would have crashed
+    dispatchCommand(mxComponent, ".uno:ShowAnnotations", {});
+
+    ScPostIt* pNote = pDoc->GetNote(ScAddress(0, 0, 0));
+    CPPUNIT_ASSERT(pNote);
+    CPPUNIT_ASSERT_EQUAL(true, pNote->IsCaptionShown());
+
+    dispatchCommand(mxComponent, ".uno:ShowAnnotations", {});
+
+    CPPUNIT_ASSERT_EQUAL(false, pNote->IsCaptionShown());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf138428)
+{
+    createScDoc();
+    ScDocShell* pDocSh = getScDocShell();
+
+    // Add a new comment
+    uno::Sequence<beans::PropertyValue> aArgs
+        = comphelper::InitPropertySequence({ { "Text", 
uno::Any(OUString("Comment")) } });
+    dispatchCommand(mxComponent, ".uno:InsertAnnotation", aArgs);
+
+    ScDocument* pDoc = getScDoc();
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"B1");
+
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on B1", 
pDoc->HasNote(ScAddress(1, 0, 0)));
+
+    // Without the fix in place, this test would have crashed here
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on A1", 
!pDoc->HasNote(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_MESSAGE("There shouldn't be a note on B1", 
!pDoc->HasNote(ScAddress(1, 0, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on B1", 
pDoc->HasNote(ScAddress(1, 0, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf136113)
+{
+    createScDoc("tdf136113.xlsx");
+    ScDocument* pDoc = getScDoc();
+
+    ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+    SdrPage* pPage = pDrawLayer->GetPage(0);
+    SdrObject* pObj = pPage->GetObj(0);
+
+    CPPUNIT_ASSERT_EQUAL(tools::Long(18142), pObj->GetSnapRect().Left());
+    CPPUNIT_ASSERT_EQUAL(tools::Long(1709), pObj->GetSnapRect().Top());
+
+    lcl_SelectObjectByName(*getViewShell(), u"Arrow");
+
+    // Move the shape up
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::UP);
+    pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::UP);
+    Scheduler::ProcessEventsToIdle();
+
+    CPPUNIT_ASSERT_EQUAL(tools::Long(18142), pObj->GetSnapRect().Left());
+    CPPUNIT_ASSERT_EQUAL(tools::Long(1609), pObj->GetSnapRect().Top());
+
+    // Without the fix in place, this test would have failed here
+    ScDocShell* pDocSh = getScDocShell();
+    CPPUNIT_ASSERT(pDocSh->IsModified());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf130614)
+{
+    createScDoc("tdf130614.ods");
+    ScDocument* pDoc = getScDoc();
+
+    lcl_SelectObjectByName(*getViewShell(), u"Object 1");
+
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+
+    // Open a new document
+    createScDoc();
+    pDoc = getScDoc();
+
+    // Without the fix in place, this test would have crashed here
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+    SdrPage* pPage = pDrawLayer->GetPage(0);
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf112735)
+{
+    createScDoc("tdf112735.ods");
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_EQUAL(OUString("(empty)"), pDoc->GetString(ScAddress(1, 0, 
0)));
+
+    goToCell("B3");
+
+    dispatchCommand(mxComponent, ".uno:RecalcPivotTable", {});
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: (empty)
+    // - Actual  :
+    CPPUNIT_ASSERT_EQUAL(OUString("(empty)"), pDoc->GetString(ScAddress(1, 0, 
0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf112884)
+{
+    createScDoc("tdf112884.ods");
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_EQUAL(OUString("0.5"), pDoc->GetString(ScAddress(6, 2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("0.666666666666667"), 
pDoc->GetString(ScAddress(6, 3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("0.833333333333333"), 
pDoc->GetString(ScAddress(6, 4, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("#DIV/0!"), pDoc->GetString(ScAddress(6, 5, 
0)));
+
+    goToCell("G3");
+
+    dispatchCommand(mxComponent, ".uno:RecalcPivotTable", {});
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: #DIV/0!
+    // - Actual  : 0.5
+    CPPUNIT_ASSERT_EQUAL(OUString("#DIV/0!"), pDoc->GetString(ScAddress(6, 2, 
0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("0.5"), pDoc->GetString(ScAddress(6, 3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("0.666666666666667"), 
pDoc->GetString(ScAddress(6, 4, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("0.833333333333333"), 
pDoc->GetString(ScAddress(6, 5, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf133342)
+{
+    createScDoc("tdf133342.ods");
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_EQUAL(OUString("12,35 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
+    //Add decimals
+    dispatchCommand(mxComponent, ".uno:NumberFormatIncDecimals", {});
+    //Space should preserved before percent sign
+    CPPUNIT_ASSERT_EQUAL(OUString("12,346 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
+
+    //Delete decimals
+    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
+    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
+    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
+    //Space should preserved before percent sign
+    CPPUNIT_ASSERT_EQUAL(OUString("12 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
+
+    dispatchCommand(mxComponent, ".uno:NumberFormatDecDecimals", {});
+    //Space should preserved before percent sign
+    CPPUNIT_ASSERT_EQUAL(OUString("12 %"), pDoc->GetString(ScAddress(0, 0, 
0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf71339)
+{
+    createScDoc();
+    ScDocument* pDoc = getScDoc();
+
+    insertStringToCell("A2", u"1");
+    insertStringToCell("A3", u"1");
+
+    goToCell("A1:A3");
+
+    executeAutoSum();
+
+    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(0, 3, 0)));
+
+    OUString aFormula = pDoc->GetFormula(0, 3, 0);
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: =SUM(A1:A3)
+    // - Actual  : =SUM(A2:A3)
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:A3)"), aFormula);
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf116421)
+{
+    createScDoc();
+    ScDocument* pDoc = getScDoc();
+
+    insertStringToCell("A1", u"1");
+    insertStringToCell("A2", u"1");
+    insertStringToCell("A3", u"1");
+
+    goToCell("A4");
+
+    executeAutoSum();
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: 3
+    // - Actual  : 0
+    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(0, 3, 0)));
+
+    OUString aFormula = pDoc->GetFormula(0, 3, 0);
+
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:A3)"), aFormula);
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf86305)
+{
+    createScDoc("tdf86305.ods");
+    ScDocument* pDoc = getScDoc();
+
+    OUString aFormula = pDoc->GetFormula(1, 6, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("{=IF(SUM(B2:B4) > 0, 
SUM(B2:B4*D2:D4/C2:C4), 0)}"), aFormula);
+    CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(1, 6, 0)));
+
+    insertStringToCell("B3", u"50");
+    CPPUNIT_ASSERT_EQUAL(50.0, pDoc->GetValue(ScAddress(1, 2, 0)));
+
+    aFormula = pDoc->GetFormula(1, 6, 0);
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: {=IF(SUM(B2:B4) > 0, SUM(B2:B4*D2:D4/C2:C4), 0)}
+    // - Actual  : {=IF(SUM(B2:B4) > 0, SUM(B2:B4*D2:D4/C2:C4), 0.175)}
+    CPPUNIT_ASSERT_EQUAL(OUString("{=IF(SUM(B2:B4) > 0, 
SUM(B2:B4*D2:D4/C2:C4), 0)}"), aFormula);
+    CPPUNIT_ASSERT_EQUAL(0.175, pDoc->GetValue(ScAddress(1, 6, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf81351)
+{
+    createScDoc("tdf81351.ods");
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
+
+    goToCell("A1:F5");
+
+    dispatchCommand(mxComponent, ".uno:SortAscending", {});
+    dispatchCommand(mxComponent, ".uno:GoDown", {});
+
+    // Without the fix in place, this test would have crashed
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
+
+    goToCell("A1:F5");
+
+    dispatchCommand(mxComponent, ".uno:SortDescending", {});
+    dispatchCommand(mxComponent, ".uno:GoDown", {});
+
+    // Without the fix in place, this test would have crashed
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
4, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
4, 0)));
+
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Undo"), pDoc->GetString(ScAddress(0, 
1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Save"), pDoc->GetString(ScAddress(0, 
2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Paste"), pDoc->GetString(ScAddress(0, 
3, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString(".uno:Bold"), pDoc->GetString(ScAddress(0, 
4, 0)));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf123202)
+{
+    createScDoc();
+    ScDocument* pDoc = getScDoc();
+
+    insertStringToCell(u"A1", u"1");
+    insertStringToCell(u"A2", u"2");
+    insertStringToCell(u"A3", u"3");
+    insertStringToCell(u"A4", u"4");
+
+    goToCell("A3");
+
+    dispatchCommand(mxComponent, ".uno:HideRow", {});
+
+    goToCell("A1:A4");
+
+    dispatchCommand(mxComponent, ".uno:SortDescending", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString("4"), pDoc->GetString(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("3"), pDoc->GetString(ScAddress(0, 1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("2"), pDoc->GetString(ScAddress(0, 2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(0, 3, 0)));
+
+    // This failed, if the "3" is visible.
+    CPPUNIT_ASSERT(pDoc->RowHidden(1, 0));
+    CPPUNIT_ASSERT(!pDoc->RowHidden(2, 0));
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+
+    CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(0, 0, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("2"), pDoc->GetString(ScAddress(0, 1, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("3"), pDoc->GetString(ScAddress(0, 2, 0)));
+    CPPUNIT_ASSERT_EQUAL(OUString("4"), pDoc->GetString(ScAddress(0, 3, 0)));
+
+    CPPUNIT_ASSERT(!pDoc->RowHidden(1, 0));
+    CPPUNIT_ASSERT(pDoc->RowHidden(2, 0));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf134675)
+{
+    createScDoc();
+    ScDocument* pDoc = getScDoc();
+    insertStringToCell("A1", u"A");
+
+    // Select column A
+    goToCell("A:A");
+
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+
+    // Select column B to Z
+    goToCell("B:Z");
+
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    for (size_t i = 1; i < 24; ++i)
+    {
+        // Without the fix in place, this test would have failed here with
+        // - Expected: A
+        // - Actual  :
+        CPPUNIT_ASSERT_EQUAL(OUString("A"), pDoc->GetString(ScAddress(i, 0, 
0)));
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf116215)
+{
+    createScDoc();
+    ScDocument* pDoc = getScDoc();
+    insertStringToCell("A1", u"1");
+    insertStringToCell("A2", u"1");
+    insertStringToCell("B1", u"1");
+    insertStringToCell("B2", u"1");
+    goToCell("A1:C3");
+
+    executeAutoSum();
+
+    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(0, 2, 0)));
+    OUString aFormula = pDoc->GetFormula(0, 2, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:A2)"), aFormula);
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: 2
+    // - Actual  : 4
+    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(1, 2, 0)));
+    aFormula = pDoc->GetFormula(1, 2, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B1:B2)"), aFormula);
+
+    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(2, 0, 0)));
+    aFormula = pDoc->GetFormula(2, 0, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A1:B1)"), aFormula);
+
+    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(2, 1, 0)));
+    aFormula = pDoc->GetFormula(2, 1, 0);
+    CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A2:B2)"), aFormula);
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf99913)
+{
+    createScDoc("tdf99913.xlsx");
+    ScDocument* pDoc = getScDoc();
+
+    CPPUNIT_ASSERT(pDoc->RowFiltered(2, 0));
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, 
testTdf126540_GridToggleModifiesTheDocument)
+{
+    createScDoc("tdf99913.xlsx");
+
+    // Toggling the grid of a sheet, must set the document modified state
+    ScDocShell* pDocSh = getScDocShell();
+    CPPUNIT_ASSERT(!pDocSh->IsModified());
+    dispatchCommand(mxComponent, ".uno:ToggleSheetGrid", {});
+    CPPUNIT_ASSERT(pDocSh->IsModified());
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf118983)
+{
+    createScDoc("tdf118983.ods");
+    ScDocument* pDoc = getScDoc();
+
+    css::uno::Reference<css::sheet::XGlobalSheetSettings> xGlobalSheetSettings
+        = 
css::sheet::GlobalSheetSettings::create(::comphelper::getProcessComponentContext());
+    bool bOldValue = xGlobalSheetSettings->getExpandReferences();
+
+    xGlobalSheetSettings->setExpandReferences(true);
+
+    const ScRangeData* pRD = pDoc->GetRangeName()->findByUpperName("TEST");
+    CPPUNIT_ASSERT(pRD);
+    CPPUNIT_ASSERT_EQUAL(OUString("$Test.$A$3:$D$7"), pRD->GetSymbol());
+
+    //Select columns E to G
+    goToCell("E:G");
+

... etc. - the rest is truncated

Reply via email to