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/.
10 from libreoffice
.uno
.propertyvalue
import mkPropertyValues
11 from uitest
.framework
import UITestCase
12 from libreoffice
.calc
.document
import get_cell_by_position
13 from uitest
.uihelper
.common
import get_state_as_dict
, get_url_for_data_file
15 class mergedRowsColumns(UITestCase
):
17 def test_merged_row_delete_tdf105412(self
):
18 with self
.ui_test
.load_file(get_url_for_data_file("tdf105412.ods")) as calc_doc
:
19 xTopWindow
= self
.xUITest
.getTopFocusWindow()
20 gridwin
= xTopWindow
.getChild("grid_window")
22 gridwin
.executeAction("SELECT", mkPropertyValues({"CELL": "A20"}))
23 self
.xUITest
.executeCommand(".uno:SelectRow")
24 self
.xUITest
.executeCommand(".uno:DeleteRows")
25 self
.xUITest
.executeCommand(".uno:Undo")
26 self
.xUITest
.executeCommand(".uno:Redo")
28 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 2, 18).getString(), "L6")
30 def test_merged_columns_delete(self
):
31 with self
.ui_test
.load_file(get_url_for_data_file("tdf105412.ods")) as calc_doc
:
32 xTopWindow
= self
.xUITest
.getTopFocusWindow()
33 gridwin
= xTopWindow
.getChild("grid_window")
35 gridwin
.executeAction("SELECT", mkPropertyValues({"CELL": "D1"}))
36 self
.xUITest
.executeCommand(".uno:SelectColumn")
37 self
.xUITest
.executeCommand(".uno:DeleteColumns")
38 self
.xUITest
.executeCommand(".uno:Undo")
39 self
.xUITest
.executeCommand(".uno:Redo")
41 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 2, 18).getString(), "L6")
43 def test_undo_not_available_merged_cells_tdf37901(self
):
44 with self
.ui_test
.load_file(get_url_for_data_file("tdf105412.ods")) as calc_doc
:
45 xTopWindow
= self
.xUITest
.getTopFocusWindow()
46 gridwin
= xTopWindow
.getChild("grid_window")
48 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "B1:B2"}))
49 self
.xUITest
.executeCommand(".uno:MergeCells")
50 self
.xUITest
.executeCommand(".uno:Undo")
51 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 1).getString(), "Key#")
52 self
.xUITest
.executeCommand(".uno:ToggleMergeCells")
53 self
.xUITest
.executeCommand(".uno:Undo")
54 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 1).getString(), "Key#")
55 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "A2:B2"}))
56 self
.xUITest
.executeCommand(".uno:MergeCells")
57 self
.xUITest
.executeCommand(".uno:Undo")
58 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 1).getString(), "Key#")
59 self
.xUITest
.executeCommand(".uno:ToggleMergeCells")
60 self
.xUITest
.executeCommand(".uno:Undo")
62 def test_calculations_in_merged_cells_tdf51368(self
):
63 with self
.ui_test
.load_file(get_url_for_data_file("tdf51368.ods")) as calc_doc
:
64 xTopWindow
= self
.xUITest
.getTopFocusWindow()
65 gridwin
= xTopWindow
.getChild("grid_window")
67 #move the content of the hidden cells into the first cell
68 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "A11:A12"}))
69 with self
.ui_test
.execute_dialog_through_command(".uno:ToggleMergeCells") as xDialog
:
70 xMoveCells
= xDialog
.getChild("move-cells-radio")
71 xMoveCells
.executeAction("CLICK", tuple())
72 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 10).getString(), "2 3")
73 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 11).getString(), "0")
75 self
.xUITest
.executeCommand(".uno:Undo")
76 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 10).getString(), "2")
77 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 11).getString(), "3")
79 #keep the contents of the hidden cells
80 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "A11:A12"}))
81 with self
.ui_test
.execute_dialog_through_command(".uno:ToggleMergeCells") as xDialog
:
82 xMoveCells
= xDialog
.getChild("keep-content-radio")
83 xMoveCells
.executeAction("CLICK", tuple())
84 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 10).getString(), "2")
85 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 11).getString(), "3")
86 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 11).getString(), "3")
88 self
.xUITest
.executeCommand(".uno:Undo")
89 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 10).getString(), "2")
90 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 11).getString(), "3")
92 #Empty the contents of the hidden cells
93 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "A11:A12"}))
94 with self
.ui_test
.execute_dialog_through_command(".uno:ToggleMergeCells") as xDialog
:
95 xMoveCells
= xDialog
.getChild("move-cells-radio")
96 xMoveCells
.executeAction("CLICK", tuple())
97 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 10).getString(), "2 3")
98 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 11).getString(), "")
99 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 11).getString(), "0")
101 self
.xUITest
.executeCommand(".uno:Undo")
102 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 10).getString(), "2")
103 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 11).getString(), "3")
106 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "A21:A22"}))
107 with self
.ui_test
.execute_dialog_through_command(".uno:ToggleMergeCells") as xDialog
:
108 xMoveCells
= xDialog
.getChild("keep-content-radio")
109 xMoveCells
.executeAction("CLICK", tuple())
110 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 20).getString(), "2")
111 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 21).getString(), "3")
112 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 21).getString(), "2")
114 self
.xUITest
.executeCommand(".uno:Undo")
115 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 20).getString(), "2")
116 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 21).getString(), "2")
119 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "A30:A32"}))
120 with self
.ui_test
.execute_dialog_through_command(".uno:ToggleMergeCells") as xDialog
:
121 xMoveCells
= xDialog
.getChild("keep-content-radio")
122 xMoveCells
.executeAction("CLICK", tuple())
123 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 31).getString(), "thisisbad")
125 self
.xUITest
.executeCommand(".uno:Undo")
126 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 0, 30).getString(), "is")
127 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 1, 31).getString(), "thisisbad")
130 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "J12:K12"}))
131 with self
.ui_test
.execute_dialog_through_command(".uno:ToggleMergeCells") as xDialog
:
133 xMoveCells
= xDialog
.getChild("keep-content-radio")
134 xMoveCells
.executeAction("CLICK", tuple())
135 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 9, 11).getString(), "2")
136 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 11, 11).getString(), "3")
138 self
.xUITest
.executeCommand(".uno:Undo")
139 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 9, 11).getString(), "2")
140 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 11, 11).getString(), "3")
143 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "J22:K22"}))
144 with self
.ui_test
.execute_dialog_through_command(".uno:ToggleMergeCells") as xDialog
:
145 xMoveCells
= xDialog
.getChild("keep-content-radio")
146 xMoveCells
.executeAction("CLICK", tuple())
147 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 9, 21).getString(), "2")
148 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 11, 21).getString(), "2")
150 self
.xUITest
.executeCommand(".uno:Undo")
151 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 9, 21).getString(), "2")
152 self
.assertEqual(get_cell_by_position(calc_doc
, 0, 11, 21).getString(), "2")
154 def test_move_merged_cells(self
):
155 with self
.ui_test
.create_doc_in_start_center("calc"):
156 xTopWindow
= self
.xUITest
.getTopFocusWindow()
157 gridwin
= xTopWindow
.getChild("grid_window")
159 gridwin
.executeAction("SELECT", mkPropertyValues({"RANGE": "B1:C1"}))
160 self
.xUITest
.executeCommand(".uno:ToggleMergeCells")
161 gridwin
.executeAction("SELECT", mkPropertyValues({"CELL": "D1"}))
162 self
.xUITest
.executeCommand(".uno:GoLeft")
163 self
.xUITest
.executeCommand(".uno:GoLeft")
164 self
.assertEqual(get_state_as_dict(gridwin
)["CurrentColumn"], "0")
165 self
.assertEqual(get_state_as_dict(gridwin
)["CurrentRow"], "0") #position A1
167 # vim: set shiftwidth=4 softtabstop=4 expandtab: