[Libreoffice-commits] core.git: Branch 'feature/pivotcharts' - chart2/qa sc/source

Tomaž Vajngerl tomaz.vajngerl at collabora.co.uk
Sun Apr 2 09:33:09 UTC 2017


 chart2/qa/extras/PivotChartTest.cxx            |   38 +++++++++++++++++++++++++
 sc/source/ui/unoobj/PivotChartDataProvider.cxx |   10 +++---
 2 files changed, 44 insertions(+), 4 deletions(-)

New commits:
commit 2f9a1a499dd4909acb621cbc7976a59c031e2a56
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Sun Apr 2 11:32:18 2017 +0200

    fix crash when there are no row fields + test
    
    Change-Id: I56852e953e32767fcf7d93f5cfcfd0fe7642443a

diff --git a/chart2/qa/extras/PivotChartTest.cxx b/chart2/qa/extras/PivotChartTest.cxx
index 4cf872599d18..245f5e1ac3a5 100644
--- a/chart2/qa/extras/PivotChartTest.cxx
+++ b/chart2/qa/extras/PivotChartTest.cxx
@@ -64,7 +64,11 @@ bool lclCheckSequence(std::vector<double> const & reference,
                       double delta)
 {
     if (reference.size() != size_t(values.getLength()))
+    {
+        printf ("Sequence size differs - reference is %ld but actual is %ld\n",
+                reference.size(), size_t(values.getLength()));
         return false;
+    }
 
     for (size_t i = 0; i < reference.size(); ++i)
     {
@@ -233,6 +237,40 @@ void PivotChartTest::testChangePivotTable()
 
         CPPUNIT_ASSERT_EQUAL(aExpectedLabel, lclGetLabel(xChartDoc, 2));
     }
+
+    // Modify the pivot table
+    {
+        uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, "DataPilot1", mxComponent);
+        uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor(xDataPilotTable, UNO_QUERY_THROW);
+
+        lclModifyOrientation(xDataPilotDescriptor, "Service Month", sheet::DataPilotFieldOrientation_HIDDEN);
+    }
+
+    // Check the pivot chart again as we expect it has been updated when we updated the pivot table
+
+    CPPUNIT_ASSERT(xChartDoc.is());
+
+    // Check the first data series
+    {
+        std::vector<double> aReference { 10162.033139 };
+        xSequence = getDataSequenceFromDocByRole(xChartDoc, "values-y", 0)->getData();
+        CPPUNIT_ASSERT(lclCheckSequence(aReference, xSequence, 1E-3));
+        CPPUNIT_ASSERT_EQUAL(OUString("Big"), lclGetLabel(xChartDoc, 0));
+    }
+    // Check the second data series
+    {
+        std::vector<double> aReference { 16614.523063 };
+        xSequence = getDataSequenceFromDocByRole(xChartDoc, "values-y", 1)->getData();
+        CPPUNIT_ASSERT(lclCheckSequence(aReference, xSequence, 1E-3));
+        CPPUNIT_ASSERT_EQUAL(OUString("Medium"), lclGetLabel(xChartDoc, 1));
+    }
+    // Check the third data series
+    {
+        std::vector<double> aReference { 27944.146101 };
+        xSequence = getDataSequenceFromDocByRole(xChartDoc, "values-y", 2)->getData();
+        CPPUNIT_ASSERT(lclCheckSequence(aReference, xSequence, 1E-3));
+        CPPUNIT_ASSERT_EQUAL(OUString("Small"), lclGetLabel(xChartDoc, 2));
+    }
 }
 
 CPPUNIT_TEST_SUITE_REGISTRATION(PivotChartTest);
diff --git a/sc/source/ui/unoobj/PivotChartDataProvider.cxx b/sc/source/ui/unoobj/PivotChartDataProvider.cxx
index 954453193387..7fe660c4a77d 100644
--- a/sc/source/ui/unoobj/PivotChartDataProvider.cxx
+++ b/sc/source/ui/unoobj/PivotChartDataProvider.cxx
@@ -564,10 +564,12 @@ uno::Reference<chart2::data::XDataSource> PivotChartDataProvider::createPivotCha
 
     {
         std::vector<PivotChartItem> aFirstCategories;
-        std::copy (m_aCategoriesColumnOrientation[0].begin(),
-                   m_aCategoriesColumnOrientation[0].end(),
-                   std::back_inserter(aFirstCategories));
-
+        if (!m_aCategoriesColumnOrientation.empty())
+        {
+            std::copy(m_aCategoriesColumnOrientation[0].begin(),
+                      m_aCategoriesColumnOrientation[0].end(),
+                      std::back_inserter(aFirstCategories));
+        }
         uno::Reference<chart2::data::XLabeledDataSequence> xResult = newLabeledDataSequence();
         setLabeledDataSequenceValues(xResult, "categories", "Categories", aFirstCategories);
         aLabeledSequences.push_back(xResult);


More information about the Libreoffice-commits mailing list