diff options
author | Eike Rathke <erack@redhat.com> | 2018-10-16 11:22:20 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2018-10-16 13:50:24 +0200 |
commit | e77f63d6ab56d526bebaa409b9b03eee5a05609d (patch) | |
tree | cdf60ae37f27e175a64ca109a051dad76c937431 | |
parent | 83cc4a58fd672d83ed020c2697288c7948f1538b (diff) |
Unit test deleting shared formula group top cell, tdf#119623
Change-Id: I9a497b9d9ae09c8764f62549a60c8a2a952bc9e9
Reviewed-on: https://gerrit.libreoffice.org/61822
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
-rw-r--r-- | sc/qa/unit/ucalc.hxx | 2 | ||||
-rw-r--r-- | sc/qa/unit/ucalc_sharedformula.cxx | 42 |
2 files changed, 44 insertions, 0 deletions
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx index a59483e0789c..9f69783ad815 100644 --- a/sc/qa/unit/ucalc.hxx +++ b/sc/qa/unit/ucalc.hxx @@ -406,6 +406,7 @@ public: void testSharedFormulaUnshareAreaListeners(); void testSharedFormulaListenerDeleteArea(); void testSharedFormulaUpdateOnReplacement(); + void testSharedFormulaDeleteTopCell(); void testFormulaPosition(); void testFormulaWizardSubformula(); @@ -755,6 +756,7 @@ public: CPPUNIT_TEST(testSharedFormulaUnshareAreaListeners); CPPUNIT_TEST(testSharedFormulaListenerDeleteArea); CPPUNIT_TEST(testSharedFormulaUpdateOnReplacement); + CPPUNIT_TEST(testSharedFormulaDeleteTopCell); CPPUNIT_TEST(testFormulaPosition); CPPUNIT_TEST(testFormulaWizardSubformula); CPPUNIT_TEST(testMixData); diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx index f05929e570cb..853f54c30ff9 100644 --- a/sc/qa/unit/ucalc_sharedformula.cxx +++ b/sc/qa/unit/ucalc_sharedformula.cxx @@ -1898,5 +1898,47 @@ void Test::testSharedFormulaUpdateOnReplacement() m_pDoc->DeleteTab(0); } +void Test::testSharedFormulaDeleteTopCell() +{ + sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto calc. + + m_pDoc->InsertTab(0, "Test"); + + const char* pData[][2] = { + { "=SUM(B$1:B$2)", "1" }, + { "=SUM(B$1:B$2)", "2" } + }; + + insertRangeData( m_pDoc, ScAddress(0,0,0), pData, SAL_N_ELEMENTS(pData)); + + // Check that A1:A2 is a formula group. + const ScFormulaCell* pFC = m_pDoc->GetFormulaCell( ScAddress(0,0,0)); + CPPUNIT_ASSERT(pFC); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(2), pFC->GetSharedLength()); + + // Check results A1:A2. + CPPUNIT_ASSERT_EQUAL( 3.0, m_pDoc->GetValue( ScAddress(0,0,0))); + CPPUNIT_ASSERT_EQUAL( 3.0, m_pDoc->GetValue( ScAddress(0,1,0))); + + // Delete cell A1. + ScMarkData aMark; + aMark.SelectOneTable(0); + getDocShell().GetDocFunc().DeleteCell( ScAddress(0,0,0), aMark, InsertDeleteFlags::CONTENTS, false); + // Check it's gone. + CPPUNIT_ASSERT(!m_pDoc->GetFormulaCell( ScAddress(0,0,0))); + + // Check result A2. + CPPUNIT_ASSERT_EQUAL( 3.0, m_pDoc->GetValue( ScAddress(0,1,0))); + + // Replace B1 with 4. + m_pDoc->SetString( ScAddress(1,0,0), "4"); + + // Check result A2. + CPPUNIT_ASSERT_EQUAL( 6.0, m_pDoc->GetValue( ScAddress(0,1,0))); + + m_pDoc->DeleteTab(0); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |