sw: test fix of tdf#140731 (freezing with track changes)

Follow-up to commit e463d239555d3a4dc61797eeb8c638b6442112a3
"tdf#140731: sw transliteration: avoid too many redlines"

Change-Id: I49d80d6fa5744797b7bb56d470ebc6f3b5f898d2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113402
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
diff --git a/sw/qa/uitest/writer_tests7/tdf140731.py b/sw/qa/uitest/writer_tests7/tdf140731.py
new file mode 100644
index 0000000..79972c8
--- /dev/null
+++ b/sw/qa/uitest/writer_tests7/tdf140731.py
@@ -0,0 +1,57 @@
# -*- 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, 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):
        self.ui_test.create_doc_in_start_center("writer")
        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")
            xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+c"}))
            xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+v"}))
            xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+v"}))
        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")
        document = self.ui_test.get_component()
        self.assertTrue(document.Redlines.createEnumeration().hasMoreElements())

        #Removing all the redlines.
        self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptTrackedChanges")
        xTrackDlg = self.xUITest.getTopFocusWindow()
        xAccBtn = xTrackDlg.getChild("rejectall")
        xAccBtn.executeAction("CLICK", tuple())
        xCancBtn = xTrackDlg.getChild("close")
        xCancBtn.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")

        self.ui_test.close_doc()
# vim: set shiftwidth=4 softtabstop=4 expandtab: