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:
Xisco Fauli 2020-03-09 11:13:32 +01:00 committed by Xisco Faulí
parent 5ab0f79748
commit 2c5655d724
3 changed files with 76 additions and 81 deletions

View file

@ -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");

View file

@ -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: