summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDennis Francis <dennis.francis@collabora.com>2019-10-25 14:38:27 +0530
committerDennis Francis <dennis.francis@collabora.com>2019-10-26 15:49:56 +0200
commit6e25d91992f37ec5c215b16f5c2e3f7c60405e0c (patch)
tree8e886cb21b06ff8bb577baac038e8b23f4cec269
parentd4053e492af3815870e1b4e765486d2aaa29179d (diff)
Add unit test for adjacent formula-groups with...
indirect intergroup dependency. Change-Id: If8b77116855806d0ba3cdcef8ff8aa17e581d9f9 Reviewed-on: https://gerrit.libreoffice.org/81491 Tested-by: Jenkins Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
-rw-r--r--sc/qa/unit/parallelism.cxx55
1 files changed, 55 insertions, 0 deletions
diff --git a/sc/qa/unit/parallelism.cxx b/sc/qa/unit/parallelism.cxx
index aebd1575b5c3..f9fd1ef4b5b9 100644
--- a/sc/qa/unit/parallelism.cxx
+++ b/sc/qa/unit/parallelism.cxx
@@ -41,6 +41,7 @@ public:
void testFormulaGroupSpanEval();
void testFormulaGroupSpanEvalNonGroup();
void testArrayFormulaGroup();
+ void testDependentFormulaGroupCollection();
CPPUNIT_TEST_SUITE(ScParallelismTest);
CPPUNIT_TEST(testSUMIFS);
@@ -55,6 +56,7 @@ public:
CPPUNIT_TEST(testFormulaGroupSpanEval);
CPPUNIT_TEST(testFormulaGroupSpanEvalNonGroup);
CPPUNIT_TEST(testArrayFormulaGroup);
+ CPPUNIT_TEST(testDependentFormulaGroupCollection);
CPPUNIT_TEST_SUITE_END();
private:
@@ -698,6 +700,59 @@ void ScParallelismTest::testArrayFormulaGroup()
m_pDoc->DeleteTab(0);
}
+void ScParallelismTest::testDependentFormulaGroupCollection()
+{
+ sc::AutoCalcSwitch aACSwitch(*m_pDoc, false);
+ m_pDoc->InsertTab(0, "1");
+
+ OUString aFormula;
+
+ for (size_t nRow = 0; nRow < 16; ++nRow)
+ {
+ m_pDoc->SetValue(0, nRow, 0, 1.0); // A1:A16 <== 1
+
+ if (nRow > 7)
+ continue;
+
+ // Formula-group in B1:B8 with first cell = "=SUM($A1:$A1024)"
+ aFormula = "=SUM($A" + OUString::number(1 + nRow) +
+ ":$A" + OUString::number(1024 + nRow) + ")";
+ m_pDoc->SetFormula(ScAddress(1, nRow, 0), aFormula,
+ formula::FormulaGrammar::GRAM_NATIVE_UI);
+
+ // Formula-group in C1:C8 with first cell = "=SUM($K1:$K1024)"
+ aFormula = "=SUM($K" + OUString::number(1 + nRow) +
+ ":$K" + OUString::number(1024 + nRow) + ")";
+ m_pDoc->SetFormula(ScAddress(2, nRow, 0), aFormula,
+ formula::FormulaGrammar::GRAM_NATIVE_UI);
+
+ // Formula-group in D1:D8 with first cell = "=SUM($A1:$A1024) - $A2"
+ aFormula = "=SUM($A" + OUString::number(1 + nRow) +
+ ":$A" + OUString::number(1024 + nRow) + ") - $A" + OUString::number(2 + nRow);
+ m_pDoc->SetFormula(ScAddress(3, nRow, 0), aFormula,
+ formula::FormulaGrammar::GRAM_NATIVE_UI);
+
+ // Formula-group in K1:K8 with first cell = "=SUM($B1:$B1024)"
+ aFormula = "=SUM($B" + OUString::number(1 + nRow) +
+ ":$B" + OUString::number(1024 + nRow) + ")";
+ m_pDoc->SetFormula(ScAddress(10, nRow, 0), aFormula,
+ formula::FormulaGrammar::GRAM_NATIVE_UI);
+ }
+
+ m_xDocShell->DoHardRecalc();
+
+ size_t nExpected[8] = { 408, 308, 224, 155, 100, 58, 28, 9 };
+
+ OString aMsg;
+ for (size_t nRow = 0; nRow < 8; ++nRow)
+ {
+ aMsg = "Value at Cell C" + OString::number(nRow+1);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(aMsg.getStr(), nExpected[nRow], static_cast<size_t>(m_pDoc->GetValue(2, nRow, 0)));
+ }
+
+ m_pDoc->DeleteTab(0);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(ScParallelismTest);
CPPUNIT_PLUGIN_IMPLEMENT();