# -*- 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 uitest.uihelper.common import select_by_text from libreoffice.calc.document import get_cell_by_position from libreoffice.uno.propertyvalue import mkPropertyValues class consolidate(UITestCase): def test_consolidate(self): with self.ui_test.load_file(get_url_for_data_file("consolidate.ods")) as calc_doc: with self.ui_test.execute_modeless_dialog_through_command(".uno:DataConsolidate") as xDialog: xfunc = xDialog.getChild("func") xlbdataarea = xDialog.getChild("lbdataarea") xadd = xDialog.getChild("add") xbyrow = xDialog.getChild("byrow") xbycol = xDialog.getChild("bycol") xeddestarea = xDialog.getChild("eddestarea") select_by_text(xfunc, "Sum") select_by_text(xlbdataarea, "range1") xadd.executeAction("CLICK", tuple()) select_by_text(xlbdataarea, "range2") xadd.executeAction("CLICK", tuple()) propsC = {"TEXT": "range3"} actionPropsC = mkPropertyValues(propsC) xlbdataarea.executeAction("SELECT", actionPropsC) xadd.executeAction("CLICK", tuple()) xbyrow.executeAction("CLICK", tuple()) xbycol.executeAction("CLICK", tuple()) xeddestarea.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"})) xeddestarea.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"})) xeddestarea.executeAction("TYPE", mkPropertyValues({"TEXT":"$Total.$A$2"})) #verify self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 2).getValue(), 300) self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 3).getValue(), 303) self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 4).getValue(), 306) self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 5).getValue(), 309) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 2).getValue(), 303) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 3).getValue(), 306) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 4).getValue(), 309) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 5).getValue(), 312) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 2).getValue(), 306) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 3).getValue(), 309) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 4).getValue(), 312) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 5).getValue(), 315) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 2).getValue(), 309) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 3).getValue(), 312) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 4).getValue(), 315) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 5).getValue(), 318) #verify dialog with self.ui_test.execute_modeless_dialog_through_command(".uno:DataConsolidate") as xDialog: xfunc = xDialog.getChild("func") xlbdataarea = xDialog.getChild("lbdataarea") xdelete = xDialog.getChild("delete") xbyrow = xDialog.getChild("byrow") xbycol = xDialog.getChild("bycol") xeddestarea = xDialog.getChild("eddestarea") xconsareas = xDialog.getChild("consareas") self.assertEqual(get_state_as_dict(xfunc)["SelectEntryText"], "Sum") self.assertEqual(get_state_as_dict(xconsareas)["Children"], "3") self.assertEqual(get_state_as_dict(xeddestarea)["Text"], "$Total.$A$2") self.assertEqual(get_state_as_dict(xbyrow)["Selected"], "true") self.assertEqual(get_state_as_dict(xbycol)["Selected"], "true") #delete first range xFirstEntry = xconsareas.getChild("0") xFirstEntry.executeAction("SELECT", tuple()) xdelete.executeAction("CLICK", tuple()) self.assertEqual(get_state_as_dict(xconsareas)["Children"], "2") self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 2).getValue(), 200) self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 3).getValue(), 202) self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 4).getValue(), 204) self.assertEqual(get_cell_by_position(calc_doc, 0, 1, 5).getValue(), 206) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 2).getValue(), 202) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 3).getValue(), 204) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 4).getValue(), 206) self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 5).getValue(), 208) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 2).getValue(), 204) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 3).getValue(), 206) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 4).getValue(), 208) self.assertEqual(get_cell_by_position(calc_doc, 0, 3, 5).getValue(), 210) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 2).getValue(), 206) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 3).getValue(), 208) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 4).getValue(), 210) self.assertEqual(get_cell_by_position(calc_doc, 0, 4, 5).getValue(), 212) # test cancel button with self.ui_test.execute_modeless_dialog_through_command(".uno:DataConsolidate", close_button="cancel"): pass # vim: set shiftwidth=4 softtabstop=4 expandtab: