diff options
author | Dennis Francis <dennisfrancis.in@gmail.com> | 2021-07-02 19:10:31 +0530 |
---|---|---|
committer | Dennis Francis <dennis.francis@collabora.com> | 2021-07-28 15:53:52 +0200 |
commit | 360791be914f8480c76a825f0a2b75d1b66a2f3d (patch) | |
tree | d6f82fce1b290b201f8f322d42228f39051cc94d /sc | |
parent | 57a282ad7bb0c8695142c34d6f5b7e0094933d59 (diff) |
lok: sc: unit test for non existent tab view data fix
Conflicts:
sc/qa/unit/tiledrendering/tiledrendering.cxx
Change-Id: I7c0ea95118448a49288ff70c8e7bcddc379df5ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119603
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/tiledrendering/tiledrendering.cxx | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx index 02d261919b0a..ac186d0e5f5e 100644 --- a/sc/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx @@ -123,6 +123,7 @@ public: void testMoveShapeHandle(); void testEditCursorBounds(); void testTextSelectionBounds(); + void testSheetViewDataCrash(); CPPUNIT_TEST_SUITE(ScTiledRenderingTest); CPPUNIT_TEST(testRowColumnHeaders); @@ -176,6 +177,7 @@ public: CPPUNIT_TEST(testMoveShapeHandle); CPPUNIT_TEST(testEditCursorBounds); CPPUNIT_TEST(testTextSelectionBounds); + CPPUNIT_TEST(testSheetViewDataCrash); CPPUNIT_TEST_SUITE_END(); private: @@ -2833,6 +2835,47 @@ void ScTiledRenderingTest::testTextSelectionBounds() SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr); } +void ScTiledRenderingTest::testSheetViewDataCrash() +{ + comphelper::LibreOfficeKit::setActive(); + + ScModelObj* pModelObj = createDoc("empty.ods"); + + // view #1 + int nView1 = SfxLokHelper::getView(); + SfxLokHelper::setView(nView1); + + // Imitate online while creating a new sheet on empty.ods. + uno::Sequence<beans::PropertyValue> aArgs( + comphelper::InitPropertySequence({ + { "Name", uno::Any(OUString("NewSheet")) }, + { "Index", uno::Any(sal_Int32(2)) } + })); + comphelper::dispatchCommand(".uno:Insert", aArgs); + Scheduler::ProcessEventsToIdle(); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::PAGEDOWN | KEY_MOD1); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::PAGEDOWN | KEY_MOD1); + Scheduler::ProcessEventsToIdle(); + ScTabViewShell* pView1 = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current()); + CPPUNIT_ASSERT(pView1); + + // view #2 + SfxLokHelper::createView(); + ScTabViewShell* pView2 = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current()); + CPPUNIT_ASSERT(pView2); + Scheduler::ProcessEventsToIdle(); + + SfxLokHelper::setView(nView1); + // Delete a range. + pView1->SetCursor(1, 1); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::DOWN | KEY_SHIFT); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::DOWN | KEY_SHIFT); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::DELETE); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::DELETE); + // It will crash at this point without the fix. + Scheduler::ProcessEventsToIdle(); +} + } CPPUNIT_TEST_SUITE_REGISTRATION(ScTiledRenderingTest); |