[Libreoffice-commits] core.git: sc/qa

Kohei Yoshida kohei.yoshida at collabora.com
Sat Feb 11 22:02:34 UTC 2017


 sc/qa/unit/ucalc.cxx |   52 +++++++++++++++++++++++++++++++++++++++++++++++++++
 sc/qa/unit/ucalc.hxx |    3 ++
 2 files changed, 55 insertions(+)

New commits:
commit 5fea81e4bfc2372563c0612f95406ca34fdd2c96
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Sat Feb 11 15:58:23 2017 -0500

    tdf#86470: add unit test for this.
    
    Change-Id: Ib93703d10fe1fff0898bc935222df7a0cfe20486
    Reviewed-on: https://gerrit.libreoffice.org/34160
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 86f04c4..884ae3f 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -710,6 +710,58 @@ void Test::testSelectionFunction()
     m_pDoc->DeleteTab(0);
 }
 
+void Test::testMarkedCellIteration()
+{
+    m_pDoc->InsertTab(0, "Test");
+
+    // Insert cells to A1, A5, B2 and C3.
+    m_pDoc->SetString(ScAddress(0,0,0), "California");
+    m_pDoc->SetValue(ScAddress(0,4,0), 1.2);
+    m_pDoc->SetEditText(ScAddress(1,1,0), "Boston");
+    m_pDoc->SetFormula(ScAddress(2,2,0), "=SUM(1,2,3)", m_pDoc->GetGrammar());
+
+    // Select A1:C5.
+    ScMarkData aMarkData;
+    aMarkData.SetMarkArea(ScRange(0,0,0,2,4,0));
+    aMarkData.MarkToMulti(); // TODO : we shouldn't have to do this.
+
+    struct Check
+    {
+        SCCOL mnCol;
+        SCROW mnRow;
+    };
+
+    const std::vector<Check> aChecks = {
+        { 0, 0 }, // A1
+        { 0, 4 }, // A5
+        { 1, 1 }, // B2
+        { 2, 2 }, // C3
+    };
+
+    SCROW nRow = -1; // Start from the imaginary row before A1.
+    SCCOL nCol = 0;
+
+    for (const Check& rCheck : aChecks)
+    {
+        bool bFound = m_pDoc->GetNextMarkedCell(nCol, nRow, 0, aMarkData);
+        if (!bFound)
+        {
+            std::ostringstream os;
+            os << ScAddress(rCheck.mnCol, rCheck.mnRow, 0).GetColRowString() << " was expected, but not found.";
+            CPPUNIT_FAIL(os.str().data());
+        }
+
+        CPPUNIT_ASSERT_EQUAL(rCheck.mnRow, nRow);
+        CPPUNIT_ASSERT_EQUAL(rCheck.mnCol, nCol);
+    }
+
+    // No more marked cells on this sheet.
+    bool bFound = m_pDoc->GetNextMarkedCell(nCol, nRow, 0, aMarkData);
+    CPPUNIT_ASSERT(!bFound);
+
+    m_pDoc->DeleteTab(0);
+}
+
 void Test::testCopyToDocument()
 {
     CPPUNIT_ASSERT_MESSAGE ("failed to insert sheet", m_pDoc->InsertTab (0, "src"));
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index fc956db..1715447 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -123,6 +123,8 @@ public:
      */
     void testSelectionFunction();
 
+    void testMarkedCellIteration();
+
     void testFormulaCreateStringFromTokens();
     void testFormulaParseReference();
     void testFetchVectorRefArray();
@@ -502,6 +504,7 @@ public:
     CPPUNIT_TEST(testRowForHeight);
     CPPUNIT_TEST(testDataEntries);
     CPPUNIT_TEST(testSelectionFunction);
+    CPPUNIT_TEST(testMarkedCellIteration);
     CPPUNIT_TEST(testFormulaCreateStringFromTokens);
     CPPUNIT_TEST(testFormulaParseReference);
     CPPUNIT_TEST(testFetchVectorRefArray);


More information about the Libreoffice-commits mailing list