sw/qa/extras/uiwriter/data/tdf121546.odt |binary
 sw/qa/extras/uiwriter/uiwriter3.cxx      |   47 +++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+)

New commits:
commit 653c5d2ca1cc777d3556348b65ded0eaae95a414
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Fri Nov 19 17:51:49 2021 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Sat Nov 20 12:13:13 2021 +0100

    tdf#121546: sw_uiwriter3: Add unittest
    
    Change-Id: I10d1d9a06c04e810b90da9184d5a52f278015fee
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125566
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sw/qa/extras/uiwriter/data/tdf121546.odt 
b/sw/qa/extras/uiwriter/data/tdf121546.odt
new file mode 100644
index 000000000000..6b8b78f69ee3
Binary files /dev/null and b/sw/qa/extras/uiwriter/data/tdf121546.odt differ
diff --git a/sw/qa/extras/uiwriter/uiwriter3.cxx 
b/sw/qa/extras/uiwriter/uiwriter3.cxx
index c86fb182c07e..72d3bfeb45c4 100644
--- a/sw/qa/extras/uiwriter/uiwriter3.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter3.cxx
@@ -2137,6 +2137,53 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, 
TestTextBoxCrashAfterLineDel)
     xCursor->setString(OUString());
 }
 
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf121546)
+{
+    createSwDoc(DATA_DIRECTORY, "tdf121546.odt");
+
+    CPPUNIT_ASSERT_EQUAL(OUString("xxxxxxxxxxxxxxxxxxxx"), 
getParagraph(2)->getString());
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+    Scheduler::ProcessEventsToIdle();
+
+    dispatchCommand(mxComponent, ".uno:Cut", {});
+    Scheduler::ProcessEventsToIdle();
+
+    CPPUNIT_ASSERT_EQUAL(1, getParagraphs());
+
+    // Create a new document
+    createSwDoc();
+
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+    Scheduler::ProcessEventsToIdle();
+
+    CPPUNIT_ASSERT_EQUAL(OUString("xxxxxxxxxxxxxxxxxxxx"), 
getParagraph(2)->getString());
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+    Scheduler::ProcessEventsToIdle();
+
+    dispatchCommand(mxComponent, ".uno:Cut", {});
+    Scheduler::ProcessEventsToIdle();
+
+    CPPUNIT_ASSERT_EQUAL(1, getParagraphs());
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    Scheduler::ProcessEventsToIdle();
+
+    CPPUNIT_ASSERT_EQUAL(OUString("xxxxxxxxxxxxxxxxxxxx"), 
getParagraph(2)->getString());
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    Scheduler::ProcessEventsToIdle();
+
+    SwXTextDocument* pTextDoc = 
dynamic_cast<SwXTextDocument*>(mxComponent.get());
+
+    // Without the fix in place, this test would have crashed here
+    pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RETURN);
+    Scheduler::ProcessEventsToIdle();
+
+    CPPUNIT_ASSERT_EQUAL(2, getParagraphs());
+}
+
 CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf134626)
 {
     SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "tdf134626.odt");

Reply via email to