summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2017-04-02 11:32:18 +0200
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2017-04-02 11:32:18 +0200
commit2f9a1a499dd4909acb621cbc7976a59c031e2a56 (patch)
treef9dcbd25576f4652c4d30e705428a7c213ba3188
parentchart2: simplify pivot chart tests (diff)
downloadcore-feature/pivotcharts.tar.gz
core-feature/pivotcharts.zip
fix crash when there are no row fields + test feature/pivotcharts
Change-Id: I56852e953e32767fcf7d93f5cfcfd0fe7642443a
-rw-r--r--chart2/qa/extras/PivotChartTest.cxx38
-rw-r--r--sc/source/ui/unoobj/PivotChartDataProvider.cxx10
2 files changed, 44 insertions, 4 deletions
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);