[Libreoffice-commits] core.git: chart2/qa oox/source

Balazs Varga (via logerrit) logerrit at kemper.freedesktop.org
Wed Aug 7 12:24:30 UTC 2019


 chart2/qa/extras/chart2import.cxx             |   28 ++++++++++++++++++++++++++
 chart2/qa/extras/data/docx/tdf125337.docx     |binary
 oox/source/drawingml/chart/chartconverter.cxx |    2 -
 3 files changed, 29 insertions(+), 1 deletion(-)

New commits:
commit 80386c73e172975572f265018333c6231a6b3b22
Author:     Balazs Varga <balazs.varga991 at gmail.com>
AuthorDate: Tue Aug 6 15:22:30 2019 +0200
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Wed Aug 7 14:23:50 2019 +0200

    tdf#125337 Chart DOCX Import: fix missing empty data series columns
    
    Create an empty column for a data series with NAN values, ie. where
    only "ptCount" was defined without explicit data. Also data series
    appear in the right order.
    
    Change-Id: I4eac94c2b9f34c84c4c19e4717cafbd440b20087
    Reviewed-on: https://gerrit.libreoffice.org/77026
    Reviewed-by: László Németh <nemeth at numbertext.org>
    Tested-by: László Németh <nemeth at numbertext.org>

diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index 710d15ebd60e..90a1bd8485cf 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -46,6 +46,7 @@ public:
     void testODTChartSeries();
     void testDOCChartSeries();
     void testDOCXChartSeries();
+    void testDOCXChartEmptySeries();
     void testDOCXChartValuesSize();
     void testPPTXChartSeries();
     void testPPTXSparseChartSeries();
@@ -146,6 +147,7 @@ public:
     CPPUNIT_TEST(testODTChartSeries);
     CPPUNIT_TEST(testDOCChartSeries);
     CPPUNIT_TEST(testDOCXChartSeries);
+    CPPUNIT_TEST(testDOCXChartEmptySeries);
     CPPUNIT_TEST(testDOCXChartValuesSize);
     CPPUNIT_TEST(testPPTChartSeries);
     CPPUNIT_TEST(testPPTXChartSeries);
@@ -469,6 +471,32 @@ void Chart2ImportTest::testDOCXChartSeries()
     CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), aLabels[2][0].get<OUString>());
 }
 
+void Chart2ImportTest::testDOCXChartEmptySeries()
+{
+    load("/chart2/qa/extras/data/docx/", "tdf125337.docx");
+    Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+    CPPUNIT_ASSERT(xChartDoc.is());
+
+    Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 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("1. dataseries"), aLabels[0][0].get<OUString>());
+    CPPUNIT_ASSERT_EQUAL(OUString("2. dataseries"), aLabels[1][0].get<OUString>());
+    CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), aLabels[2][0].get<OUString>());
+
+    //test chart series sparse data for docx
+    std::vector<std::vector<double> > aValues = getDataSeriesYValuesFromChartType(xCT);
+    CPPUNIT_ASSERT_EQUAL(size_t(3), aValues.size());
+    //test the second series values
+    CPPUNIT_ASSERT_EQUAL(2.4, aValues[1][0]);
+    CPPUNIT_ASSERT_EQUAL(4.4, aValues[1][1]);
+    //test the third series (empty) values
+    CPPUNIT_ASSERT(rtl::math::isNan(aValues[2][0]));
+    CPPUNIT_ASSERT(rtl::math::isNan(aValues[2][1]));
+}
+
 void Chart2ImportTest::testDOCXChartValuesSize()
 {
     load( "/chart2/qa/extras/data/docx/", "bubblechart.docx" );
diff --git a/chart2/qa/extras/data/docx/tdf125337.docx b/chart2/qa/extras/data/docx/tdf125337.docx
new file mode 100644
index 000000000000..811f12d89841
Binary files /dev/null and b/chart2/qa/extras/data/docx/tdf125337.docx differ
diff --git a/oox/source/drawingml/chart/chartconverter.cxx b/oox/source/drawingml/chart/chartconverter.cxx
index 538f9956abc7..739092d72b02 100644
--- a/oox/source/drawingml/chart/chartconverter.cxx
+++ b/oox/source/drawingml/chart/chartconverter.cxx
@@ -124,7 +124,7 @@ Reference< XDataSequence > ChartConverter::createDataSequence(
     if( rxDataProvider.is() )
     {
         OUString aRangeRep;
-        if( !rDataSeq.maData.empty() ) try
+        if( !rDataSeq.maData.empty() || (rRole == "values-y" && rDataSeq.mnPointCount > 0) ) try
         {
             // create a single-row array from constant source data
             // (multiple levels in the case of complex categories)


More information about the Libreoffice-commits mailing list