[Libreoffice-commits] core.git: sw/qa

Xisco Fauli (via logerrit) logerrit at kemper.freedesktop.org
Mon Mar 9 12:50:38 UTC 2020


 sw/qa/extras/uiwriter/uiwriter3.cxx     |   76 ++++++++++++++++++++++++++++++
 sw/qa/uitest/writer_tests6/tdf107975.py |   81 --------------------------------
 2 files changed, 76 insertions(+), 81 deletions(-)

New commits:
commit 2c5655d72401e6b6e917ece381e879b30680d20f
Author:     Xisco Fauli <xiscofauli at libreoffice.org>
AuthorDate: Mon Mar 9 11:13:32 2020 +0100
Commit:     Xisco Faulí <xiscofauli at libreoffice.org>
CommitDate: Mon Mar 9 13:50:05 2020 +0100

    tdf#107975: move UItest to CppunitTest
    
    Change-Id: I2616f651f13306dd78732937310f204789b470fd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90213
    Tested-by: Jenkins
    Reviewed-by: Xisco Faulí <xiscofauli at libreoffice.org>

diff --git a/sw/qa/uitest/writer_tests/data/tdf107975.odt b/sw/qa/extras/uiwriter/data3/tdf107975.odt
similarity index 100%
rename from sw/qa/uitest/writer_tests/data/tdf107975.odt
rename to sw/qa/extras/uiwriter/data3/tdf107975.odt
diff --git a/sw/qa/extras/uiwriter/uiwriter3.cxx b/sw/qa/extras/uiwriter/uiwriter3.cxx
index d9450881c47f..2a62ac2e9928 100644
--- a/sw/qa/extras/uiwriter/uiwriter3.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter3.cxx
@@ -10,6 +10,7 @@
 #include <swmodeltestbase.hxx>
 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
 #include <vcl/scheduler.hxx>
+#include <com/sun/star/text/TextContentAnchorType.hpp>
 
 namespace
 {
@@ -204,6 +205,81 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf126340)
     CPPUNIT_ASSERT_EQUAL(OUString("foo"), getParagraph(1)->getString());
 }
 
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf107975)
+{
+    // This test also covers tdf#117185 tdf#110442
+
+    load(DATA_DIRECTORY, "tdf107975.odt");
+
+    SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+    CPPUNIT_ASSERT(pTextDoc);
+
+    uno::Reference<text::XTextGraphicObjectsSupplier> xTextGraphicObjectsSupplier(mxComponent,
+                                                                                  uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xIndexAccess(
+        xTextGraphicObjectsSupplier->getGraphicObjects(), uno::UNO_QUERY);
+
+    uno::Reference<drawing::XShape> xShape(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+
+    CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER,
+                         getProperty<text::TextContentAnchorType>(xShape, "AnchorType"));
+
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+
+    //Position the mouse cursor (caret) after "ABC" below the blue image
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    // without the fix, it crashes
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+    CPPUNIT_ASSERT_EQUAL(OUString("ABC"), getParagraph(1)->getString());
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+    //try again with anchor at start of doc which is another special case
+    xShape.set(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+    uno::Reference<text::XTextContent> xShapeContent(xShape, uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> const xStart = pTextDoc->getText()->getStart();
+    xShapeContent->attach(xStart);
+
+    CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER,
+                         getProperty<text::TextContentAnchorType>(xShape, "AnchorType"));
+
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+    dispatchCommand(mxComponent, ".uno:SelectAll", {});
+    dispatchCommand(mxComponent, ".uno:Copy", {});
+
+    //Position the mouse cursor (caret) after "ABC" below the blue image
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+    dispatchCommand(mxComponent, ".uno:Paste", {});
+
+    // without the fix, it crashes
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+    CPPUNIT_ASSERT_EQUAL(OUString("ABC"), getParagraph(1)->getString());
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Redo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+}
+
 CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf130680)
 {
     load(DATA_DIRECTORY, "tdf130680.odt");
diff --git a/sw/qa/uitest/writer_tests6/tdf107975.py b/sw/qa/uitest/writer_tests6/tdf107975.py
deleted file mode 100644
index 9dea24dd57d3..000000000000
--- a/sw/qa/uitest/writer_tests6/tdf107975.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
-#
-# 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/.
-#
-from uitest.framework import UITestCase
-from uitest.uihelper.common import get_state_as_dict
-from uitest.uihelper.common import select_pos
-from uitest.uihelper.calc import enter_text_to_cell
-from libreoffice.calc.document import get_cell_by_position
-from libreoffice.uno.propertyvalue import mkPropertyValues
-from uitest.uihelper.common import get_state_as_dict, type_text
-from uitest.debug import sleep
-import org.libreoffice.unotest
-import pathlib
-
-def get_url_for_data_file(file_name):
-    return pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri()
-
-#Bug 107975 - CRASH: Crash after undo operation (BigPtrArray::Index2Block(unsigned long)
-
-class tdf107975(UITestCase):
-   def test_tdf107975_crash_after_undo(self):
-        writer_doc = self.ui_test.load_file(get_url_for_data_file("tdf107975.odt"))
-        document = self.ui_test.get_component()
-        xWriterDoc = self.xUITest.getTopFocusWindow()
-        xWriterEdit = xWriterDoc.getChild("writer_edit")
-
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 1)
-
-        #Press CTRL+A and + CTRL+C
-        self.xUITest.executeCommand(".uno:SelectAll")
-        self.xUITest.executeCommand(".uno:Copy")
-        #Position the mouse cursor (caret) after "ABC" below the blue image
-        xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RIGHT"}))
-        #Paste CTRL+V
-        self.xUITest.executeCommand(".uno:Paste")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 2)
-        #Undo paste CTRL+Z -> Crash
-        self.xUITest.executeCommand(".uno:Undo")
-        self.assertEqual(document.Text.String[0:3], "ABC")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 1)
-        self.xUITest.executeCommand(".uno:Redo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 2)
-        self.xUITest.executeCommand(".uno:Undo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 1)
-        self.xUITest.executeCommand(".uno:Redo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 2)
-        self.xUITest.executeCommand(".uno:Undo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 1)
-
-        # try again with anchor at start of doc which is another special case
-        xShape = writer_doc.getGraphicObjects()[0]
-        xStart = writer_doc.getText().getStart()
-        xShape.attach(xStart)
-
-        #Press CTRL+A and + CTRL+C
-        self.xUITest.executeCommand(".uno:SelectAll")
-        self.xUITest.executeCommand(".uno:Copy")
-        #Position the mouse cursor (caret) after "ABC" below the blue image
-        xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RIGHT"}))
-        #Paste CTRL+V
-        self.xUITest.executeCommand(".uno:Paste")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 2)
-        #Undo paste CTRL+Z -> Crash
-        self.xUITest.executeCommand(".uno:Undo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 1)
-        self.assertEqual(document.Text.String[0:3], "ABC")
-        self.xUITest.executeCommand(".uno:Redo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 2)
-        self.xUITest.executeCommand(".uno:Undo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 1)
-        self.xUITest.executeCommand(".uno:Redo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 2)
-        self.xUITest.executeCommand(".uno:Undo")
-        self.assertEqual(writer_doc.getGraphicObjects().getCount(), 1)
-
-        self.ui_test.close_doc()
-
-# vim: set shiftwidth=4 softtabstop=4 expandtab:


More information about the Libreoffice-commits mailing list