sc/CppunitTest_sc_uicalc.mk | 1 sc/qa/uitest/calc_tests7/tdf120660.py | 60 ---------------------------- sc/qa/unit/uicalc/uicalc.cxx | 71 +++++++++++++++++++++++++++++++++- 3 files changed, 70 insertions(+), 62 deletions(-)
New commits: commit 47966dfb6ddab661f93d63be6eb34ef00e24ac90 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Wed Jan 20 21:09:14 2021 +0100 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Thu Jan 21 09:30:12 2021 +0100 tdf#120660: sc: Move UItest to CppUnitTest Change-Id: I80f95d4a76250a39ccb3942e63e93ef4cb4c51d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109723 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sc/CppunitTest_sc_uicalc.mk b/sc/CppunitTest_sc_uicalc.mk index 842b8b5556e3..15ab85a47dcd 100644 --- a/sc/CppunitTest_sc_uicalc.mk +++ b/sc/CppunitTest_sc_uicalc.mk @@ -21,6 +21,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sc_uicalc, \ cppuhelper \ sal \ sc \ + sfx \ test \ tl \ unotest \ diff --git a/sc/qa/uitest/calc_tests7/tdf120660.py b/sc/qa/uitest/calc_tests7/tdf120660.py deleted file mode 100644 index 4fcef5787b06..000000000000 --- a/sc/qa/uitest/calc_tests7/tdf120660.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- 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 uitest.uihelper.common import select_pos -from uitest.uihelper.calc import enter_text_to_cell -from libreoffice.calc.document import get_sheet_from_doc -from libreoffice.calc.conditional_format import get_conditional_format_from_sheet -from libreoffice.calc.document import get_cell_by_position -from libreoffice.uno.propertyvalue import mkPropertyValues - -#Bug 120660 - cells not recalculated after copy/paste different range of cells - -class tdf120660(UITestCase): - def test_tdf120660_undo_recalculate(self): - calc_doc = self.ui_test.load_file(get_url_for_data_file("tdf120660.ods")) - xCalcDoc = self.xUITest.getTopFocusWindow() - gridwin = xCalcDoc.getChild("grid_window") - document = self.ui_test.get_component() - - #Make sure that tools-options-LibreOffice Calc-General-Input settings-Show overwrite warning when pasting data is unselected - #turn off message: You are pasting data into cells that already contain data - self.ui_test.execute_dialog_through_command(".uno:OptionsTreeDialog") #optionsdialog - xDialogOpt = self.xUITest.getTopFocusWindow() - - xPages = xDialogOpt.getChild("pages") - xWriterEntry = xPages.getChild('3') # Calc - xWriterEntry.executeAction("EXPAND", tuple()) - xWriterGeneralEntry = xWriterEntry.getChild('0') - xWriterGeneralEntry.executeAction("SELECT", tuple()) #General / replwarncb - xreplwarncb = xDialogOpt.getChild("replwarncb") - if (get_state_as_dict(xreplwarncb)["Selected"]) == "true": - xreplwarncb.executeAction("CLICK", tuple()) - xOKBtn = xDialogOpt.getChild("ok") - self.ui_test.close_dialog_through_button(xOKBtn) - - gridwin.executeAction("SELECT", mkPropertyValues({"RANGE": "A8:E8"})) - self.xUITest.executeCommand(".uno:Copy") - gridwin.executeAction("SELECT", mkPropertyValues({"RANGE": "A4:E4"})) - self.xUITest.executeCommand(".uno:Paste") - self.assertEqual(get_cell_by_position(document, 0, 4, 3).getValue(), 1200) - - self.xUITest.executeCommand(".uno:Undo") - self.assertEqual(get_cell_by_position(document, 0, 4, 3).getValue(), 2200) - - gridwin.executeAction("SELECT", mkPropertyValues({"RANGE": "A8:D8"})) - self.xUITest.executeCommand(".uno:Copy") - gridwin.executeAction("SELECT", mkPropertyValues({"RANGE": "A4:D4"})) - self.xUITest.executeCommand(".uno:Paste") - self.assertEqual(get_cell_by_position(document, 0, 4, 3).getValue(), 1200) - - self.xUITest.executeCommand(".uno:Undo") - self.assertEqual(get_cell_by_position(document, 0, 4, 3).getValue(), 2200) - - self.ui_test.close_doc() -# vim: set shiftwidth=4 softtabstop=4 expandtab: \ No newline at end of file diff --git a/sc/qa/uitest/data/tdf120660.ods b/sc/qa/unit/uicalc/data/tdf120660.ods similarity index 100% rename from sc/qa/uitest/data/tdf120660.ods rename to sc/qa/unit/uicalc/data/tdf120660.ods diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx index 418cd531db02..94881e92b72f 100644 --- a/sc/qa/unit/uicalc/uicalc.cxx +++ b/sc/qa/unit/uicalc/uicalc.cxx @@ -20,6 +20,8 @@ #include <document.hxx> #include <docuno.hxx> #include <docsh.hxx> +#include <inputopt.hxx> +#include <scmod.hxx> #include <viewdata.hxx> using namespace ::com::sun::star; @@ -93,6 +95,73 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf122232) checkCurrentCell(2, 6); } +CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf120660) +{ + ScModelObj* pModelObj = createDoc("tdf120660.ods"); + ScDocument* pDoc = pModelObj->GetDocument(); + CPPUNIT_ASSERT(pDoc); + + // Disable replace cell warning + ScModule* pMod = SC_MOD(); + ScInputOptions aInputOption = pMod->GetInputOptions(); + bool bOldStatus = aInputOption.GetReplaceCellsWarn(); + aInputOption.SetReplaceCellsWarn(false); + pMod->SetInputOptions(aInputOption); + + // Select A8:E8 + ScRange aMatRange(0, 7, 0, 4, 7, 0); + ScDocShell::GetViewData()->GetMarkData().SetMarkArea(aMatRange); + + ScDocument aClipDoc(SCDOCMODE_CLIP); + ScDocShell::GetViewData()->GetView()->CopyToClip(&aClipDoc, false, false, false, false); + Scheduler::ProcessEventsToIdle(); + + // Select A4:E4 + aMatRange = ScRange(0, 3, 0, 4, 3, 0); + ScDocShell::GetViewData()->GetMarkData().SetMarkArea(aMatRange); + + ScDocShell::GetViewData()->GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc); + Scheduler::ProcessEventsToIdle(); + + CPPUNIT_ASSERT_EQUAL(1200.0, pDoc->GetValue(ScAddress(4, 3, 0))); + CPPUNIT_ASSERT_EQUAL(-100.0, pDoc->GetValue(ScAddress(4, 7, 0))); + + dispatchCommand(mxComponent, ".uno:Undo", {}); + + CPPUNIT_ASSERT_EQUAL(2200.0, pDoc->GetValue(ScAddress(4, 3, 0))); + CPPUNIT_ASSERT_EQUAL(900.0, pDoc->GetValue(ScAddress(4, 7, 0))); + + // Select A8:D8 + aMatRange = ScRange(0, 7, 0, 3, 7, 0); + ScDocShell::GetViewData()->GetMarkData().SetMarkArea(aMatRange); + + ScDocShell::GetViewData()->GetView()->CopyToClip(&aClipDoc, false, false, false, false); + Scheduler::ProcessEventsToIdle(); + + // Select A4:D4 + aMatRange = ScRange(0, 3, 0, 3, 3, 0); + ScDocShell::GetViewData()->GetMarkData().SetMarkArea(aMatRange); + + ScDocShell::GetViewData()->GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc); + Scheduler::ProcessEventsToIdle(); + + CPPUNIT_ASSERT_EQUAL(1200.0, pDoc->GetValue(ScAddress(4, 3, 0))); + + // Without the fix in place, this test would have failed with + // - Expected: -100 + // - Actual : 900 + CPPUNIT_ASSERT_EQUAL(-100.0, pDoc->GetValue(ScAddress(4, 7, 0))); + + dispatchCommand(mxComponent, ".uno:Undo", {}); + + CPPUNIT_ASSERT_EQUAL(2200.0, pDoc->GetValue(ScAddress(4, 3, 0))); + CPPUNIT_ASSERT_EQUAL(900.0, pDoc->GetValue(ScAddress(4, 7, 0))); + + // Restore previous status + aInputOption.SetReplaceCellsWarn(bOldStatus); + pMod->SetInputOptions(aInputOption); +} + CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf138710) { ScModelObj* pModelObj = createDoc("tdf138710.ods"); @@ -130,7 +199,6 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf133326) // .uno:Copy without touching shared clipboard ScDocument aClipDoc(SCDOCMODE_CLIP); ScDocShell::GetViewData()->GetView()->CopyToClip(&aClipDoc, false, false, false, false); - Scheduler::ProcessEventsToIdle(); CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(1), pDoc->GetTableCount()); @@ -395,7 +463,6 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf138428) // .uno:Copy without touching shared clipboard ScDocument aClipDoc(SCDOCMODE_CLIP); ScDocShell::GetViewData()->GetView()->CopyToClip(&aClipDoc, false, false, false, false); - Scheduler::ProcessEventsToIdle(); dispatchCommand(mxComponent, ".uno:GoRight", {}); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits