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

Kohei Yoshida kohei.yoshida at collabora.com
Thu Jul 3 09:32:05 PDT 2014


 chart2/qa/extras/chart2export.cxx |   39 ++++++++++++++++++++++++++++++++
 chart2/qa/extras/charttest.hxx    |   46 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 85 insertions(+)

New commits:
commit 97857c258178ffc79dd2799cd2d79047a863fb22
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Jul 3 12:30:45 2014 -0400

    Test the import of data series values as well.
    
    There was a bug in there earlier that none of the tests didn't catch.
    
    Change-Id: I1f4ed1ba5e08e7842899a140163f9e165705569b

diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index 30b2a35..68f6091 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -521,6 +521,45 @@ void Chart2ExportTest::testCrosses()
 void Chart2ExportTest::testScatterChartTextXValues()
 {
     load("/chart2/qa/extras/data/docx/", "scatter-chart-text-x-values.docx");
+
+    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());
+
+    // Make sure we have exactly 3 data series.
+    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>());
+
+    std::vector<std::vector<double> > aYValues = getDataSeriesYValuesFromChartType(xCT);
+    CPPUNIT_ASSERT_EQUAL(size_t(3), aYValues.size());
+
+    // Check the Y values of "Series 1".
+    CPPUNIT_ASSERT_EQUAL(size_t(4), aYValues[0].size());
+    CPPUNIT_ASSERT_EQUAL(4.3, aYValues[0][0]);
+    CPPUNIT_ASSERT_EQUAL(2.5, aYValues[0][1]);
+    CPPUNIT_ASSERT_EQUAL(3.5, aYValues[0][2]);
+    CPPUNIT_ASSERT_EQUAL(4.5, aYValues[0][3]);
+
+    // And "Series 2".
+    CPPUNIT_ASSERT_EQUAL(size_t(4), aYValues[1].size());
+    CPPUNIT_ASSERT_EQUAL(2.4, aYValues[1][0]);
+    CPPUNIT_ASSERT_EQUAL(4.4, aYValues[1][1]);
+    CPPUNIT_ASSERT_EQUAL(1.8, aYValues[1][2]);
+    CPPUNIT_ASSERT_EQUAL(2.8, aYValues[1][3]);
+
+    // And "Series 3".
+    CPPUNIT_ASSERT_EQUAL(size_t(4), aYValues[2].size());
+    CPPUNIT_ASSERT_EQUAL(2.0, aYValues[2][0]);
+    CPPUNIT_ASSERT_EQUAL(2.0, aYValues[2][1]);
+    CPPUNIT_ASSERT_EQUAL(3.0, aYValues[2][2]);
+    CPPUNIT_ASSERT_EQUAL(5.0, aYValues[2][3]);
+
+    // Test the export.
     xmlDocPtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text");
     if (!pXmlDoc)
        return;
diff --git a/chart2/qa/extras/charttest.hxx b/chart2/qa/extras/charttest.hxx
index 4ac6db3..f3d1991 100644
--- a/chart2/qa/extras/charttest.hxx
+++ b/chart2/qa/extras/charttest.hxx
@@ -324,6 +324,52 @@ uno::Sequence < OUString > getWriterChartColumnDescriptions( Reference< lang::XC
     return seriesList;
 }
 
+std::vector<std::vector<double> > getDataSeriesYValuesFromChartType( const Reference<chart2::XChartType>& xCT )
+{
+    Reference<chart2::XDataSeriesContainer> xDSCont(xCT, uno::UNO_QUERY);
+    CPPUNIT_ASSERT(xDSCont.is());
+    Sequence<uno::Reference<chart2::XDataSeries> > aDataSeriesSeq = xDSCont->getDataSeries();
+
+    double fNan;
+    rtl::math::setNan(&fNan);
+
+    std::vector<std::vector<double> > 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 == "values-y")
+            {
+                uno::Sequence<uno::Any> aData = xValues->getData();
+                std::vector<double> aValues;
+                aValues.reserve(aData.getLength());
+                for (sal_Int32 nVal = 0; nVal < aData.getLength(); ++nVal)
+                {
+                    double fVal;
+                    if (aData[nVal] >>= fVal)
+                        aValues.push_back(fVal);
+                    else
+                        aValues.push_back(fNan);
+                }
+                aRet.push_back(aValues);
+            }
+        }
+    }
+
+    return aRet;
+}
+
 std::vector<uno::Sequence<uno::Any> > getDataSeriesLabelsFromChartType( const Reference<chart2::XChartType>& xCT )
 {
     OUString aLabelRole = xCT->getRoleOfSequenceForSeriesLabel();


More information about the Libreoffice-commits mailing list