tdf#140731: sw: move UItest to CppUnittest

Change-Id: Ib72e03d2ca089ee86fa6d9dd4ae7d555be56ff4b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128710
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/sw/qa/extras/uiwriter/uiwriter3.cxx b/sw/qa/extras/uiwriter/uiwriter3.cxx
index 19945bf..8ad4a66 100644
--- a/sw/qa/extras/uiwriter/uiwriter3.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter3.cxx
@@ -1995,6 +1995,78 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf145584)
    CPPUNIT_ASSERT_EQUAL(OUString("World"), sText);
}

CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf140731)
{
    SwDoc* const pDoc = createSwDoc();
    SwWrtShell* const pWrtSh = pDoc->GetDocShell()->GetWrtShell();
    CPPUNIT_ASSERT(pWrtSh);

    pWrtSh->Insert("Lorem");

    SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());

    pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_F3);
    Scheduler::ProcessEventsToIdle();

    // generating a big text with ~60k words and several paragraphs
    for (sal_Int32 i = 0; i < 8; ++i)
    {
        dispatchCommand(mxComponent, ".uno:SelectAll", {});
        Scheduler::ProcessEventsToIdle();

        dispatchCommand(mxComponent, ".uno:Copy", {});
        Scheduler::ProcessEventsToIdle();

        dispatchCommand(mxComponent, ".uno:Paste", {});
        Scheduler::ProcessEventsToIdle();

        dispatchCommand(mxComponent, ".uno:Paste", {});
        Scheduler::ProcessEventsToIdle();
    }

    dispatchCommand(mxComponent, ".uno:GoToStartOfDoc", {});
    Scheduler::ProcessEventsToIdle();

    // Format->Text operations on small selections (which would generate <~500 redlines)
    // changetracking still working
    dispatchCommand(mxComponent, ".uno:TrackChanges", {});
    Scheduler::ProcessEventsToIdle();

    SwCursorShell* pShell(pDoc->GetEditShell());

    pShell->SelectText(1, 500);

    dispatchCommand(mxComponent, ".uno:ChangeCaseToTitleCase", {});
    Scheduler::ProcessEventsToIdle();

    SwEditShell* const pEditShell(pDoc->GetEditShell());
    CPPUNIT_ASSERT_EQUAL(static_cast<SwRedlineTable::size_type>(118),
                         pEditShell->GetRedlineCount());

    //Removing all the redlines.
    dispatchCommand(mxComponent, ".uno:RejectAllTrackedChanges", {});
    Scheduler::ProcessEventsToIdle();

    CPPUNIT_ASSERT_EQUAL(static_cast<SwRedlineTable::size_type>(0), pEditShell->GetRedlineCount());

    dispatchCommand(mxComponent, ".uno:SelectAll", {});
    Scheduler::ProcessEventsToIdle();

    dispatchCommand(mxComponent, ".uno:ChangeCaseToTitleCase", {});
    Scheduler::ProcessEventsToIdle();

    // Without the fix in place, on big selections writer would freeze. Now it ignores change tracking.
    CPPUNIT_ASSERT_EQUAL(static_cast<SwRedlineTable::size_type>(0), pEditShell->GetRedlineCount());

    // The patch has no effects on the Format->Text operations
    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Lorem Ipsum Dolor Sit Amet"));

    dispatchCommand(mxComponent, ".uno:ChangeCaseToUpper", {});
    Scheduler::ProcessEventsToIdle();

    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("LOREM IPSUM DOLOR SIT AMET"));
}

CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf116315)
{
    SwDoc* const pDoc = createSwDoc();
diff --git a/sw/qa/uitest/writer_tests7/tdf140731.py b/sw/qa/uitest/writer_tests7/tdf140731.py
deleted file mode 100644
index 74d479b..0000000
--- a/sw/qa/uitest/writer_tests7/tdf140731.py
+++ /dev/null
@@ -1,53 +0,0 @@
# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
#
# This file is part of the LibreOffice project.
#
# 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, get_url_for_data_file
from libreoffice.uno.propertyvalue import mkPropertyValues
from uitest.uihelper.common import type_text

class tdf140731(UITestCase):
    def test_tdf140731(self):
        with self.ui_test.create_doc_in_start_center("writer") as document:
            xWriterDoc = self.xUITest.getTopFocusWindow()
            xWriterEdit = xWriterDoc.getChild("writer_edit")
            type_text(xWriterEdit, 'Lorem')
            xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE":"F3"}))
            xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE":"RETURN"}))

            #generating a big text with ~60k words and several paragraphs
            for i in range(0,8):
                self.xUITest.executeCommand(".uno:SelectAll")
                self.xUITest.executeCommand(".uno:Copy")
                self.xUITest.executeCommand(".uno:Paste")
                self.xUITest.executeCommand(".uno:Paste")
            xWriterEdit.executeAction("GOTO", mkPropertyValues({"PAGE": "1"}))

            #Format->Text operations on small selections (which would generate <~500 redlines), changetracking still working
            self.xUITest.executeCommand(".uno:TrackChanges")
            xWriterEdit.executeAction("SELECT", mkPropertyValues({"START_POS": "1", "END_POS": "1000"}))
            self.xUITest.executeCommand(".uno:ChangeCaseToTitleCase")
            self.assertTrue(document.Redlines.createEnumeration().hasMoreElements())

            #Removing all the redlines.
            with self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptTrackedChanges", close_button="close") as xTrackDlg:
                xAccBtn = xTrackDlg.getChild("rejectall")
                xAccBtn.executeAction("CLICK", tuple())

            #Without the fix in place, on big selections writer would freeze. Now it ignores change tracking.
            self.xUITest.executeCommand(".uno:SelectAll")
            self.xUITest.executeCommand(".uno:ChangeCaseToTitleCase")
            self.assertFalse(document.Redlines.createEnumeration().hasMoreElements())

            #The patch has no effects on the Format->Text operations
            self.assertEqual(document.Text.String[0:26], "Lorem Ipsum Dolor Sit Amet")
            self.xUITest.executeCommand(".uno:SelectAll")
            self.xUITest.executeCommand(".uno:ChangeCaseToUpper")
            self.assertEqual(document.Text.String[0:26], "LOREM IPSUM DOLOR SIT AMET")

# vim: set shiftwidth=4 softtabstop=4 expandtab: