summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-04-28 13:23:12 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-04-28 13:45:47 -0400
commita4a5f67008a931508a9d963f6b95db9cb9d45aef (patch)
treeb1463a678ad93b315a7d29d1de1c5b777f4e2395
parent4a60f9387ddd832f7c164102b76351e5e520d920 (diff)
fdo#77969: Write test for this corner case.
Change-Id: Iac8a3d0693456a380d3290c7be06136b04b50390
-rw-r--r--sc/qa/unit/ucalc.hxx2
-rw-r--r--sc/qa/unit/ucalc_formula.cxx38
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");