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>
This commit is contained in:
parent
5ab0f79748
commit
2c5655d724
3 changed files with 76 additions and 81 deletions
|
@ -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");
|
||||
|
|
|
@ -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:
|
Loading…
Reference in a new issue