[Libreoffice-commits] core.git: sc/qa sc/source

Xisco Fauli (via logerrit) logerrit at kemper.freedesktop.org
Thu Jan 21 20:17:26 UTC 2021


 dev/null                              |binary
 sc/qa/uitest/calc_tests2/tdf118189.py |   47 --------------
 sc/qa/uitest/calc_tests4/tdf118207.py |   55 ----------------
 sc/qa/unit/uicalc/uicalc.cxx          |  113 +++++++++++++++++++++++++++++++++-
 sc/source/ui/inc/viewfunc.hxx         |    2 
 sc/source/ui/view/viewfun3.cxx        |    4 -
 6 files changed, 114 insertions(+), 107 deletions(-)

New commits:
commit 9fd193168fe092bf15edbc81b8b1a15ca6d7c032
Author:     Xisco Fauli <xiscofauli at libreoffice.org>
AuthorDate: Sun Jan 17 21:00:11 2021 +0100
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Thu Jan 21 21:16:46 2021 +0100

    tdf#118207: tdf#118189: sc: Move UItest to CppUnitTest
    
    Change-Id: I1084aaf66d0c1943fa1457de7bb58c2b0b1b1189
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109481
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>

diff --git a/sc/qa/uitest/calc_tests2/tdf118189.py b/sc/qa/uitest/calc_tests2/tdf118189.py
deleted file mode 100644
index bd5bd41bafec..000000000000
--- a/sc/qa/uitest/calc_tests2/tdf118189.py
+++ /dev/null
@@ -1,47 +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_cell_by_position
-from libreoffice.uno.propertyvalue import mkPropertyValues
-
-#Bug 118189 - EDITING Crashes on Undo after Cut conditional formatting data
-
-class tdf118189(UITestCase):
-    def test_tdf118189(self):
-        calc_doc = self.ui_test.load_file(get_url_for_data_file("tdf118189.xlsx"))
-        xCalcDoc = self.xUITest.getTopFocusWindow()
-        gridwin = xCalcDoc.getChild("grid_window")
-        document = self.ui_test.get_component()
-        #1. Open attached document
-        #2. Copy Column A
-        gridwin.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
-        self.xUITest.executeCommand(".uno:SelectColumn")
-        self.xUITest.executeCommand(".uno:Copy")
-        #3. New Spreadsheet
-        calc_doc2 = self.ui_test.load_file(get_url_for_data_file("emptyFile.ods"))
-        gridwin2 = xCalcDoc.getChild("grid_window")
-        document2 = self.ui_test.get_component()
-
-        frames = self.ui_test.get_frames()
-        frames[1].activate()
-        #4. Paste it
-        gridwin2.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
-        self.xUITest.executeCommand(".uno:Paste")
-        #5. Cut it
-        self.xUITest.executeCommand(".uno:Cut")
-        #6. Undo
-        self.xUITest.executeCommand(".uno:Undo")
-
-        #-> CRASH
-        self.assertEqual(get_cell_by_position(document2, 0, 0, 0).getString(), "On Back Order")
-
-        self.ui_test.close_doc()
-
-# vim: set shiftwidth=4 softtabstop=4 expandtab:
\ No newline at end of file
diff --git a/sc/qa/uitest/calc_tests4/tdf118207.py b/sc/qa/uitest/calc_tests4/tdf118207.py
deleted file mode 100644
index 82e821c91094..000000000000
--- a/sc/qa/uitest/calc_tests4/tdf118207.py
+++ /dev/null
@@ -1,55 +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_cell_by_position
-from libreoffice.uno.propertyvalue import mkPropertyValues
-
-#Bug 118207 - CRASH: Cutting and pasting a conditional format column and undoing
-
-class tdf118207(UITestCase):
-    def test_tdf118207(self):
-        calc_doc = self.ui_test.load_file(get_url_for_data_file("tdf118189.xlsx"))
-        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 NOT tagged.
-        self.ui_test.execute_dialog_through_command(".uno:OptionsTreeDialog")  #optionsdialog
-        xDialogOpt = self.xUITest.getTopFocusWindow()
-
-        xPages = xDialogOpt.getChild("pages")
-        xCalcEntry = xPages.getChild('3')                 # Calc
-        xCalcEntry.executeAction("EXPAND", tuple())
-        xCalcGeneralEntry = xCalcEntry.getChild('0')
-        xCalcGeneralEntry.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)
-        #Select Column A
-        #Cut it
-        gridwin.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
-        self.xUITest.executeCommand(".uno:SelectColumn")
-        self.xUITest.executeCommand(".uno:Cut")
-        #Paste it in Column B , Paste it in Column B again
-        gridwin.executeAction("SELECT", mkPropertyValues({"CELL": "B1"}))
-        self.xUITest.executeCommand(".uno:Paste")
-        self.xUITest.executeCommand(".uno:Paste")
-        #Undo 3 times
-        self.xUITest.executeCommand(".uno:Undo")
-        self.xUITest.executeCommand(".uno:Undo")
-        self.xUITest.executeCommand(".uno:Undo")
-        #-> CRASH
-        self.assertEqual(get_cell_by_position(document, 0, 0, 0).getString() , "On Back Order")
-        #verify
-
-        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/emptyFile.ods b/sc/qa/uitest/data/emptyFile.ods
deleted file mode 100644
index cd2454dba44a..000000000000
Binary files a/sc/qa/uitest/data/emptyFile.ods and /dev/null differ
diff --git a/sc/qa/uitest/data/tdf118189.xlsx b/sc/qa/unit/uicalc/data/tdf118189.xlsx
similarity index 100%
rename from sc/qa/uitest/data/tdf118189.xlsx
rename to sc/qa/unit/uicalc/data/tdf118189.xlsx
diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx
index efdcd7c7af6d..3b93128415ab 100644
--- a/sc/qa/unit/uicalc/uicalc.cxx
+++ b/sc/qa/unit/uicalc/uicalc.cxx
@@ -432,9 +432,10 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124822)
     CPPUNIT_ASSERT_EQUAL(OUString("X"), pDoc->GetString(ScAddress(0, 0, 2)));
 
     dispatchCommand(mxComponent, ".uno:SelectAll", {});
