diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-04-28 13:23:12 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-04-28 13:45:47 -0400 |
commit | a4a5f67008a931508a9d963f6b95db9cb9d45aef (patch) | |
tree | b1463a678ad93b315a7d29d1de1c5b777f4e2395 /sc | |
parent | 4a60f9387ddd832f7c164102b76351e5e520d920 (diff) |
fdo#77969: Write test for this corner case.
Change-Id: Iac8a3d0693456a380d3290c7be06136b04b50390
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/ucalc.hxx | 2 | ||||
-rw-r--r-- | sc/qa/unit/ucalc_formula.cxx | 38 |
2 files changed, 40 insertions, 0 deletions
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx index 71b33a704c1f..9a81c5e40e20 100644 --- a/sc/qa/unit/ucalc.hxx +++ b/sc/qa/unit/ucalc.hxx @@ -130,6 +130,7 @@ public: void testFuncSUM(); void testFuncPRODUCT(); void testFuncSUMPRODUCT(); + void testFuncMIN(); void testFuncN(); void testFuncCOUNTIF(); void testFuncNUMBERVALUE(); @@ -381,6 +382,7 @@ public: CPPUNIT_TEST(testFuncSUM); CPPUNIT_TEST(testFuncPRODUCT); CPPUNIT_TEST(testFuncSUMPRODUCT); + CPPUNIT_TEST(testFuncMIN); CPPUNIT_TEST(testFuncN); CPPUNIT_TEST(testFuncCOUNTIF); CPPUNIT_TEST(testFuncNUMBERVALUE); diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx index b2caf2244c22..de1fd1194cb4 100644 --- a/sc/qa/unit/ucalc_formula.cxx +++ b/sc/qa/unit/ucalc_formula.cxx @@ -2257,6 +2257,44 @@ void Test::testFuncSUMPRODUCT() m_pDoc->DeleteTab(0); } +void Test::testFuncMIN() +{ + sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto recalc. + m_pDoc->InsertTab(0, "Formula"); + + // A1:A2 + m_pDoc->SetString(ScAddress(0,0,0), "a"); + m_pDoc->SetString(ScAddress(0,1,0), "b"); + + // B1:B2 + m_pDoc->SetValue(ScAddress(1,0,0), 1.0); + m_pDoc->SetValue(ScAddress(1,1,0), 2.0); + + // Matrix in C1:C2. + ScMarkData aMark; + aMark.SelectOneTable(0); + m_pDoc->InsertMatrixFormula(2, 0, 2, 1, aMark, "=MIN(IF(A1:A2=\"c\";B1:B2))"); + + // Formula cell in C1:C2 should be a 1x2 matrix array. + ScFormulaCell* pFC = m_pDoc->GetFormulaCell(ScAddress(2,0,0)); + CPPUNIT_ASSERT(pFC); + CPPUNIT_ASSERT_MESSAGE("This formula should be an array.", pFC->GetMatrixFlag() == MM_FORMULA); + + SCCOL nCols; + SCROW nRows; + pFC->GetMatColsRows(nCols, nRows); + CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(1), nCols); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(2), nRows); + + CPPUNIT_ASSERT_MESSAGE("Formula in C1 is invalid.", m_pDoc->GetErrCode(ScAddress(2,0,0)) == 0); + CPPUNIT_ASSERT_MESSAGE("Formula in C2 is invalid.", m_pDoc->GetErrCode(ScAddress(2,1,0)) == 0); + + CPPUNIT_ASSERT_EQUAL(0.0, m_pDoc->GetValue(ScAddress(2,0,0))); + CPPUNIT_ASSERT_EQUAL(0.0, m_pDoc->GetValue(ScAddress(2,1,0))); + + m_pDoc->DeleteTab(0); +} + void Test::testFuncN() { OUString aTabName("foo"); |