diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2020-03-09 11:13:32 +0100 |
---|---|---|
committer | Xisco Faulí <xiscofauli@libreoffice.org> | 2020-03-09 13:50:05 +0100 |
commit | 2c5655d72401e6b6e917ece381e879b30680d20f (patch) | |
tree | 028b73acc646b2d65932a999194dba684c95d80c /sw | |
parent | 5ab0f79748cad1069cc0d0c9cd4b57ccb1e14408 (diff) |
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@libreoffice.org>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/qa/extras/uiwriter/data3/tdf107975.odt (renamed from sw/qa/uitest/writer_tests/data/tdf107975.odt) | bin | 10312 -> 10312 bytes | |||
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter3.cxx | 76 | ||||
-rw-r--r-- | sw/qa/uitest/writer_tests6/tdf107975.py | 81 |
3 files changed, 76 insertions, 81 deletions
diff --git a/sw/qa/uitest/writer_tests/data/tdf107975.odt b/sw/qa/extras/uiwriter/data3/tdf107975.odt Binary files differindex afcab1814b58..afcab1814b58 100644 --- a/sw/qa/uitest/writer_tests/data/tdf107975.odt +++ b/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: |