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

Eike Rathke erack at redhat.com
Thu Nov 2 16:17:31 UTC 2017


 sc/qa/unit/ucalc.hxx         |    2 ++
 sc/qa/unit/ucalc_formula.cxx |   28 ++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

New commits:
commit 782f34ae2f214674fc871ece348ba5dd11c4a8d6
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Nov 2 16:59:36 2017 +0100

    Unit test for CellStoreEvent::swap() in ScColumn::SwapCol(), tdf#111428
    
    Change-Id: Iaba95e2cfb6b34ab3ad04f96dd2c8e2c12115d95

diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 9dae67cc9aa6..ed8bf0c09e0e 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -538,6 +538,7 @@ public:
     void testProtectedSheetEditByRow();
     void testProtectedSheetEditByColumn();
     void testFuncRowsHidden();
+    void testInsertColCellStoreEventSwap();
 
     CPPUNIT_TEST_SUITE(Test);
     CPPUNIT_TEST(testCollator);
@@ -816,6 +817,7 @@ public:
     CPPUNIT_TEST(testProtectedSheetEditByRow);
     CPPUNIT_TEST(testProtectedSheetEditByColumn);
     CPPUNIT_TEST(testFuncRowsHidden);
+    CPPUNIT_TEST(testInsertColCellStoreEventSwap);
     CPPUNIT_TEST_SUITE_END();
 
 private:
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 3dbeba873d81..22d76cac6c1c 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -8394,4 +8394,32 @@ void Test::testIterations()
     m_pDoc->SetDocOptions( aDocOpts );
 }
 
+// tdf#111428 CellStoreEvent and its counter used for quick "has a column
+// formula cells" must point to the correct column.
+void Test::testInsertColCellStoreEventSwap()
+{
+    sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
+    m_pDoc->InsertTab(0, "Test");
+
+    m_pDoc->SetValue(  0,0,0, 1.0 );    // A1
+    m_pDoc->SetString( 1,0,0, "=A1" );  // B1
+    // Insert column left of B
+    m_pDoc->InsertCol( ScRange(1,0,0, 1,MAXROW,0));
+    ScAddress aPos(2,0,0);              // C1, new formula postion
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( "Should be formula cell having value", 1.0, m_pDoc->GetValue(aPos));
+    // After having swapped in an empty column, editing or adding a formula
+    // cell has to use the correct store context. To test this,
+    // ScDocument::SetString() can't be used as it doesn't expose the behavior
+    // in question, use ScDocFunc::SetFormulaCell() instead which actually is
+    // also called when editing a cell and creating a formula cell.
+    ScFormulaCell* pCell = new ScFormulaCell( m_pDoc, aPos, "=A1+1");
+    ScDocFunc& rDocFunc = getDocShell().GetDocFunc();
+    rDocFunc.SetFormulaCell( aPos, pCell, false);   // C1, change formula
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( "Initial calculation failed", 2.0, m_pDoc->GetValue(aPos));
+    m_pDoc->SetValue( 0,0,0, 2.0 );     // A1, change value
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( "Recalculation failed", 3.0, m_pDoc->GetValue(aPos));
+
+    m_pDoc->DeleteTab(0);
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list