More fine-grained check of data series labels in the unit test.
(cherry picked from commit bdad8d9051c207b2eff0d5a7842da83e6119a600)
Change-Id: I6b23126816bb114407f2b75545094bc297ee7cc3
Signed-off-by: Andras Timar <andras.timar@collabora.com>
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index 9ca95b6..1441903 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -244,10 +244,17 @@ void Chart2ImportTest::testDOCChartSeries()
void Chart2ImportTest::testDOCXChartSeries()
{
load("/chart2/qa/extras/data/docx/", "chart.docx");
uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent);
CPPUNIT_ASSERT_EQUAL(OUString("Series 1"), seriesList[0]);
CPPUNIT_ASSERT_EQUAL(OUString("Series 2"), seriesList[1]);
CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), seriesList[2]);
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0, 0);
CPPUNIT_ASSERT(xCT.is());
std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
CPPUNIT_ASSERT_EQUAL(OUString("Series 1"), aLabels[0][0].get<OUString>());
CPPUNIT_ASSERT_EQUAL(OUString("Series 2"), aLabels[1][0].get<OUString>());
CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), aLabels[2][0].get<OUString>());
}
void Chart2ImportTest::testPPTChartSeries()
@@ -264,11 +271,18 @@ void Chart2ImportTest::testPPTChartSeries()
void Chart2ImportTest::testPPTXChartSeries()
{
//test chart series names for pptx
uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions("/chart2/qa/extras/data/pptx/", "chart.pptx");
CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[1]);
CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[2]);
CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[3]);
load("/chart2/qa/extras/data/pptx/", "chart.pptx");
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0, 0);
CPPUNIT_ASSERT(xCT.is());
std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), aLabels[0][0].get<OUString>());
CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), aLabels[1][0].get<OUString>());
CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), aLabels[2][0].get<OUString>());
}
void Chart2ImportTest::testODPChartSeries()
diff --git a/chart2/qa/extras/charttest.hxx b/chart2/qa/extras/charttest.hxx
index 637cfe0..53a465b 100644
--- a/chart2/qa/extras/charttest.hxx
+++ b/chart2/qa/extras/charttest.hxx
@@ -50,6 +50,10 @@ public:
void reload( const OUString& rFilterName );
uno::Sequence < OUString > getImpressChartColumnDescriptions( const char* pDir, const char* pName );
uno::Reference<chart::XChartDocument> getChartDocFromWriter( sal_Int32 nShape );
uno::Reference<chart::XChartDocument> getChartDocFromDrawImpress( sal_Int32 nPage, sal_Int32 nShape );
virtual void setUp();
virtual void tearDown();
protected:
@@ -205,4 +209,89 @@ uno::Sequence < OUString > ChartTest::getImpressChartColumnDescriptions( const c
return seriesList;
}
uno::Reference<chart::XChartDocument> ChartTest::getChartDocFromWriter( sal_Int32 nShape )
{
Reference<drawing::XDrawPageSupplier> xPageSupp(mxComponent, uno::UNO_QUERY);
CPPUNIT_ASSERT(xPageSupp.is());
Reference<drawing::XDrawPage> xPage = xPageSupp->getDrawPage();
CPPUNIT_ASSERT(xPage.is());
Reference<beans::XPropertySet> xShapeProps(xPage->getByIndex(nShape), uno::UNO_QUERY);
CPPUNIT_ASSERT(xShapeProps.is());
Reference<frame::XModel> xDocModel;
xShapeProps->getPropertyValue("Model") >>= xDocModel;
CPPUNIT_ASSERT(xDocModel.is());
uno::Reference<chart::XChartDocument> xChartDoc(xDocModel, uno::UNO_QUERY);
return xChartDoc;
}
uno::Reference<chart::XChartDocument> ChartTest::getChartDocFromDrawImpress(
sal_Int32 nPage, sal_Int32 nShape )
{
uno::Reference<chart::XChartDocument> xEmpty;
uno::Reference<drawing::XDrawPagesSupplier> xPages(mxComponent, uno::UNO_QUERY);
if (!xPages.is())
return xEmpty;
uno::Reference<drawing::XDrawPage> xPage(
xPages->getDrawPages()->getByIndex(nPage), uno::UNO_QUERY_THROW);
if (!xPage.is())
return xEmpty;
uno::Reference<beans::XPropertySet> xShapeProps(xPage->getByIndex(nShape), uno::UNO_QUERY);
if (!xShapeProps.is())
return xEmpty;
uno::Reference<frame::XModel> xDocModel;
xShapeProps->getPropertyValue("Model") >>= xDocModel;
if (!xDocModel.is())
return xEmpty;
uno::Reference<chart::XChartDocument> xChartDoc(xDocModel, uno::UNO_QUERY);
return xChartDoc;
}
std::vector<uno::Sequence<uno::Any> > getDataSeriesLabelsFromChartType( const Reference<chart2::XChartType>& xCT )
{
OUString aLabelRole = xCT->getRoleOfSequenceForSeriesLabel();
Reference<chart2::XDataSeriesContainer> xDSCont(xCT, uno::UNO_QUERY);
CPPUNIT_ASSERT(xDSCont.is());
Sequence<uno::Reference<chart2::XDataSeries> > aDataSeriesSeq = xDSCont->getDataSeries();
std::vector<uno::Sequence<uno::Any> > aRet;
for (sal_Int32 i = 0; i < aDataSeriesSeq.getLength(); ++i)
{
uno::Reference<chart2::data::XDataSource> xDSrc(aDataSeriesSeq[i], uno::UNO_QUERY);
CPPUNIT_ASSERT(xDSrc.is());
uno::Sequence<Reference<chart2::data::XLabeledDataSequence> > aDataSeqs = xDSrc->getDataSequences();
for (sal_Int32 j = 0; j < aDataSeqs.getLength(); ++j)
{
Reference<chart2::data::XDataSequence> xValues = aDataSeqs[j]->getValues();
CPPUNIT_ASSERT(xValues.is());
Reference<beans::XPropertySet> xPropSet(xValues, uno::UNO_QUERY);
if (!xPropSet.is())
continue;
OUString aRoleName;
xPropSet->getPropertyValue("Role") >>= aRoleName;
if (aRoleName == aLabelRole)
{
Reference<chart2::data::XLabeledDataSequence> xLabel = aDataSeqs[j];
CPPUNIT_ASSERT(xLabel.is());
Reference<chart2::data::XDataSequence> xDS2 = xLabel->getLabel();
CPPUNIT_ASSERT(xDS2.is());
uno::Sequence<uno::Any> aData = xDS2->getData();
aRet.push_back(aData);
}
}
}
return aRet;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */