sc/qa/unit/uicalc/data/tdf146795.ods |binary sc/qa/unit/uicalc/uicalc.cxx | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+)
New commits: commit 9f0d27c973323f522a4ca2bce557e1c095d32f77 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Fri Feb 4 14:38:30 2022 +0100 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Fri Feb 4 18:16:38 2022 +0100 tdf#146795: sc_uicalc: Add unittest Change-Id: I37accef701ad1240572839170258b9f405409abd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129488 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sc/qa/unit/uicalc/data/tdf146795.ods b/sc/qa/unit/uicalc/data/tdf146795.ods new file mode 100644 index 000000000000..9c402b058345 Binary files /dev/null and b/sc/qa/unit/uicalc/data/tdf146795.ods differ diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx index 876a871ae965..b058ab29156e 100644 --- a/sc/qa/unit/uicalc/uicalc.cxx +++ b/sc/qa/unit/uicalc/uicalc.cxx @@ -262,6 +262,52 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf119155) pDoc->GetString(ScAddress(2, 13, 0))); } +CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf146795) +{ + ScModelObj* pModelObj = createDoc("tdf146795.ods"); + ScDocument* pDoc = pModelObj->GetDocument(); + CPPUNIT_ASSERT(pDoc); + + // Disable replace cell warning + ScModule* pMod = SC_MOD(); + ScInputOptions aInputOption = pMod->GetInputOptions(); + bool bOldStatus = aInputOption.GetReplaceCellsWarn(); + aInputOption.SetReplaceCellsWarn(false); + pMod->SetInputOptions(aInputOption); + + goToCell("B2"); + + dispatchCommand(mxComponent, ".uno:Copy", {}); + Scheduler::ProcessEventsToIdle(); + + // Move to B3 + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN); + Scheduler::ProcessEventsToIdle(); + + // Select the three following cells + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_SHIFT | KEY_DOWN); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_SHIFT | KEY_DOWN); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_SHIFT | KEY_DOWN); + Scheduler::ProcessEventsToIdle(); + + // Without the fix in place, this test would have crashed here + dispatchCommand(mxComponent, ".uno:Paste", {}); + Scheduler::ProcessEventsToIdle(); + + CPPUNIT_ASSERT_EQUAL(OUString("a"), pDoc->GetString(ScAddress(1, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("a"), pDoc->GetString(ScAddress(1, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("a"), pDoc->GetString(ScAddress(1, 3, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("44"), pDoc->GetString(ScAddress(1, 4, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("44"), pDoc->GetString(ScAddress(1, 5, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("a"), pDoc->GetString(ScAddress(1, 6, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("a"), pDoc->GetString(ScAddress(1, 7, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("44"), pDoc->GetString(ScAddress(1, 8, 0))); + + // Restore previous status + aInputOption.SetReplaceCellsWarn(bOldStatus); + pMod->SetInputOptions(aInputOption); +} + CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf138432) { ScModelObj* pModelObj = createDoc("tdf138432.ods");