Version 7.6.3.2-android, tag libreoffice-7.6.3.2-android
[LibreOffice.git] / sd / qa / uitest / findReplace / findReplace.py
blob130765a865bb751e341b8fe6140870a7b1c38613
1 # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
3 # This file is part of the LibreOffice project.
5 # This Source Code Form is subject to the terms of the Mozilla Public
6 # License, v. 2.0. If a copy of the MPL was not distributed with this
7 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 from uitest.framework import UITestCase
10 from libreoffice.uno.propertyvalue import mkPropertyValues
11 from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
13 class findReplace(UITestCase):
14 def test_find_impress(self):
15 with self.ui_test.load_file(get_url_for_data_file("findReplace.odp")) as impress_doc:
17 # check current slide is 1
18 self.assertEqual(impress_doc.CurrentController.getCurrentPage().Number, 1)
20 self.assertEqual("First first first", impress_doc.DrawPages[0].getByIndex(1).String)
21 self.assertEqual("second", impress_doc.DrawPages[1].getByIndex(1).String)
22 self.assertEqual("Third", impress_doc.DrawPages[2].getByIndex(1).String)
23 self.assertEqual("Text size 16", impress_doc.DrawPages[3].getByIndex(1).String)
25 # search for string "second"
26 with self.ui_test.execute_modeless_dialog_through_command(".uno:SearchDialog", close_button="close") as xDialog:
27 searchterm = xDialog.getChild("searchterm")
28 searchterm.executeAction("TYPE", mkPropertyValues({"TEXT":"second"})) #2nd slide
29 xsearch = xDialog.getChild("search")
30 xsearch.executeAction("CLICK", tuple())
32 # verify we moved to slide 2
33 self.assertEqual(impress_doc.CurrentController.getCurrentPage().Number, 2)
35 # search for string "third"
36 searchterm.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
37 searchterm.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
38 searchterm.executeAction("TYPE", mkPropertyValues({"TEXT":"third"}))
39 xsearch.executeAction("CLICK", tuple())
41 #verify we moved to slide 3
42 self.assertEqual(impress_doc.CurrentController.getCurrentPage().Number, 3) #3rd slide
44 self.assertEqual("First first first", impress_doc.DrawPages[0].getByIndex(1).String)
45 self.assertEqual("second", impress_doc.DrawPages[1].getByIndex(1).String)
46 self.assertEqual("Third", impress_doc.DrawPages[2].getByIndex(1).String)
47 self.assertEqual("Text size 16", impress_doc.DrawPages[3].getByIndex(1).String)
49 # now open dialog and verify find="third" (remember last value);
50 # replace value with "First" (click match case) with word "Replace"
51 # click twice the Replace button, check "Replace first first"
53 # open the dialog again
54 with self.ui_test.execute_modeless_dialog_through_command(".uno:SearchDialog", close_button="close") as xDialog:
56 # verify search string is still "third" from previous search
57 searchterm = xDialog.getChild("searchterm")
58 self.assertEqual(get_state_as_dict(searchterm)["Text"], "third")
60 # replace it with "First"
61 searchterm.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
62 searchterm.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
63 searchterm.executeAction("TYPE", mkPropertyValues({"TEXT":"First"}))
65 # click "match case"
66 matchcase = xDialog.getChild("matchcase")
67 matchcase.executeAction("CLICK", tuple()) #click match case
69 # set the replace string to "Replace"
70 replaceterm = xDialog.getChild("replaceterm")
71 replaceterm.executeAction("TYPE", mkPropertyValues({"TEXT":"Replace"})) #replace textbox
73 # hit replace button 2 times
74 replace = xDialog.getChild("replace")
76 replace.executeAction("CLICK", tuple())
77 replace.executeAction("CLICK", tuple()) #click twice Replace button (one selects, second replaces)
79 # now replace first (uncheck match case) with word "aaa" - click once Replace All button, check "Replace aaa aaa"
80 matchcase = xDialog.getChild("matchcase")
81 matchcase.executeAction("CLICK", tuple()) # uncheck match case
83 self.assertEqual("Replace first first", impress_doc.DrawPages[0].getByIndex(1).String)
84 self.assertEqual("second", impress_doc.DrawPages[1].getByIndex(1).String)
85 # tdf#145868 - Third was search for earlier, but never should have been replaced
86 self.assertEqual("Third", impress_doc.DrawPages[2].getByIndex(1).String)
87 self.assertEqual("Text size 16", impress_doc.DrawPages[3].getByIndex(1).String)
89 replaceterm = xDialog.getChild("replaceterm")
90 replaceterm.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
91 replaceterm.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
92 replaceterm.executeAction("TYPE", mkPropertyValues({"TEXT":"aaa"}))
93 replaceall = xDialog.getChild("replaceall")
94 replaceall.executeAction("CLICK", tuple()) # click on replace all button
96 self.assertEqual(impress_doc.CurrentController.getCurrentPage().Number, 1)
98 # tdf#122788: Without the fix in place, this test would have failed with
99 # AssertionError: 'Replace aaa aaa' != 'Replace first first'
100 self.assertEqual("Replace aaa aaa", impress_doc.DrawPages[0].getByIndex(1).String)
101 self.assertEqual("second", impress_doc.DrawPages[1].getByIndex(1).String)
102 self.assertEqual("Third", impress_doc.DrawPages[2].getByIndex(1).String)
103 self.assertEqual("Text size 16", impress_doc.DrawPages[3].getByIndex(1).String)
105 # vim: set shiftwidth=4 softtabstop=4 expandtab: