sc/qa/unit/ucalc_formula.cxx | 17 +++++++++++++++-- sc/source/core/tool/queryparam.cxx | 14 ++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-)
New commits: commit 50708577850544920c746ebc382d47275452a761 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Thu Apr 24 19:42:30 2014 -0400 fdo#77039: Fill the match string even if the raw string is empty. And in case of an empty string, call svl::SharedString::getEmptyString() to get an empty shared string instance. Change-Id: I0923e59f03468790270de8ef22323c0cedad002f diff --git a/sc/source/core/tool/queryparam.cxx b/sc/source/core/tool/queryparam.cxx index c9d7e29..487a577 100644 --- a/sc/source/core/tool/queryparam.cxx +++ b/sc/source/core/tool/queryparam.cxx @@ -173,14 +173,16 @@ void ScQueryParamBase::FillInExcelSyntax( svl::SharedStringPool& rPool, const OUString& rStr, SCSIZE nIndex) { const OUString aCellStr = rStr; - if (!aCellStr.isEmpty()) - { - if ( nIndex >= maEntries.size() ) - Resize( nIndex+1 ); + if (nIndex >= maEntries.size()) + Resize(nIndex+1); - ScQueryEntry& rEntry = GetEntry(nIndex); - ScQueryEntry::Item& rItem = rEntry.GetQueryItem(); + ScQueryEntry& rEntry = GetEntry(nIndex); + ScQueryEntry::Item& rItem = rEntry.GetQueryItem(); + if (aCellStr.isEmpty()) + rItem.maString = svl::SharedString::getEmptyString(); + else + { rEntry.bDoQuery = true; // Operatoren herausfiltern if (aCellStr[0] == '<') commit 380631d0e24d8bf90a5431b3e3c5fb36f21dbcf0 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Thu Apr 24 19:15:38 2014 -0400 fdo#77039: Write test for this. Change-Id: If34291ffb9705c413a451091ac70d7f2c7ea8f63 diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx index 254962e..e3283db 100644 --- a/sc/qa/unit/ucalc_formula.cxx +++ b/sc/qa/unit/ucalc_formula.cxx @@ -2294,6 +2294,8 @@ void Test::testFuncN() void Test::testFuncCOUNTIF() { + sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on. + // COUNTIF (test case adopted from OOo i#36381) OUString aTabName("foo"); @@ -2345,7 +2347,6 @@ void Test::testFuncCOUNTIF() SCROW nRow = 20 + i; m_pDoc->SetString(0, nRow, 0, OUString::createFromAscii(aChecks[i].pFormula)); } - m_pDoc->CalcAll(); for (SCROW i = 0; i < nRows; ++i) { @@ -2368,11 +2369,23 @@ void Test::testFuncCOUNTIF() m_pDoc->SetString(0, 0, 0, OUString("=\"\"")); m_pDoc->SetString(0, 1, 0, OUString("=COUNTIF(A1;1)")); - m_pDoc->CalcAll(); double result = m_pDoc->GetValue(0, 1, 0); CPPUNIT_ASSERT_MESSAGE("We shouldn't count empty string as valid number.", result == 0.0); + // Another test case adopted from fdo#77039. + clearSheet(m_pDoc, 0); + + // Set formula cells with blank results in A1:A4. + for (SCROW i = 0; i <=3; ++i) + m_pDoc->SetString(ScAddress(0,i,0), "=\"\""); + + // Insert formula into A5 to count all cells with empty strings. + m_pDoc->SetString(ScAddress(0,4,0), "=COUNTIF(A1:A4;\"\""); + + // We should correctly count with empty string key. + CPPUNIT_ASSERT_EQUAL(4.0, m_pDoc->GetValue(ScAddress(0,4,0))); + m_pDoc->DeleteTab(0); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits