chart2/qa/extras/chart2export.cxx | 103 +++++++++++++++++++++ chart2/qa/extras/data/docx/data-label-borders.docx |binary 2 files changed, 103 insertions(+)
New commits: commit c2fd8c4492e9eb12375f78ceb188c87d8fac41b7 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Sat Jul 26 23:07:47 2014 -0400 bnc#885825: Write test for this. Originally it was a pptx document, but switched to docx because reloading an impress document in cppunit currently mysteriously crashes. Change-Id: I3e9ba6b9a4dc7d3c0ca1d59a073dc8a4cca4008c diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index b92e565..0c31f22 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -17,6 +17,7 @@ #include <com/sun/star/packages/zip/ZipFileAccess.hpp> #include <com/sun/star/text/XTextDocument.hpp> #include <com/sun/star/text/XTextFramesSupplier.hpp> +#include <com/sun/star/drawing/LineStyle.hpp> #include <unotools/ucbstreamhelper.hxx> #include <rtl/strbuf.hxx> @@ -68,6 +69,7 @@ public: void testFdo78290ScatterChartMarkerX(); void testFdo78290CombinationChartMarkerX(); void testAxisNumberFormatODS(); + void testDataLabelBordersDOCX(); CPPUNIT_TEST_SUITE(Chart2ExportTest); CPPUNIT_TEST(test); @@ -102,6 +104,7 @@ public: CPPUNIT_TEST(testFdo78290ScatterChartMarkerX); CPPUNIT_TEST(testFdo78290CombinationChartMarkerX); CPPUNIT_TEST(testAxisNumberFormatODS); + CPPUNIT_TEST(testDataLabelBordersDOCX); CPPUNIT_TEST_SUITE_END(); protected: @@ -688,6 +691,106 @@ void Chart2ExportTest::testAxisNumberFormatODS() aTest.check(xChartDoc); } +void Chart2ExportTest::testDataLabelBordersDOCX() +{ + struct Check + { + sal_Int32 mnIndex; + css::drawing::LineStyle meStyle; + sal_Int32 mnColor; + }; + + struct + { + /** + * Chart 1 has 4 bars of which 1st and 3rd have labels with borders + * around them. + */ + void checkObject1( const Reference<chart2::XChartDocument>& xChartDoc ) + { + CPPUNIT_ASSERT(xChartDoc.is()); + + Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0); + CPPUNIT_ASSERT(xDataSeries.is()); + + // Check to make sure that data points 0 and 2 have local properties. + Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY); + CPPUNIT_ASSERT(xPropSet.is()); + + Sequence<sal_Int32> aIndices; + xPropSet->getPropertyValue("AttributedDataPoints") >>= aIndices; + CPPUNIT_ASSERT_MESSAGE("There should be 2 data points with local properties.", aIndices.getLength() == 2); + CPPUNIT_ASSERT(aIndices[0] == 0); + CPPUNIT_ASSERT(aIndices[1] == 2); + + const Check aDataPoints[] = + { + { 0, css::drawing::LineStyle_SOLID, 0x00FFFF00 }, // solid yellow + { 2, css::drawing::LineStyle_SOLID, 0x00FF0000 } // solid red + }; + + for (size_t i = 0, n = SAL_N_ELEMENTS(aDataPoints); i < n; ++i) + { + xPropSet = xDataSeries->getDataPointByIndex(aDataPoints[i].mnIndex); + CPPUNIT_ASSERT(xPropSet.is()); + + css::drawing::LineStyle eLineStyle = css::drawing::LineStyle_NONE; + xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_STYLE) >>= eLineStyle; + CPPUNIT_ASSERT(eLineStyle == aDataPoints[i].meStyle); + + sal_Int32 nWidth = -1; + xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_WIDTH) >>= nWidth; + CPPUNIT_ASSERT(nWidth > 0); + + sal_Int32 nColor = -1; + xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_COLOR) >>= nColor; + CPPUNIT_ASSERT_MESSAGE("Border color is wrong.", nColor == aDataPoints[i].mnColor); + } + } + + /** + * Chart 2 has all its data labels with identical borders. + */ + void checkObject2( const Reference<chart2::XChartDocument>& xChartDoc ) + { + CPPUNIT_ASSERT(xChartDoc.is()); + + Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0); + CPPUNIT_ASSERT(xDataSeries.is()); + + Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY); + CPPUNIT_ASSERT(xPropSet.is()); + + css::drawing::LineStyle eLineStyle = css::drawing::LineStyle_NONE; + xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_STYLE) >>= eLineStyle; + CPPUNIT_ASSERT(eLineStyle == css::drawing::LineStyle_SOLID); + + sal_Int32 nWidth = -1; + xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_WIDTH) >>= nWidth; + CPPUNIT_ASSERT(nWidth > 0); + + sal_Int32 nColor = -1; + xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_COLOR) >>= nColor; + CPPUNIT_ASSERT_MESSAGE("Border color should be green.", nColor == 0x0000FF00); + } + + } aTest; + + load("/chart2/qa/extras/data/docx/", "data-label-borders.docx"); + + Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY); + aTest.checkObject1(xChartDoc); + xChartDoc.set(getChartDocFromWriter(1), uno::UNO_QUERY); + aTest.checkObject2(xChartDoc); + + reload("Office Open XML Text"); + + xChartDoc.set(getChartDocFromWriter(0), uno::UNO_QUERY); + aTest.checkObject1(xChartDoc); + xChartDoc.set(getChartDocFromWriter(1), uno::UNO_QUERY); + aTest.checkObject2(xChartDoc); +} + void Chart2ExportTest::testBarChartRotation() { load ("/chart2/qa/extras/data/docx/", "barChartRotation.docx"); diff --git a/chart2/qa/extras/data/docx/data-label-borders.docx b/chart2/qa/extras/data/docx/data-label-borders.docx new file mode 100755 index 0000000..6f2b94d Binary files /dev/null and b/chart2/qa/extras/data/docx/data-label-borders.docx differ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits