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

Kohei Yoshida kohei.yoshida at collabora.com
Thu Mar 13 07:26:12 PDT 2014


 sc/qa/unit/ucalc.cxx            |    6 ++++++
 sc/qa/unit/ucalc.hxx            |    1 +
 sc/qa/unit/ucalc_formula.cxx    |   18 +++++++++++++++++-
 sc/source/core/data/dociter.cxx |    4 +++-
 4 files changed, 27 insertions(+), 2 deletions(-)

New commits:
commit c078d5fef98ba77751b7a9593691d88dfc1c9ba1
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Mar 13 10:22:25 2014 -0400

    fdo#75642: Check the high position block correctly.
    
    Change-Id: I25deabf69e78c6e0354e8a528ab88891a30f9aec

diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx
index 481796c..3a1e7d9 100644
--- a/sc/source/core/data/dociter.cxx
+++ b/sc/source/core/data/dociter.cxx
@@ -1538,7 +1538,9 @@ public:
             // Move to the last position of the previous block.
             decBlock(aHiPos);
 
-            if (aHiPos.first == mrCells.begin())
+            // Check the row postion of the end of the previous block, and make sure it's valid.
+            SCROW nBlockEndRow = aHiPos.first->position + aHiPos.first->size - 1;
+            if (nBlockEndRow < nStartRow)
             {
                 mbValid = false;
                 return;
commit e5802954853a9ec64fb5fec917f8c3b2daba6526
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Mar 13 09:53:23 2014 -0400

    fdo#75642: Add test case for this.
    
    Change-Id: I220cc3aeac79325e7664461d3bd5219e9e1f04f7

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 3c809a8..ed5e894 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5575,6 +5575,12 @@ void Test::clearRange(ScDocument* pDoc, const ScRange& rRange)
         rRange.aEnd.Col(), rRange.aEnd.Row(), aMarkData, IDF_CONTENTS);
 }
 
+void Test::clearSheet(ScDocument* pDoc, SCTAB nTab)
+{
+    ScRange aRange(0,0,nTab,MAXCOL,MAXROW,nTab);
+    clearRange(pDoc, aRange);
+}
+
 void Test::copyToClip(ScDocument* pSrcDoc, const ScRange& rRange, ScDocument* pClipDoc)
 {
     ScClipParam aClipParam(rRange, false);
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index d17c8f5..68f5bc4 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -42,6 +42,7 @@ public:
     static bool insertRangeNames(ScDocument* pDoc, const RangeNameDef* p, const RangeNameDef* pEnd);
     static void printRange(ScDocument* pDoc, const ScRange& rRange, const char* pCaption);
     static void clearRange(ScDocument* pDoc, const ScRange& rRange);
+    static void clearSheet(ScDocument* pDoc, SCTAB nTab);
     static void copyToClip(ScDocument* pSrcDoc, const ScRange& rRange, ScDocument* pClipDoc);
     static void pasteFromClip(ScDocument* pDestDoc, const ScRange& rDestRange, ScDocument* pClipDoc);
     static ScUndoPaste* createUndoPaste(ScDocShell& rDocSh, const ScRange& rRange, ScDocument* pUndoDoc);
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 3fcc896..8bf8435 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -2458,7 +2458,7 @@ void Test::testFuncVLOOKUP()
     }
 
     // Clear the sheet and start over.
-    clearRange(m_pDoc, ScRange(0,0,0,MAXCOL,MAXROW,0));
+    clearSheet(m_pDoc, 0);
 
     // Lookup on sorted data intersparsed with empty cells.
 
@@ -2492,6 +2492,22 @@ void Test::testFuncVLOOKUP()
     CPPUNIT_ASSERT_EQUAL(OUString("Four"), m_pDoc->GetString(ScAddress(4,3,0)));
     CPPUNIT_ASSERT_EQUAL(OUString("Four"), m_pDoc->GetString(ScAddress(4,4,0)));
 
+    // Start over again.
+    clearSheet(m_pDoc, 0);
+
+    // Set A,B,....,G to A1:A7.
+    m_pDoc->SetString(ScAddress(0,0,0), "A");
+    m_pDoc->SetString(ScAddress(0,1,0), "B");
+    m_pDoc->SetString(ScAddress(0,2,0), "C");
+    m_pDoc->SetString(ScAddress(0,3,0), "D");
+    m_pDoc->SetString(ScAddress(0,4,0), "E");
+    m_pDoc->SetString(ScAddress(0,5,0), "F");
+    m_pDoc->SetString(ScAddress(0,6,0), "G");
+
+    // Set the formula in C1.
+    m_pDoc->SetString(ScAddress(2,0,0), "=VLOOKUP(\"C\";A1:A16;1)");
+    CPPUNIT_ASSERT_EQUAL(OUString("C"), m_pDoc->GetString(ScAddress(2,0,0)));
+
     m_pDoc->DeleteTab(0);
 }
 


More information about the Libreoffice-commits mailing list