tdf#91250 Chart DOCX Import: Fix decimal place formatting issue

Use UNLIMITED_PRECISION in case of GENERAL number format of CATEGORY
axis labels in embedded charts, just like Calc does.

Change-Id: I30cb50955c67824bd1aa88fb139618ce0f0974fc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95802
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
This commit is contained in:
Balazs Varga 2020-06-08 14:26:33 +02:00 committed by László Németh
parent 0c0f4b1531
commit f66fbd4fb5
3 changed files with 25 additions and 0 deletions

View file

@ -161,6 +161,7 @@ public:
void testTdf119138MissingAutoTitleDeleted();
void testStockChartShiftedCategoryPosition();
void testTdf133376();
void testTdf91250();
CPPUNIT_TEST_SUITE(Chart2ImportTest);
CPPUNIT_TEST(Fdo60083);
@ -270,6 +271,7 @@ public:
CPPUNIT_TEST(testTdf119138MissingAutoTitleDeleted);
CPPUNIT_TEST(testStockChartShiftedCategoryPosition);
CPPUNIT_TEST(testTdf133376);
CPPUNIT_TEST(testTdf91250);
CPPUNIT_TEST_SUITE_END();
@ -2523,6 +2525,26 @@ void Chart2ImportTest::testTdf133376()
CPPUNIT_ASSERT_DOUBLES_EQUAL(5269, aLabelPosition.Y, 30);
}
void Chart2ImportTest::testTdf91250()
{
load("/chart2/qa/extras/data/docx/", "tdf91250.docx");
uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XInternalDataProvider> xInternalProvider(xChartDoc->getDataProvider(), uno::UNO_QUERY);
CPPUNIT_ASSERT(xInternalProvider.is());
Reference<chart::XComplexDescriptionAccess> xDescAccess(xInternalProvider, uno::UNO_QUERY);
CPPUNIT_ASSERT(xDescAccess.is());
// Get the category labels.
Sequence<OUString> aCategories = xDescAccess->getRowDescriptions();
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aCategories.getLength());
CPPUNIT_ASSERT_EQUAL(OUString("12.3254"), aCategories[0]);
CPPUNIT_ASSERT_EQUAL(OUString("11.62315"), aCategories[1]);
CPPUNIT_ASSERT_EQUAL(OUString("9.26"), aCategories[2]);
CPPUNIT_ASSERT_EQUAL(OUString("8.657"), aCategories[3]);
}
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();

Binary file not shown.

View file

@ -127,6 +127,9 @@ void DoubleSequenceContext::onCharacters( const OUString& rChars )
double fValue = rChars.toDouble();
::Color* pColor = nullptr;
OUString aFormattedValue;
// tdf#91250: use UNLIMITED_PRECISION in case of GENERAL Number Format of category axis labels
if( pNumFrmt->GetStandardPrec() != SvNumberFormatter::UNLIMITED_PRECISION )
pNumFrmt->ChangeStandardPrec(SvNumberFormatter::UNLIMITED_PRECISION);
pNumFrmt->GetOutputString( fValue, nKey, aFormattedValue, &pColor );
mrModel.maData[ mnPtIndex ] <<= aFormattedValue;
}