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

New commits:
commit b10417eb1e5a4a6959e7fc1cdd9819e5b09d39a4
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Fri May 5 12:38:40 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri May 5 13:47:52 2023 +0200

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

diff --git a/sw/qa/extras/uiwriter/data/tdf151974.odt 
b/sw/qa/extras/uiwriter/data/tdf151974.odt
new file mode 100644
index 000000000000..b3f4a76e46a9
Binary files /dev/null and b/sw/qa/extras/uiwriter/data/tdf151974.odt differ
diff --git a/sw/qa/extras/uiwriter/uiwriter3.cxx 
b/sw/qa/extras/uiwriter/uiwriter3.cxx
index 4b515444e0d3..9580cd93c67f 100644
--- a/sw/qa/extras/uiwriter/uiwriter3.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter3.cxx
@@ -39,6 +39,51 @@ public:
     }
 };
 
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf151974)
+{
+    createSwDoc("tdf151974.odt");
+
+    CPPUNIT_ASSERT_EQUAL(int(8), getParagraphs());
+
+    auto pLayout = parseLayoutDump();
+    for (size_t i = 1; i < 9; ++i)
+    {
+        OString sPath("/root/page[1]/body/txt[" + OString::number(i)
+                      + "]/SwParaPortion/SwLineLayout");
+        assertXPathChildren(pLayout, sPath, 1);
+    }
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+    dispatchCommand(mxComponent, ".uno:GoDown", {});
+
+    SwXTextDocument* pTextDoc = 
dynamic_cast<SwXTextDocument*>(mxComponent.get());
+    pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RETURN);
+    Scheduler::ProcessEventsToIdle();
+
+    // Paste special as RTF
+    uno::Sequence<beans::PropertyValue> aPropertyValues = 
comphelper::InitPropertySequence(
+        { { "SelectedFormat", 
uno::Any(static_cast<sal_uInt32>(SotClipboardFormatId::RTF)) } });
+
+    dispatchCommand(mxComponent, ".uno:ClipboardFormatItems", aPropertyValues);
+
+    CPPUNIT_ASSERT_EQUAL(int(16), getParagraphs());
+
+    dumpLayout(mxComponent);
+    pLayout = parseLayoutDump();
+    for (size_t i = 1; i < 16; ++i)
+    {
+        OString sPath("/root/page[1]/body/txt[" + OString::number(i)
+                      + "]/SwParaPortion/SwLineLayout");
+
+        // Without the fix in place, this test would have failed with
+        // - Expected: 1
+        // - Actual  : 2
+        // - In <>, XPath 
'/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout' number of child-nodes is 
incorrect
+        assertXPathChildren(pLayout, sPath, 1);
+    }
+}
+
 CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf145731)
 {
     createSwDoc("tdf145731.odt");

Reply via email to