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

Łukasz Hryniuk lukasz.hryniuk at wp.pl
Mon Aug 10 14:50:44 PDT 2015


 sc/qa/unit/ucalc.hxx             |    2 ++
 sc/qa/unit/ucalc_formula.cxx     |   30 ++++++++++++++++++++++++++++++
 sc/source/core/tool/interpr5.cxx |    2 +-
 3 files changed, 33 insertions(+), 1 deletion(-)

New commits:
commit fc71e5b4637ece8822e83c844d191f461b2f0177
Author: Łukasz Hryniuk <lukasz.hryniuk at wp.pl>
Date:   Sat Aug 8 20:50:04 2015 +0200

    tdf#89387 related tests for ScSumXMY2()
    
    Change-Id: Ia2ea65e05e0eec996f8ac485ee74b6daaa459178
    Reviewed-on: https://gerrit.libreoffice.org/17598
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 759d65d..7c54dc0 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -160,6 +160,7 @@ public:
     void testFuncSUM();
     void testFuncPRODUCT();
     void testFuncSUMPRODUCT();
+    void testFuncSUMXMY2();
     void testFuncMIN();
     void testFuncN();
     void testFuncCOUNTIF();
@@ -491,6 +492,7 @@ public:
     CPPUNIT_TEST(testFuncSUM);
     CPPUNIT_TEST(testFuncPRODUCT);
     CPPUNIT_TEST(testFuncSUMPRODUCT);
+    CPPUNIT_TEST(testFuncSUMXMY2);
     CPPUNIT_TEST(testFuncMIN);
     CPPUNIT_TEST(testFuncN);
     CPPUNIT_TEST(testFuncCOUNTIF);
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 38ac04a..720ff5e 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -3369,6 +3369,36 @@ void Test::testFuncSUMPRODUCT()
     m_pDoc->DeleteTab(0);
 }
 
+void Test::testFuncSUMXMY2()
+{
+    m_pDoc->InsertTab(0, "Test SumXMY2");
+
+    sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto recalc.
+
+    ScAddress aPos(0,0,0);
+    m_pDoc->SetString(aPos, "=SUMXMY2(B1:B3;C1:C3)");
+    CPPUNIT_ASSERT_EQUAL(0.0,  m_pDoc->GetValue(aPos));
+    m_pDoc->SetValue(ScAddress(1,0,0),  1.0); // B1
+    CPPUNIT_ASSERT_EQUAL(1.0,  m_pDoc->GetValue(aPos));
+    m_pDoc->SetValue(ScAddress(1,1,0),  2.0); // B2
+    CPPUNIT_ASSERT_EQUAL(5.0,  m_pDoc->GetValue(aPos));
+    m_pDoc->SetValue(ScAddress(1,2,0),  3.0); // B3
+    CPPUNIT_ASSERT_EQUAL(14.0,  m_pDoc->GetValue(aPos));
+    m_pDoc->SetValue(ScAddress(2,0,0), -1.0); // C1
+    CPPUNIT_ASSERT_EQUAL(17.0,  m_pDoc->GetValue(aPos));
+    m_pDoc->SetValue(ScAddress(2,1,0),  3.0); // C2
+    CPPUNIT_ASSERT_EQUAL(14.0,  m_pDoc->GetValue(aPos));
+    m_pDoc->SetValue(ScAddress(2,2,0),  1.0); // C3
+    CPPUNIT_ASSERT_EQUAL(9.0,  m_pDoc->GetValue(aPos));
+
+    double result = 0.0;
+    m_pDoc->SetString(0, 4, 0, OUString("=SUMXMY2({2;3;4};{4;3;2})"));
+    m_pDoc->GetValue(0, 4, 0, result);
+    CPPUNIT_ASSERT_MESSAGE("Calculation of SUMXMY2 with inline arrays failed", result == 8.0);
+
+    m_pDoc->DeleteTab(0);
+}
+
 void Test::testFuncMIN()
 {
     sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto recalc.
commit d5bff1225a6739e8369bacd8392686bd26630d2f
Author: Łukasz Hryniuk <lukasz.hryniuk at wp.pl>
Date:   Sat Aug 8 16:04:01 2015 +0200

    tdf#89387 related, fix SumSquare bug in SumMXMY2
    
    SumSquare returns IterateResult, which, because of rounding errors, store
    first value in mfFirst and rest in mfRest. They should be added to get
    the full sum of square of matrices difference.
    
    Change-Id: I9bc435801d94206960b0b4fe4a9149ef1abeb3be
    Reviewed-on: https://gerrit.libreoffice.org/17592
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx
index c3c746d..907ce8d 100644
--- a/sc/source/core/tool/interpr5.cxx
+++ b/sc/source/core/tool/interpr5.cxx
@@ -1791,7 +1791,7 @@ void ScInterpreter::ScSumXMY2()
     else
     {
         ScMatrix::IterateResult aRes = pResMat->SumSquare(false);
-        double fSum = aRes.mfRest;
+        double fSum = aRes.mfFirst + aRes.mfRest;
         PushDouble(fSum);
     }
 }


More information about the Libreoffice-commits mailing list