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

Kohei Yoshida kohei.yoshida at collabora.com
Thu Apr 10 21:44:24 PDT 2014


 sc/qa/unit/ucalc_sharedformula.cxx |    8 ++++++++
 sc/source/core/data/column4.cxx    |   19 +++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

New commits:
commit 66c6a3bfc9cd89c562107d3d369b3d82bae94d68
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Apr 11 00:43:18 2014 -0400

    fdo#77300: Don't re-compile formulas when the hybrid formula is not there.
    
    Change-Id: I9b0f8d031fec08bb8d92333ff67074fdc739e034

diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx
index c658124..7d87177 100644
--- a/sc/source/core/data/column4.cxx
+++ b/sc/source/core/data/column4.cxx
@@ -661,16 +661,19 @@ public:
             ScFormulaCell* pCell = rEntry.mpCell;
             OUString aFormula = pCell->GetHybridFormula();
 
-            // Create token array from formula string.
-            ScCompiler aComp(mrCompileFormulaCxt, pCell->aPos);
-            ScTokenArray* pNewCode = aComp.CompileString(aFormula);
+            if (!aFormula.isEmpty())
+            {
+                // Create token array from formula string.
+                ScCompiler aComp(mrCompileFormulaCxt, pCell->aPos);
+                ScTokenArray* pNewCode = aComp.CompileString(aFormula);
 
-            // Generate RPN tokens.
-            ScCompiler aComp2(mpDoc, pCell->aPos, *pNewCode);
-            aComp2.CompileTokenArray();
+                // Generate RPN tokens.
+                ScCompiler aComp2(mpDoc, pCell->aPos, *pNewCode);
+                aComp2.CompileTokenArray();
 
-            pCell->SetCode(pNewCode);
-            pCell->SetDirty();
+                pCell->SetCode(pNewCode);
+                pCell->SetDirty();
+            }
         }
     }
 };
commit bdc8d5f9e712fce35098352b8c1d9028f4095d8c
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Apr 11 00:34:37 2014 -0400

    fdo#77300: Add test for this.
    
    Change-Id: Ib870d8f115b074a4ad80ee6910f92ba8d4b0c01e

diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index acb249a..603e26e 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -1222,6 +1222,9 @@ void Test::testSharedFormulaUpdateOnNamedRangeChange()
     m_pDoc->SetString(ScAddress(1,1,0), "=SUM(MyRange)");
     m_pDoc->SetString(ScAddress(1,2,0), "=SUM(MyRange)");
 
+    // Set single formula with no named range to B5.
+    m_pDoc->SetString(ScAddress(1,4,0), "=ROW()");
+
     // B1:B3 should be grouped.
     ScFormulaCell* pFC = m_pDoc->GetFormulaCell(ScAddress(1,0,0));
     CPPUNIT_ASSERT(pFC);
@@ -1232,6 +1235,8 @@ void Test::testSharedFormulaUpdateOnNamedRangeChange()
     CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(1,1,0)));
     CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(1,2,0)));
 
+    CPPUNIT_ASSERT_EQUAL(5.0, m_pDoc->GetValue(ScAddress(1,4,0)));
+
     // Set a single formula to C1.
     m_pDoc->SetString(ScAddress(2,0,0), "=AVERAGE(MyRange)");
     pFC = m_pDoc->GetFormulaCell(ScAddress(2,0,0));
@@ -1260,6 +1265,8 @@ void Test::testSharedFormulaUpdateOnNamedRangeChange()
         CPPUNIT_FAIL("Wrong formula!");
     if (!checkFormula(*m_pDoc, ScAddress(1,2,0), "SUM(MyRange)"))
         CPPUNIT_FAIL("Wrong formula!");
+    if (!checkFormula(*m_pDoc, ScAddress(1,4,0), "ROW()"))
+        CPPUNIT_FAIL("Wrong formula!");
     if (!checkFormula(*m_pDoc, ScAddress(2,0,0), "AVERAGE(MyRange)"))
         CPPUNIT_FAIL("Wrong formula!");
 
@@ -1267,6 +1274,7 @@ void Test::testSharedFormulaUpdateOnNamedRangeChange()
     CPPUNIT_ASSERT_EQUAL(10.0, m_pDoc->GetValue(ScAddress(1,0,0)));
     CPPUNIT_ASSERT_EQUAL(10.0, m_pDoc->GetValue(ScAddress(1,1,0)));
     CPPUNIT_ASSERT_EQUAL(10.0, m_pDoc->GetValue(ScAddress(1,2,0)));
+    CPPUNIT_ASSERT_EQUAL(5.0, m_pDoc->GetValue(ScAddress(1,4,0)));
     CPPUNIT_ASSERT_EQUAL(2.5, m_pDoc->GetValue(ScAddress(2,0,0)));
 
     m_pDoc->DeleteTab(0);


More information about the Libreoffice-commits mailing list