sc/qa/unit/ucalc.cxx | 43 +++++++++++++++++++++++++++++++++++++++++ sc/qa/unit/ucalc.hxx | 2 + sc/source/core/data/column.cxx | 2 - 3 files changed, 46 insertions(+), 1 deletion(-)
New commits: commit 054213e86b8f3b1084474b0447cc7ffaf82178c5 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Tue May 27 14:47:24 2014 -0400 fdo#78976: Correct way to determine the end position for matrix check. Change-Id: Ifd6acd85a9bf33742cb62327a3b8a4320f35d0f3 diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 485f5e8..7d6ebb1 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -154,7 +154,7 @@ sal_uInt16 ScColumn::GetBlockMatrixEdges( SCROW nRow1, SCROW nRow2, sal_uInt16 n } size_t nRowsToRead = nRow2 - nRow + 1; - size_t nEnd = std::min(it->size, nRowsToRead); + size_t nEnd = std::min(it->size, nOffset+nRowsToRead); // last row + 1 sc::formula_block::const_iterator itCell = sc::formula_block::begin(*it->data); std::advance(itCell, nOffset); for (size_t i = nOffset; i < nEnd; ++itCell, ++i) commit 175519643daa87ba3e65eb4b52df3c8a2f60ac64 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Tue May 27 14:47:05 2014 -0400 fdo#78976: Test for this. Change-Id: I454e29c2cdf0857d329d84000d79973489cebb41 diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index aa7ac1a..3396446 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -64,6 +64,8 @@ #include <globalnames.hxx> #include <inputopt.hxx> +#include <editable.hxx> + #include <formula/IFunctionDescription.hxx> #include <basegfx/polygon/b2dpolygon.hxx> @@ -2196,6 +2198,47 @@ void Test::testEnterMixedMatrix() m_pDoc->DeleteTab(0); } +void Test::testMatrixEditable() +{ + sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on. + + m_pDoc->InsertTab(0, "Test"); + + // Values in A1:B1. + m_pDoc->SetValue(ScAddress(0,0,0), 1.0); + m_pDoc->SetValue(ScAddress(1,0,0), 2.0); + + // A2 is a normal formula. + m_pDoc->SetString(ScAddress(0,1,0), "=5"); + + // A3:A4 is a matrix. + ScRange aMatRange(0,2,0,0,3,0); + ScMarkData aMark; + aMark.SetMarkArea(aMatRange); + m_pDoc->InsertMatrixFormula(0, 2, 0, 3, aMark, "=TRANSPOSE(A1:B1)", NULL); + + // Check their values. + CPPUNIT_ASSERT_EQUAL(5.0, m_pDoc->GetValue(ScAddress(0,1,0))); + CPPUNIT_ASSERT_EQUAL(1.0, m_pDoc->GetValue(ScAddress(0,2,0))); + CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(0,3,0))); + + // Make sure A3:A4 is a matrix. + ScFormulaCell* pFC = m_pDoc->GetFormulaCell(ScAddress(0,2,0)); + CPPUNIT_ASSERT(pFC); + CPPUNIT_ASSERT_MESSAGE("A3 should be matrix origin.", pFC->GetMatrixFlag() == MM_FORMULA); + + pFC = m_pDoc->GetFormulaCell(ScAddress(0,3,0)); + CPPUNIT_ASSERT(pFC); + CPPUNIT_ASSERT_MESSAGE("A4 should be matrix reference.", pFC->GetMatrixFlag() == MM_REFERENCE); + + // Check to make sure A3:A4 combined is editable. + ScEditableTester aTester; + aTester.TestSelection(m_pDoc, aMark); + CPPUNIT_ASSERT(aTester.IsEditable()); + + m_pDoc->DeleteTab(0); +} + void Test::testCellCopy() { m_pDoc->InsertTab(0, "TestTab"); diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx index 39862ee..73181ee 100644 --- a/sc/qa/unit/ucalc.hxx +++ b/sc/qa/unit/ucalc.hxx @@ -195,6 +195,7 @@ public: void testCSV(); void testMatrix(); void testEnterMixedMatrix(); + void testMatrixEditable(); /** * Basic test for pivot tables. @@ -442,6 +443,7 @@ public: CPPUNIT_TEST(testCSV); CPPUNIT_TEST(testMatrix); CPPUNIT_TEST(testEnterMixedMatrix); + CPPUNIT_TEST(testMatrixEditable); CPPUNIT_TEST(testPivotTable); CPPUNIT_TEST(testPivotTableLabels); CPPUNIT_TEST(testPivotTableDateLabels); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits