summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorJean-Tiare Le Bigot <admin@jtlebi.fr>2016-11-28 09:09:55 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-12-01 17:32:03 +0000
commit18b3138a7ac4da823e41640bed8a4707029b8fb0 (patch)
treefd1f85b0b26deaf8ee293441b0a6af2b546fc1a2 /chart2
parent6982598524491ee087e69c149eaa958af91b1999 (diff)
tdf#102621: import empty chart cells as NaN instead of 0
Change-Id: I574c3f719e52bc2244597532783130564621a891 Reviewed-on: https://gerrit.libreoffice.org/31303 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/qa/extras/chart2import.cxx17
-rw-r--r--chart2/source/tools/InternalDataProvider.cxx7
2 files changed, 14 insertions, 10 deletions
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index b508f3e123dd..be36047efadb 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -25,7 +25,6 @@
#include <com/sun/star/util/Color.hpp>
-
class Chart2ImportTest : public ChartTest
{
public:
@@ -413,13 +412,13 @@ void Chart2ImportTest::testPPTXSparseChartSeries()
std::vector<std::vector<double> > aValues = getDataSeriesYValuesFromChartType(xCT);
CPPUNIT_ASSERT_EQUAL(size_t(2), aValues.size());
- CPPUNIT_ASSERT_EQUAL(0.0, aValues[0][0]);
+ CPPUNIT_ASSERT( rtl::math::isNan( aValues[0][0] ) );
CPPUNIT_ASSERT_EQUAL(2.5, aValues[0][1]);
CPPUNIT_ASSERT_EQUAL(3.5, aValues[0][2]);
- CPPUNIT_ASSERT_EQUAL(0.0, aValues[0][3]);
+ CPPUNIT_ASSERT( rtl::math::isNan( aValues[0][3] ) );
CPPUNIT_ASSERT_EQUAL(-2.4, aValues[1][0]);
- CPPUNIT_ASSERT_EQUAL(0.0, aValues[1][1]);
- CPPUNIT_ASSERT_EQUAL(0.0, aValues[1][2]);
+ CPPUNIT_ASSERT( rtl::math::isNan( aValues[1][1] ) );
+ CPPUNIT_ASSERT( rtl::math::isNan( aValues[1][2] ) );
CPPUNIT_ASSERT_EQUAL(-2.8, aValues[1][3]);
}
@@ -1169,17 +1168,17 @@ void Chart2ImportTest::testInternalDataProvider() {
// Parse empty first and last
xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{\"\";42;42;\"\"}");
xSequence = xDataSeq->getData();
- CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[0]);
+ CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[0].getValue())));
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[1]);
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[2]);
- CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[3]);
+ CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[3].getValue())));
// Parse empty middle
xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"\";\"\";42}");
xSequence = xDataSeq->getData();
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
- CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[1]);
- CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[2]);
+ CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[1].getValue())) );
+ CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[2].getValue())) );
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[3]);
// Parse mixed types, numeric only role
diff --git a/chart2/source/tools/InternalDataProvider.cxx b/chart2/source/tools/InternalDataProvider.cxx
index ef6facdee058..9f5f3187fd36 100644
--- a/chart2/source/tools/InternalDataProvider.cxx
+++ b/chart2/source/tools/InternalDataProvider.cxx
@@ -573,7 +573,12 @@ InternalDataProvider::createDataSequenceFromArray( const OUString& rArrayStr, co
std::vector<double> aValues;
aValues.reserve(aRawElems.size());
for (OUString & aRawElem : aRawElems)
- aValues.push_back(aRawElem.toDouble());
+ {
+ if (aRawElem.isEmpty())
+ aValues.push_back(NAN);
+ else
+ aValues.push_back(aRawElem.toDouble());
+ }
sal_Int32 n = m_aInternalData.appendColumn();
m_aInternalData.setColumnValues(n, aValues);