-    dispatchCommand(mxComponent, ".uno:Cut", {});
     Scheduler::ProcessEventsToIdle();
 
+    ScDocShell::GetViewData()->GetView()->CutToClip();
+
     CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(0, 0, 2)));
 
     dispatchCommand(mxComponent, ".uno:Undo", {});
@@ -443,6 +444,115 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124822)
     CPPUNIT_ASSERT_EQUAL(OUString("X"), pDoc->GetString(ScAddress(0, 0, 2)));
 }
 
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf118189)
+{
+    ScModelObj* pModelObj = createDoc("tdf118189.xlsx");
+
+    ScDocument* pDoc = pModelObj->GetDocument();
+    CPPUNIT_ASSERT(pDoc);
+
+    // Select column A
+    lcl_SelectRangeFromString(*pDoc, "A:A");
+
+    ScDocument aClipDoc(SCDOCMODE_CLIP);
+    ScDocShell::GetViewData()->GetView()->CopyToClip(&aClipDoc, false, false, false, false);
+
+    mxComponent->dispose();
+
+    // Open a new document
+    mxComponent = loadFromDesktop("private:factory/scalc");
+    pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    CPPUNIT_ASSERT(pModelObj);
+    pDoc = pModelObj->GetDocument();
+    CPPUNIT_ASSERT(pDoc);
+
+    ScDocShell::GetViewData()->GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc);
+    Scheduler::ProcessEventsToIdle();
+
+    OUString aFormula;
+    pDoc->GetFormula(0, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    ScDocShell::GetViewData()->GetView()->CutToClip();
+
+    pDoc->GetFormula(0, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    // Without the fix in place, this test would have crashed here
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    Scheduler::ProcessEventsToIdle();
+
+    pDoc->GetFormula(0, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+}
+
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf118207)
+{
+    ScModelObj* pModelObj = createDoc("tdf118189.xlsx");
+
+    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 column A
+    lcl_SelectRangeFromString(*pDoc, "A:A");
+
+    OUString aFormula;
+    pDoc->GetFormula(0, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    ScDocument aClipDoc(SCDOCMODE_CLIP);
+    ScDocShell::GetViewData()->GetView()->CutToClip(&aClipDoc);
+
+    pDoc->GetFormula(0, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    // Select column B
+    lcl_SelectRangeFromString(*pDoc, "B:B");
+
+    ScDocShell::GetViewData()->GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc);
+    Scheduler::ProcessEventsToIdle();
+
+    pDoc->GetFormula(1, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    ScDocShell::GetViewData()->GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc);
+    Scheduler::ProcessEventsToIdle();
+
+    pDoc->GetFormula(1, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    Scheduler::ProcessEventsToIdle();
+
+    pDoc->GetFormula(1, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    Scheduler::ProcessEventsToIdle();
+
+    pDoc->GetFormula(1, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+    pDoc->GetFormula(0, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString(""), aFormula);
+
+    dispatchCommand(mxComponent, ".uno:Undo", {});
+    Scheduler::ProcessEventsToIdle();
+
+    pDoc->GetFormula(0, 77, 0, aFormula);
+    CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), aFormula);
+
+    // Restore previous status
+    aInputOption.SetReplaceCellsWarn(bOldStatus);
+    pMod->SetInputOptions(aInputOption);
+}
+
 CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf138428)
 {
     mxComponent = loadFromDesktop("private:factory/scalc");
@@ -509,7 +619,6 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf133342)
     ScDocument* pDoc = pModelObj->GetDocument();
     CPPUNIT_ASSERT(pDoc);
 
-    //Select cell A1
     CPPUNIT_ASSERT_EQUAL(OUString("12,35 %"), pDoc->GetString(ScAddress(0, 0, 0)));
     //Add decimals
     dispatchCommand(mxComponent, ".uno:NumberFormatIncDecimals", {});
diff --git a/sc/source/ui/inc/viewfunc.hxx b/sc/source/ui/inc/viewfunc.hxx
index 497c09729280..457f599a5666 100644
--- a/sc/source/ui/inc/viewfunc.hxx
+++ b/sc/source/ui/inc/viewfunc.hxx
@@ -107,7 +107,7 @@ public:
 
     void            EnterDataAtCursor( const OUString& rString );         //! Not used?
 
-    SC_DLLPUBLIC void           CutToClip();
+    SC_DLLPUBLIC void           CutToClip(ScDocument* pClipDoc = nullptr);
     SC_DLLPUBLIC bool           CopyToClip( ScDocument* pClipDoc, bool bCut, bool bApi = false,
                                             bool bIncludeObjects = false, bool bStopEdit = true );
     SC_DLLPUBLIC bool           CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRange, bool bCut,
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
index 11f03b0b92fd..e8389d40aa04 100644
--- a/sc/source/ui/view/viewfun3.cxx
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -85,7 +85,7 @@ void collectUIInformation(const std::map<OUString, OUString>& aParameters, const
 
 //      C U T
 
-void ScViewFunc::CutToClip()
+void ScViewFunc::CutToClip(ScDocument* pClipDoc)
 {
     UpdateInputLine();
 
@@ -114,7 +114,7 @@ void ScViewFunc::CutToClip()
             MarkDataChanged();
         }
 
-        CopyToClip( nullptr, true, false, true/*bIncludeObjects*/ );           // copy to clipboard
+        CopyToClip( pClipDoc, true, false, true/*bIncludeObjects*/ );           // copy to clipboard
 
         ScAddress aOldEnd( aRange.aEnd );       //  combined cells in this range?
         rDoc.ExtendMerge( aRange, true );


More information about the Libreoffice-commits mailing list