Split CppunitTest_chart2_import into two

Change-Id: I1a9b98b9e20fd6e097bc8fd68958b7feb66991f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117236
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
Xisco Fauli 2021-06-15 12:22:59 +02:00
parent 9966345f4f
commit a2f42f37a0
6 changed files with 1042 additions and 925 deletions

View file

@ -9,123 +9,7 @@
#
#*************************************************************************
$(eval $(call gb_CppunitTest_CppunitTest,chart2_import))
$(eval $(call gb_CppunitTest_use_externals,chart2_import, \
boost_headers \
libxml2 \
))
$(eval $(call gb_CppunitTest_add_exception_objects,chart2_import, \
chart2/qa/extras/chart2import \
))
$(eval $(call gb_CppunitTest_use_libraries,chart2_import, \
basegfx \
comphelper \
cppu \
cppuhelper \
drawinglayer \
editeng \
for \
forui \
i18nlangtag \
msfilter \
vcl \
oox \
sal \
salhelper \
sax \
sb \
sc \
sw \
sd \
sfx \
sot \
svl \
svt \
svx \
svxcore \
test \
tl \
tk \
ucbhelper \
unotest \
utl \
vbahelper \
xo \
sw \
))
$(eval $(call gb_CppunitTest_set_include,chart2_import,\
-I$(SRCDIR)/chart2/inc \
$$(INCLUDE) \
))
$(eval $(call gb_CppunitTest_use_sdk_api,chart2_import))
$(eval $(call gb_CppunitTest_use_ure,chart2_import))
$(eval $(call gb_CppunitTest_use_vcl,chart2_import))
$(eval $(call gb_CppunitTest_use_components,chart2_import,\
basic/util/sb \
animations/source/animcore/animcore \
chart2/source/controller/chartcontroller \
chart2/source/chartcore \
comphelper/util/comphelp \
configmgr/source/configmgr \
embeddedobj/util/embobj \
emfio/emfio \
eventattacher/source/evtatt \
filter/source/config/cache/filterconfig1 \
filter/source/odfflatxml/odfflatxml \
filter/source/storagefilterdetect/storagefd \
filter/source/xmlfilteradaptor/xmlfa \
filter/source/xmlfilterdetect/xmlfd \
forms/util/frm \
framework/util/fwk \
i18npool/util/i18npool \
linguistic/source/lng \
oox/util/oox \
package/source/xstor/xstor \
package/util/package2 \
sax/source/expatwrap/expwrap \
sc/util/sc \
sc/util/scd \
sc/util/scfilt \
sw/util/sw \
sw/util/swd \
sw/util/msword \
sd/util/sd \
sd/util/sdfilt \
sd/util/sdd \
$(call gb_Helper_optional,SCRIPTING, \
sc/util/vbaobj) \
scaddins/source/analysis/analysis \
scaddins/source/datefunc/date \
scripting/source/basprov/basprov \
scripting/util/scriptframe \
sfx2/util/sfx \
sot/util/sot \
svl/source/fsstor/fsstorage \
svl/util/svl \
svtools/util/svt \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
vcl/vcl.common \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
ucb/source/ucp/tdoc/ucptdoc1 \
unotools/util/utl \
unoxml/source/rdf/unordf \
unoxml/source/service/unoxml \
uui/util/uui \
writerfilter/util/writerfilter \
xmloff/util/xo \
xmlscript/util/xmlscript \
))
$(eval $(call gb_CppunitTest_use_configuration,chart2_import))
# empty second argument (i.e. no 1)
$(eval $(call chart2_import_test,))
# vim: set noet sw=4 ts=4:

View file

@ -0,0 +1,14 @@
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#*************************************************************************
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#*************************************************************************
$(eval $(call chart2_import_test,2))
# vim: set noet sw=4 ts=4:

View file

@ -7,6 +7,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
include $(SRCDIR)/chart2/import_setup.mk
include $(SRCDIR)/chart2/export_setup.mk
$(eval $(call gb_Module_Module,chart2))
@ -30,6 +31,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,chart2,\
CppunitTest_chart2_export \
CppunitTest_chart2_export2 \
CppunitTest_chart2_import \
CppunitTest_chart2_import2 \
CppunitTest_chart2_trendcalculators \
CppunitTest_chart2_dump \
CppunitTest_chart2_pivot_chart_test \

143
chart2/import_setup.mk Normal file
View file

@ -0,0 +1,143 @@
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#*************************************************************************
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#*************************************************************************
# template for import tests
define chart2_import$(1)_test
$(eval $(call gb_CppunitTest_CppunitTest,chart2_import$(1)))
$(eval $(call gb_CppunitTest_use_externals,chart2_import$(1), \
boost_headers \
libxml2 \
))
$(eval $(call gb_CppunitTest_add_exception_objects,chart2_import$(1), \
chart2/qa/extras/chart2import$(1) \
))
$(eval $(call gb_CppunitTest_use_libraries,chart2_import$(1), \
$(call gb_Helper_optional,AVMEDIA,avmedia) \
basegfx \
comphelper \
cppu \
cppuhelper \
drawinglayer \
editeng \
for \
forui \
i18nlangtag \
msfilter \
oox \
sal \
salhelper \
sax \
sb \
sc \
sw \
sd \
sfx \
sot \
svl \
svt \
svx \
svxcore \
test \
tl \
tk \
ucbhelper \
unotest \
utl \
vbahelper \
vcl \
xo \
))
$(eval $(call gb_CppunitTest_set_include,chart2_import$(1),\
-I$(SRCDIR)/chart2/inc \
$$(INCLUDE) \
))
$(eval $(call gb_CppunitTest_use_sdk_api,chart2_import$(1)))
$(eval $(call gb_CppunitTest_use_ure,chart2_import$(1)))
$(eval $(call gb_CppunitTest_use_vcl,chart2_import$(1)))
$(eval $(call gb_CppunitTest_use_components,chart2_import$(1),\
basic/util/sb \
animations/source/animcore/animcore \
chart2/source/controller/chartcontroller \
chart2/source/chartcore \
comphelper/util/comphelp \
configmgr/source/configmgr \
dbaccess/util/dba \
embeddedobj/util/embobj \
emfio/emfio \
eventattacher/source/evtatt \
filter/source/config/cache/filterconfig1 \
filter/source/odfflatxml/odfflatxml \
filter/source/storagefilterdetect/storagefd \
filter/source/xmlfilteradaptor/xmlfa \
filter/source/xmlfilterdetect/xmlfd \
forms/util/frm \
framework/util/fwk \
i18npool/util/i18npool \
linguistic/source/lng \
oox/util/oox \
package/source/xstor/xstor \
package/util/package2 \
sax/source/expatwrap/expwrap \
sc/util/sc \
sc/util/scd \
sc/util/scfilt \
sw/util/sw \
sw/util/swd \
sw/util/msword \
sd/util/sd \
sd/util/sdfilt \
sd/util/sdd \
$(call gb_Helper_optional,SCRIPTING, \
sc/util/vbaobj) \
scaddins/source/analysis/analysis \
scaddins/source/datefunc/date \
scripting/source/basprov/basprov \
scripting/util/scriptframe \
sfx2/util/sfx \
sot/util/sot \
svl/source/fsstor/fsstorage \
svl/util/svl \
svtools/util/svt \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
vcl/vcl.common \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
ucb/source/ucp/tdoc/ucptdoc1 \
unotools/util/utl \
unoxml/source/rdf/unordf \
unoxml/source/service/unoxml \
uui/util/uui \
writerfilter/util/writerfilter \
xmloff/util/xo \
xmlscript/util/xmlscript \
))
$(eval $(call gb_CppunitTest_use_uiconfigs,chart2_import$(1), \
modules/swriter \
))
$(eval $(call gb_CppunitTest_use_configuration,chart2_import$(1)))
$(call gb_CppunitTest_get_target,chart2_import$(1)): $(call gb_Package_get_target,postprocess_images)
endef
# vim: set noet sw=4 ts=4:

View file

@ -139,43 +139,6 @@ public:
void testTdf121205();
void testTdf114179();
void testTdf124243();
void testTdf127393();
void testTdf128733();
void testTdf128432();
void testTdf128627();
void testTdf128634();
void testTdf130657();
void testDeletedDataLabel();
void testDataPointInheritedColorDOCX();
void testExternalStrRefsXLSX();
void testSourceNumberFormatComplexCategoriesXLS();
void testSimpleCategoryAxis();
void testMultilevelCategoryAxis();
void testXaxisValues();
void testTdf123504();
void testTdf122765();
void testTdf123206CustomLabelField();
void testTdf125444PercentageCustomLabel();
void testDataPointLabelCustomPos();
void testTdf130032();
void testTdf134978();
void testTdf119138MissingAutoTitleDeleted();
void testStockChartShiftedCategoryPosition();
void testTdf133376();
void testTdf134225();
void testTdf136105();
void testTdf91250();
void testTdf134111();
void testTdf136752();
void testTdf137505();
void testTdf137734();
void testTdf137874();
void testTdfCustomShapePos();
void testTdf121281();
void testTdf139658();
CPPUNIT_TEST_SUITE(Chart2ImportTest);
CPPUNIT_TEST(Fdo60083);
CPPUNIT_TEST(testSteppedLines);
@ -263,47 +226,7 @@ public:
CPPUNIT_TEST(testTdf121205);
CPPUNIT_TEST(testTdf114179);
CPPUNIT_TEST(testTdf124243);
CPPUNIT_TEST(testTdf127393);
CPPUNIT_TEST(testTdf128733);
CPPUNIT_TEST(testTdf128432);
CPPUNIT_TEST(testTdf128627);
CPPUNIT_TEST(testTdf128634);
CPPUNIT_TEST(testTdf130657);
CPPUNIT_TEST(testDeletedDataLabel);
CPPUNIT_TEST(testDataPointInheritedColorDOCX);
CPPUNIT_TEST(testExternalStrRefsXLSX);
CPPUNIT_TEST(testSourceNumberFormatComplexCategoriesXLS);
CPPUNIT_TEST(testSimpleCategoryAxis);
CPPUNIT_TEST(testMultilevelCategoryAxis);
CPPUNIT_TEST(testXaxisValues);
CPPUNIT_TEST(testTdf123504);
CPPUNIT_TEST(testTdf122765);
CPPUNIT_TEST(testTdf123206CustomLabelField);
CPPUNIT_TEST(testTdf125444PercentageCustomLabel);
CPPUNIT_TEST(testDataPointLabelCustomPos);
CPPUNIT_TEST(testTdf130032);
CPPUNIT_TEST(testTdf134978);
CPPUNIT_TEST(testTdf119138MissingAutoTitleDeleted);
CPPUNIT_TEST(testStockChartShiftedCategoryPosition);
CPPUNIT_TEST(testTdf133376);
CPPUNIT_TEST(testTdf134225);
CPPUNIT_TEST(testTdf136105);
CPPUNIT_TEST(testTdf91250);
CPPUNIT_TEST(testTdf134111);
CPPUNIT_TEST(testTdf136752);
CPPUNIT_TEST(testTdf137505);
CPPUNIT_TEST(testTdf137734);
CPPUNIT_TEST(testTdf137874);
CPPUNIT_TEST(testTdfCustomShapePos);
CPPUNIT_TEST(testTdf121281);
CPPUNIT_TEST(testTdf139658);
CPPUNIT_TEST_SUITE_END();
private:
};
// error bar import
@ -2187,736 +2110,6 @@ void Chart2ImportTest::testTdf121205()
CPPUNIT_ASSERT_EQUAL(OUString("Firstline\nSecondline\nThirdline"), aTitle);
}
void Chart2ImportTest::testTdf114179()
{
load( u"/chart2/qa/extras/data/docx/", "testTdf114179.docx" );
uno::Reference< chart2::XChartDocument > xChartDoc ( getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT( xChartDoc.is() );
css::uno::Reference<chart2::XDiagram> xDiagram;
xDiagram.set( xChartDoc->getFirstDiagram() );
CPPUNIT_ASSERT_MESSAGE( "There is a Diagram." , xDiagram.is() );
awt::Size aPage = getPageSize( xChartDoc );
awt::Size aSize = getSize( xDiagram,aPage );
CPPUNIT_ASSERT( aSize.Width > 0);
CPPUNIT_ASSERT( aSize.Height > 0);
}
void Chart2ImportTest::testTdf124243()
{
load(u"/chart2/qa/extras/data/docx/", "tdf124243.docx");
uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
Reference<beans::XPropertySet> xPS(xAxis, uno::UNO_QUERY_THROW);
bool bShow = true;
// test X Axis is not visible.
bool bSuccess = xPS->getPropertyValue("Show") >>= bShow;
CPPUNIT_ASSERT(bSuccess);
CPPUNIT_ASSERT(!bShow);
}
void Chart2ImportTest::testTdf127393()
{
load(u"/chart2/qa/extras/data/pptx/", "tdf127393.pptx");
// 1st chart
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData1 = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData1.Categories.is());
CPPUNIT_ASSERT(aScaleData1.ShiftedCategoryPosition);
// 2nd chart
xChartDoc.set(getChartDocFromDrawImpress(1, 0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
xAxis.set(getAxisFromDoc(xChartDoc, 0, 0, 0));
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData2 = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData2.Categories.is());
CPPUNIT_ASSERT(!aScaleData2.ShiftedCategoryPosition);
}
void Chart2ImportTest::testTdf128733()
{
load(u"/chart2/qa/extras/data/odt/", "tdf128733.odt");
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
// test secondary X axis ShiftedCategoryPosition value
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 1);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest::testTdf128432()
{
load(u"/chart2/qa/extras/data/ods/", "tdf128432.ods");
uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest::testTdf128627()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf128627.xlsx");
// Test ShiftedCategoryPosition for Radar Chart
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(!aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest::testTdf128634()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf128634.xlsx");
// Test ShiftedCategoryPosition for 3D Charts
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest::testTdf130657()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf130657.xlsx");
// Test ShiftedCategoryPosition for charts which is not contain a "crossbetween" OOXML tag.
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
namespace {
void checkDataLabelProperties(const Reference<chart2::XDataSeries>& xDataSeries, sal_Int32 nDataPointIndex, bool bValueVisible)
{
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(nDataPointIndex), uno::UNO_SET_THROW);
chart2::DataPointLabel aLabel;
xPropertySet->getPropertyValue("Label") >>= aLabel;
CPPUNIT_ASSERT_EQUAL(bValueVisible, static_cast<bool>(aLabel.ShowNumber));
CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(aLabel.ShowNumberInPercent));
}
}
void Chart2ImportTest::testDeletedDataLabel()
{
load(u"/chart2/qa/extras/data/xlsx/", "deleted_data_labels.xlsx");
uno::Reference< chart2::XChartDocument > xChartDoc( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW );
Reference<chart2::XDataSeries> xDataSeries0 = getDataSeriesFromDoc(xChartDoc, 0);
CPPUNIT_ASSERT(xDataSeries0.is());
checkDataLabelProperties(xDataSeries0, 0, true);
checkDataLabelProperties(xDataSeries0, 1, false);
checkDataLabelProperties(xDataSeries0, 2, true);
Reference<chart2::XDataSeries> xDataSeries1 = getDataSeriesFromDoc(xChartDoc, 1);
CPPUNIT_ASSERT(xDataSeries1.is());
checkDataLabelProperties(xDataSeries1, 0, false);
checkDataLabelProperties(xDataSeries1, 1, false);
checkDataLabelProperties(xDataSeries1, 2, false);
}
void Chart2ImportTest::testDataPointInheritedColorDOCX()
{
load( u"/chart2/qa/extras/data/docx/", "data_point_inherited_color.docx" );
uno::Reference< chart2::XChartDocument > xChartDoc ( getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT( xChartDoc.is() );
css::uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW);
Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
sal_Int32 nColor = xPropertySet->getPropertyValue("FillColor").get<sal_Int32>();
CPPUNIT_ASSERT_EQUAL(sal_Int32(16776960), nColor);
}
void Chart2ImportTest::testExternalStrRefsXLSX()
{
load(u"/chart2/qa/extras/data/xlsx/", "external_str_ref.xlsx");
uno::Reference< chart2::XChartDocument > xChartDoc( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW );
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
chart2::ScaleData aScaleData = xAxis->getScaleData();
css::uno::Sequence<css::uno::Any> aValues = aScaleData.Categories->getValues()->getData();
CPPUNIT_ASSERT_EQUAL(OUString("test1"), aValues[0].get<OUString>());
CPPUNIT_ASSERT_EQUAL(OUString("test2"), aValues[1].get<OUString>());
}
void Chart2ImportTest::testSourceNumberFormatComplexCategoriesXLS()
{
load(u"/chart2/qa/extras/data/xls/", "source_number_format_axis.xls");
uno::Reference< chart2::XChartDocument > xChartDoc( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW );
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
chart2::ScaleData aScaleData = xAxis->getScaleData();
sal_Int32 nNumberFormat = aScaleData.Categories->getValues()->getNumberFormatKeyByIndex(-1);
CPPUNIT_ASSERT(nNumberFormat != 0);
}
void Chart2ImportTest::testSimpleCategoryAxis()
{
load(u"/chart2/qa/extras/data/docx/", "testSimpleCategoryAxis.docx");
uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
// Test the internal data.
CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
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<Sequence<OUString> > aCategories = xDescAccess->getComplexRowDescriptions();
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[0].getLength());
CPPUNIT_ASSERT(aCategories[0][0].endsWith("ria 1"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[1].getLength());
CPPUNIT_ASSERT(aCategories[1][0].endsWith("ria 2"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[2].getLength());
CPPUNIT_ASSERT(aCategories[2][0].endsWith("ria 3"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[3].getLength());
CPPUNIT_ASSERT(aCategories[3][0].endsWith("ria 4"));
}
void Chart2ImportTest::testMultilevelCategoryAxis()
{
load(u"/chart2/qa/extras/data/docx/", "testMultilevelCategoryAxis.docx");
uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
// Test the internal data.
CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
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 complex category labels.
Sequence<Sequence<OUString> > aCategories = xDescAccess->getComplexRowDescriptions();
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aCategories.getLength());
CPPUNIT_ASSERT_EQUAL(OUString("2011"), aCategories[0][0]);
CPPUNIT_ASSERT_EQUAL(OUString(""), aCategories[1][0]);
CPPUNIT_ASSERT_EQUAL(OUString("2012"), aCategories[2][0]);
CPPUNIT_ASSERT_EQUAL(OUString(""), aCategories[3][0]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 1"), aCategories[0][1]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 2"), aCategories[1][1]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 3"), aCategories[2][1]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 4"), aCategories[3][1]);
}
void Chart2ImportTest::testXaxisValues()
{
load(u"/chart2/qa/extras/data/docx/", "tdf124083.docx");
uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
const uno::Reference< chart2::data::XDataSequence > xDataSeq = getDataSequenceFromDocByRole(xChartDoc, u"values-x");
Sequence<uno::Any> xSequence = xDataSeq->getData();
// test X values
CPPUNIT_ASSERT_EQUAL(uno::Any(0.04), xSequence[0]);
CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[1].getValue())));
CPPUNIT_ASSERT_EQUAL(uno::Any(0.16), xSequence[2]);
CPPUNIT_ASSERT_EQUAL(uno::Any(0.11), xSequence[3]);
CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[4].getValue())));
}
void Chart2ImportTest::testTdf123504()
{
load(u"/chart2/qa/extras/data/ods/", "pie_chart_100_and_0.ods");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<chart2::XChartDocument> xChartDoc2(xChartDoc, UNO_QUERY_THROW);
Reference<chart2::XChartType> xChartType(getChartTypeFromDoc(xChartDoc2, 0), UNO_SET_THROW);
std::vector aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
CPPUNIT_ASSERT_EQUAL(size_t(1), aDataSeriesYValues.size());
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xSeriesSlices(getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=0"),
UNO_SET_THROW);
Reference<container::XIndexAccess> xIndexAccess(xSeriesSlices, UNO_QUERY_THROW);
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
Reference<drawing::XShape> xSlice(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
// Check size and position of the only slice in the chart (100%)
// In the regressed state, it used to be 0-sized at position 0,0
awt::Point aSlicePosition = xSlice->getPosition();
CPPUNIT_ASSERT_GREATER(sal_Int32(3000), aSlicePosition.X);
CPPUNIT_ASSERT_GREATER(sal_Int32(150), aSlicePosition.Y);
awt::Size aSliceSize = xSlice->getSize();
CPPUNIT_ASSERT_GREATER(sal_Int32(8500), aSliceSize.Height);
CPPUNIT_ASSERT_GREATER(sal_Int32(8500), aSliceSize.Width);
}
void Chart2ImportTest::testTdf122765()
{
// The horizontal position of the slices was wrong.
load(u"/chart2/qa/extras/data/pptx/", "tdf122765.pptx");
Reference<chart::XChartDocument> xChartDoc = getChartDocFromDrawImpress(0, 0);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xSeriesSlices(getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=0"),
UNO_SET_THROW);
Reference<container::XIndexAccess> xIndexAccess(xSeriesSlices, UNO_QUERY_THROW);
CPPUNIT_ASSERT_EQUAL(sal_Int32(9), xIndexAccess->getCount());
Reference<drawing::XShape> xSlice(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
// Check position of the first slice, all slices move together, so enough to check only one.
// Wrong position was around 5856.
awt::Point aSlicePosition = xSlice->getPosition();
CPPUNIT_ASSERT_GREATER(sal_Int32(7000), aSlicePosition.X);
}
void Chart2ImportTest::testTdf123206CustomLabelField()
{
// File contains the deprecated "custom-label-field" attribute of the
// "data-point" element. It should be interpreted and stored as a data point
// property.
uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromImpress(u"/chart2/qa/extras/data/odp/", "tdf123206.odp"), uno::UNO_QUERY_THROW);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
CPPUNIT_ASSERT(xDataSeries.is());
Reference<beans::XPropertySet> xDp = xDataSeries->getDataPointByIndex(1);
Sequence<Reference<chart2::XDataPointCustomLabelField>> aLabelFields;
CPPUNIT_ASSERT(xDp->getPropertyValue("CustomLabelFields") >>= aLabelFields);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aLabelFields.getLength());
CPPUNIT_ASSERT_EQUAL(OUString("Kiskacsa"), aLabelFields[0]->getString());
}
void Chart2ImportTest::testTdf125444PercentageCustomLabel()
{
load(u"/chart2/qa/extras/data/pptx/", "tdf125444.pptx");
// 1st chart
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
Reference<beans::XPropertySet> xDp = xDataSeries->getDataPointByIndex(1);
Sequence<Reference<chart2::XDataPointCustomLabelField>> aLabelFields;
CPPUNIT_ASSERT(xDp->getPropertyValue("CustomLabelFields") >>= aLabelFields);
// There are three label field: a value label, a newline and a percentage label. We want
// to assert the latter.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aLabelFields.getLength());
CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType_PERCENTAGE, aLabelFields[2]->getFieldType());
}
void Chart2ImportTest::testDataPointLabelCustomPos()
{
// test CustomLabelPosition on Bar chart
load(u"/chart2/qa/extras/data/xlsx/", "testDataPointLabelCustomPos.xlsx");
uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
chart2::RelativePosition aCustomLabelPosition;
xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Primary, -0.14621409921671025, 1e-7);
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Secondary, -5.2887961029923464E-2, 1e-7);
sal_Int32 aPlacement;
xPropertySet->getPropertyValue("LabelPlacement") >>= aPlacement;
CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::OUTSIDE, aPlacement);
}
void Chart2ImportTest::testTdf130032()
{
// test CustomLabelPosition on Line chart
load(u"/chart2/qa/extras/data/xlsx/", "testTdf130032.xlsx");
uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
chart2::RelativePosition aCustomLabelPosition;
xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Primary, -0.0438333333333334, 1e-7);
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Secondary, 0.086794050743657, 1e-7);
sal_Int32 aPlacement;
xPropertySet->getPropertyValue("LabelPlacement") >>= aPlacement;
CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::RIGHT, aPlacement);
}
void Chart2ImportTest::testTdf134978()
{
// test CustomLabelPosition on Pie chart
load(u"/chart2/qa/extras/data/xlsx/", "tdf134978.xlsx");
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(2),
uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
chart2::RelativePosition aCustomLabelPosition;
xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.040273622047244093, aCustomLabelPosition.Primary, 1e-7);
CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.25635352872557599, aCustomLabelPosition.Secondary, 1e-7);
}
void Chart2ImportTest::testTdf119138MissingAutoTitleDeleted()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf119138-missing-autotitledeleted.xlsx");
Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
uno::Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
CPPUNIT_ASSERT_MESSAGE("Missing autoTitleDeleted is implied to be True if title text is present", xTitle.is());
}
void Chart2ImportTest::testStockChartShiftedCategoryPosition()
{
load(u"/chart2/qa/extras/data/odt/", "stock_chart_LO_6_2.odt");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest::testTdf133376()
{
// FIXME: the DPI check should be removed when either (1) the test is fixed to work with
// non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
if (!IsDefaultDPI())
return;
load(u"/chart2/qa/extras/data/xlsx/", "tdf133376.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2"), UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 3rd data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(1082, aLabelPosition.X, 30);
CPPUNIT_ASSERT_DOUBLES_EQUAL(5462, aLabelPosition.Y, 30);
}
void Chart2ImportTest::testTdf134225()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf134225.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel1(getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"), UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel1.is());
Reference<drawing::XShape> xDataPointLabel2(getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1"), UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel2.is());
#if defined(_WIN32)
// font is MS Comic Sans which we can only assume is available under windows
awt::Point aLabelPosition1 = xDataPointLabel1->getPosition();
awt::Point aLabelPosition2 = xDataPointLabel2->getPosition();
// Check the distance between the position of the 1st data point label and the second one
CPPUNIT_ASSERT_DOUBLES_EQUAL(1669, sal_Int32(aLabelPosition2.X - aLabelPosition1.X), 30);
CPPUNIT_ASSERT_DOUBLES_EQUAL(2166, sal_Int32(aLabelPosition2.Y - aLabelPosition1.Y), 30);
#endif
}
void Chart2ImportTest::testTdf136105()
{
// FIXME: the DPI check should be removed when either (1) the test is fixed to work with
// non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
if (!IsDefaultDPI())
return;
load(u"/chart2/qa/extras/data/xlsx/", "tdf136105.xlsx");
// 1st chart with fix inner position and size
{
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"), UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 1st data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(8797, aLabelPosition.X, 500);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1374, aLabelPosition.Y, 500);
}
// 2nd chart with auto inner position and size
{
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(1, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"), UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 1st data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(7978, aLabelPosition.X, 500);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1048, aLabelPosition.Y, 500);
}
}
void Chart2ImportTest::testTdf91250()
{
load(u"/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]);
}
void Chart2ImportTest::testTdf134111()
{
// tdf134111 : To check TextBreak value is true
load(u"/chart2/qa/extras/data/docx/", "tdf134111.docx");
uno::Reference< chart::XChartDocument > xChartDoc = getChartDocFromWriter(0);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
uno::Reference< chart::XDiagram > mxDiagram(xChartDoc->getDiagram());
CPPUNIT_ASSERT(mxDiagram.is());
uno::Reference< chart::XAxisXSupplier > xAxisXSupp(mxDiagram, uno::UNO_QUERY);
CPPUNIT_ASSERT(xAxisXSupp.is());
uno::Reference< beans::XPropertySet > xAxisProp(xAxisXSupp->getXAxis());
bool bTextBreak = false;
xAxisProp->getPropertyValue("TextBreak") >>= bTextBreak;
// Expected value of 'TextBreak' is true
CPPUNIT_ASSERT(bTextBreak);
}
void Chart2ImportTest::testTdf136752()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf136752.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"), UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 1st data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(8675, aLabelPosition.X, 500);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1458, aLabelPosition.Y, 500);
}
void Chart2ImportTest::testTdf137505()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf137505.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
CPPUNIT_ASSERT(xCustomShape.is());
float nFontSize;
Reference< text::XText > xRange(xCustomShape, uno::UNO_QUERY_THROW);
Reference < text::XTextCursor > xAt = xRange->createTextCursor();
Reference< beans::XPropertySet > xProps(xAt, UNO_QUERY);
// check the text size of custom shape, inside the chart.
CPPUNIT_ASSERT(xProps->getPropertyValue("CharHeight") >>= nFontSize);
CPPUNIT_ASSERT_EQUAL(float(12), nFontSize);
}
void Chart2ImportTest::testTdf137734()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf137734.xlsx");
Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
CPPUNIT_ASSERT(xDataSeries.is());
Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY_THROW);
uno::Any aAny = xPropSet->getPropertyValue("VaryColorsByPoint");
bool bVaryColor = true;
CPPUNIT_ASSERT(aAny >>= bVaryColor);
CPPUNIT_ASSERT(!bVaryColor);
// tdf#126133 Test primary X axis Rotation value
Reference<chart2::XAxis> xXAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xXAxis.is());
Reference<chart2::XTitled> xTitled(xXAxis, uno::UNO_QUERY_THROW);
Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
CPPUNIT_ASSERT(xTitle.is());
Reference<beans::XPropertySet> xTitlePropSet(xTitle, uno::UNO_QUERY_THROW);
uno::Any aAny2 = xTitlePropSet->getPropertyValue("TextRotation");
double nRotation = -1;
CPPUNIT_ASSERT(aAny2 >>= nRotation);
CPPUNIT_ASSERT_EQUAL(0.0, nRotation);
}
void Chart2ImportTest::testTdf137874()
{
load(u"/chart2/qa/extras/data/xlsx/", "piechart_legend.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xLegendEntry;
xLegendEntry
= getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0:LegendEntry=0");
CPPUNIT_ASSERT(xLegendEntry.is());
}
void Chart2ImportTest::testTdfCustomShapePos()
{
load(u"/chart2/qa/extras/data/docx/", "testcustomshapepos.docx");
Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
// test position and size of a custom shape within a chart, rotated by 0 degree.
{
Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
awt::Point aPosition = xCustomShape->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(8845, aPosition.X, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(855, aPosition.Y, 300);
awt::Size aSize = xCustomShape->getSize();
CPPUNIT_ASSERT_DOUBLES_EQUAL(4831, aSize.Width, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1550, aSize.Height, 300);
}
// test position and size of a custom shape within a chart, rotated by 90 degree.
{
Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
awt::Point aPosition = xCustomShape->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(1658, aPosition.X, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(6119, aPosition.Y, 300);
awt::Size aSize = xCustomShape->getSize();
CPPUNIT_ASSERT_DOUBLES_EQUAL(4165, aSize.Width, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1334, aSize.Height, 300);
}
}
void Chart2ImportTest::testTdf121281()
{
load(u"/chart2/qa/extras/data/xlsx/", "incorrect_label_position.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
awt::Point aLabelPosition = xDataPointLabel->getPosition();
// This failed, if the data label flowed out of the chart area.
CPPUNIT_ASSERT_GREATEREQUAL(static_cast<sal_Int32>(0), aLabelPosition.Y);
}
void Chart2ImportTest::testTdf139658()
{
load(u"/chart2/qa/extras/data/docx/", "tdf139658.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(3), aCategories.getLength());
CPPUNIT_ASSERT_EQUAL(OUString("category1"), aCategories[0]);
CPPUNIT_ASSERT_EQUAL(OUString("\"category2\""), aCategories[1]);
CPPUNIT_ASSERT_EQUAL(OUString("category\"3"), aCategories[2]);
}
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();

View file

@ -0,0 +1,881 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include "charttest.hxx"
#include <com/sun/star/chart2/CurveStyle.hpp>
#include <com/sun/star/chart2/DataPointLabel.hpp>
#include <com/sun/star/chart2/XDataPointCustomLabelField.hpp>
#include <com/sun/star/chart2/DataPointCustomLabelFieldType.hpp>
#include <com/sun/star/chart2/RelativePosition.hpp>
#include <com/sun/star/chart/ErrorBarStyle.hpp>
#include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
#include <com/sun/star/chart2/XChartDocument.hpp>
#include <com/sun/star/chart/XChartDocument.hpp>
#include <com/sun/star/chart2/XInternalDataProvider.hpp>
#include <com/sun/star/chart/XChartDataArray.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/LineStyle.hpp>
#include <com/sun/star/chart/XAxisXSupplier.hpp>
#include <com/sun/star/chart/XAxisYSupplier.hpp>
#include <com/sun/star/chart/MissingValueTreatment.hpp>
#include <com/sun/star/chart2/TickmarkStyle.hpp>
#include <com/sun/star/chart2/SymbolStyle.hpp>
#include <com/sun/star/chart2/Symbol.hpp>
#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
#include <com/sun/star/chart/DataLabelPlacement.hpp>
#include <com/sun/star/text/XTextRange.hpp>
#include <iterator>
#include <com/sun/star/util/Color.hpp>
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
class Chart2ImportTest2 : public ChartTest
{
public:
void testTdf114179();
void testTdf124243();
void testTdf127393();
void testTdf128733();
void testTdf128432();
void testTdf128627();
void testTdf128634();
void testTdf130657();
void testDeletedDataLabel();
void testDataPointInheritedColorDOCX();
void testExternalStrRefsXLSX();
void testSourceNumberFormatComplexCategoriesXLS();
void testSimpleCategoryAxis();
void testMultilevelCategoryAxis();
void testXaxisValues();
void testTdf123504();
void testTdf122765();
void testTdf123206CustomLabelField();
void testTdf125444PercentageCustomLabel();
void testDataPointLabelCustomPos();
void testTdf130032();
void testTdf134978();
void testTdf119138MissingAutoTitleDeleted();
void testStockChartShiftedCategoryPosition();
void testTdf133376();
void testTdf134225();
void testTdf136105();
void testTdf91250();
void testTdf134111();
void testTdf136752();
void testTdf137505();
void testTdf137734();
void testTdf137874();
void testTdfCustomShapePos();
void testTdf121281();
void testTdf139658();
CPPUNIT_TEST_SUITE(Chart2ImportTest2);
CPPUNIT_TEST(testTdf114179);
CPPUNIT_TEST(testTdf124243);
CPPUNIT_TEST(testTdf127393);
CPPUNIT_TEST(testTdf128733);
CPPUNIT_TEST(testTdf128432);
CPPUNIT_TEST(testTdf128627);
CPPUNIT_TEST(testTdf128634);
CPPUNIT_TEST(testTdf130657);
CPPUNIT_TEST(testDeletedDataLabel);
CPPUNIT_TEST(testDataPointInheritedColorDOCX);
CPPUNIT_TEST(testExternalStrRefsXLSX);
CPPUNIT_TEST(testSourceNumberFormatComplexCategoriesXLS);
CPPUNIT_TEST(testSimpleCategoryAxis);
CPPUNIT_TEST(testMultilevelCategoryAxis);
CPPUNIT_TEST(testXaxisValues);
CPPUNIT_TEST(testTdf123504);
CPPUNIT_TEST(testTdf122765);
CPPUNIT_TEST(testTdf123206CustomLabelField);
CPPUNIT_TEST(testTdf125444PercentageCustomLabel);
CPPUNIT_TEST(testDataPointLabelCustomPos);
CPPUNIT_TEST(testTdf130032);
CPPUNIT_TEST(testTdf134978);
CPPUNIT_TEST(testTdf119138MissingAutoTitleDeleted);
CPPUNIT_TEST(testStockChartShiftedCategoryPosition);
CPPUNIT_TEST(testTdf133376);
CPPUNIT_TEST(testTdf134225);
CPPUNIT_TEST(testTdf136105);
CPPUNIT_TEST(testTdf91250);
CPPUNIT_TEST(testTdf134111);
CPPUNIT_TEST(testTdf136752);
CPPUNIT_TEST(testTdf137505);
CPPUNIT_TEST(testTdf137734);
CPPUNIT_TEST(testTdf137874);
CPPUNIT_TEST(testTdfCustomShapePos);
CPPUNIT_TEST(testTdf121281);
CPPUNIT_TEST(testTdf139658);
CPPUNIT_TEST_SUITE_END();
};
void Chart2ImportTest2::testTdf114179()
{
load(u"/chart2/qa/extras/data/docx/", "testTdf114179.docx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
css::uno::Reference<chart2::XDiagram> xDiagram;
xDiagram.set(xChartDoc->getFirstDiagram());
CPPUNIT_ASSERT_MESSAGE("There is a Diagram.", xDiagram.is());
awt::Size aPage = getPageSize(xChartDoc);
awt::Size aSize = getSize(xDiagram, aPage);
CPPUNIT_ASSERT(aSize.Width > 0);
CPPUNIT_ASSERT(aSize.Height > 0);
}
void Chart2ImportTest2::testTdf124243()
{
load(u"/chart2/qa/extras/data/docx/", "tdf124243.docx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
Reference<beans::XPropertySet> xPS(xAxis, uno::UNO_QUERY_THROW);
bool bShow = true;
// test X Axis is not visible.
bool bSuccess = xPS->getPropertyValue("Show") >>= bShow;
CPPUNIT_ASSERT(bSuccess);
CPPUNIT_ASSERT(!bShow);
}
void Chart2ImportTest2::testTdf127393()
{
load(u"/chart2/qa/extras/data/pptx/", "tdf127393.pptx");
// 1st chart
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData1 = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData1.Categories.is());
CPPUNIT_ASSERT(aScaleData1.ShiftedCategoryPosition);
// 2nd chart
xChartDoc.set(getChartDocFromDrawImpress(1, 0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
xAxis.set(getAxisFromDoc(xChartDoc, 0, 0, 0));
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData2 = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData2.Categories.is());
CPPUNIT_ASSERT(!aScaleData2.ShiftedCategoryPosition);
}
void Chart2ImportTest2::testTdf128733()
{
load(u"/chart2/qa/extras/data/odt/", "tdf128733.odt");
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
// test secondary X axis ShiftedCategoryPosition value
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 1);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest2::testTdf128432()
{
load(u"/chart2/qa/extras/data/ods/", "tdf128432.ods");
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest2::testTdf128627()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf128627.xlsx");
// Test ShiftedCategoryPosition for Radar Chart
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(!aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest2::testTdf128634()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf128634.xlsx");
// Test ShiftedCategoryPosition for 3D Charts
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest2::testTdf130657()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf130657.xlsx");
// Test ShiftedCategoryPosition for charts which is not contain a "crossbetween" OOXML tag.
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
namespace
{
void checkDataLabelProperties(const Reference<chart2::XDataSeries>& xDataSeries,
sal_Int32 nDataPointIndex, bool bValueVisible)
{
uno::Reference<beans::XPropertySet> xPropertySet(
xDataSeries->getDataPointByIndex(nDataPointIndex), uno::UNO_SET_THROW);
chart2::DataPointLabel aLabel;
xPropertySet->getPropertyValue("Label") >>= aLabel;
CPPUNIT_ASSERT_EQUAL(bValueVisible, static_cast<bool>(aLabel.ShowNumber));
CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(aLabel.ShowNumberInPercent));
}
}
void Chart2ImportTest2::testDeletedDataLabel()
{
load(u"/chart2/qa/extras/data/xlsx/", "deleted_data_labels.xlsx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartCompFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<chart2::XDataSeries> xDataSeries0 = getDataSeriesFromDoc(xChartDoc, 0);
CPPUNIT_ASSERT(xDataSeries0.is());
checkDataLabelProperties(xDataSeries0, 0, true);
checkDataLabelProperties(xDataSeries0, 1, false);
checkDataLabelProperties(xDataSeries0, 2, true);
Reference<chart2::XDataSeries> xDataSeries1 = getDataSeriesFromDoc(xChartDoc, 1);
CPPUNIT_ASSERT(xDataSeries1.is());
checkDataLabelProperties(xDataSeries1, 0, false);
checkDataLabelProperties(xDataSeries1, 1, false);
checkDataLabelProperties(xDataSeries1, 2, false);
}
void Chart2ImportTest2::testDataPointInheritedColorDOCX()
{
load(u"/chart2/qa/extras/data/docx/", "data_point_inherited_color.docx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
css::uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW);
Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0),
uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
sal_Int32 nColor = xPropertySet->getPropertyValue("FillColor").get<sal_Int32>();
CPPUNIT_ASSERT_EQUAL(sal_Int32(16776960), nColor);
}
void Chart2ImportTest2::testExternalStrRefsXLSX()
{
load(u"/chart2/qa/extras/data/xlsx/", "external_str_ref.xlsx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartCompFromSheet(0, mxComponent),
UNO_QUERY_THROW);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
chart2::ScaleData aScaleData = xAxis->getScaleData();
css::uno::Sequence<css::uno::Any> aValues = aScaleData.Categories->getValues()->getData();
CPPUNIT_ASSERT_EQUAL(OUString("test1"), aValues[0].get<OUString>());
CPPUNIT_ASSERT_EQUAL(OUString("test2"), aValues[1].get<OUString>());
}
void Chart2ImportTest2::testSourceNumberFormatComplexCategoriesXLS()
{
load(u"/chart2/qa/extras/data/xls/", "source_number_format_axis.xls");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartCompFromSheet(0, mxComponent),
UNO_QUERY_THROW);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
chart2::ScaleData aScaleData = xAxis->getScaleData();
sal_Int32 nNumberFormat = aScaleData.Categories->getValues()->getNumberFormatKeyByIndex(-1);
CPPUNIT_ASSERT(nNumberFormat != 0);
}
void Chart2ImportTest2::testSimpleCategoryAxis()
{
load(u"/chart2/qa/extras/data/docx/", "testSimpleCategoryAxis.docx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
// Test the internal data.
CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
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<Sequence<OUString>> aCategories = xDescAccess->getComplexRowDescriptions();
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[0].getLength());
CPPUNIT_ASSERT(aCategories[0][0].endsWith("ria 1"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[1].getLength());
CPPUNIT_ASSERT(aCategories[1][0].endsWith("ria 2"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[2].getLength());
CPPUNIT_ASSERT(aCategories[2][0].endsWith("ria 3"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[3].getLength());
CPPUNIT_ASSERT(aCategories[3][0].endsWith("ria 4"));
}
void Chart2ImportTest2::testMultilevelCategoryAxis()
{
load(u"/chart2/qa/extras/data/docx/", "testMultilevelCategoryAxis.docx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
// Test the internal data.
CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
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 complex category labels.
Sequence<Sequence<OUString>> aCategories = xDescAccess->getComplexRowDescriptions();
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aCategories.getLength());
CPPUNIT_ASSERT_EQUAL(OUString("2011"), aCategories[0][0]);
CPPUNIT_ASSERT_EQUAL(OUString(""), aCategories[1][0]);
CPPUNIT_ASSERT_EQUAL(OUString("2012"), aCategories[2][0]);
CPPUNIT_ASSERT_EQUAL(OUString(""), aCategories[3][0]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 1"), aCategories[0][1]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 2"), aCategories[1][1]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 3"), aCategories[2][1]);
CPPUNIT_ASSERT_EQUAL(OUString("Categoria 4"), aCategories[3][1]);
}
void Chart2ImportTest2::testXaxisValues()
{
load(u"/chart2/qa/extras/data/docx/", "tdf124083.docx");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
const uno::Reference<chart2::data::XDataSequence> xDataSeq
= getDataSequenceFromDocByRole(xChartDoc, u"values-x");
Sequence<uno::Any> xSequence = xDataSeq->getData();
// test X values
CPPUNIT_ASSERT_EQUAL(uno::Any(0.04), xSequence[0]);
CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[1].getValue())));
CPPUNIT_ASSERT_EQUAL(uno::Any(0.16), xSequence[2]);
CPPUNIT_ASSERT_EQUAL(uno::Any(0.11), xSequence[3]);
CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[4].getValue())));
}
void Chart2ImportTest2::testTdf123504()
{
load(u"/chart2/qa/extras/data/ods/", "pie_chart_100_and_0.ods");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<chart2::XChartDocument> xChartDoc2(xChartDoc, UNO_QUERY_THROW);
Reference<chart2::XChartType> xChartType(getChartTypeFromDoc(xChartDoc2, 0), UNO_SET_THROW);
std::vector aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
CPPUNIT_ASSERT_EQUAL(size_t(1), aDataSeriesYValues.size());
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xSeriesSlices(getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=0"),
UNO_SET_THROW);
Reference<container::XIndexAccess> xIndexAccess(xSeriesSlices, UNO_QUERY_THROW);
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
Reference<drawing::XShape> xSlice(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
// Check size and position of the only slice in the chart (100%)
// In the regressed state, it used to be 0-sized at position 0,0
awt::Point aSlicePosition = xSlice->getPosition();
CPPUNIT_ASSERT_GREATER(sal_Int32(3000), aSlicePosition.X);
CPPUNIT_ASSERT_GREATER(sal_Int32(150), aSlicePosition.Y);
awt::Size aSliceSize = xSlice->getSize();
CPPUNIT_ASSERT_GREATER(sal_Int32(8500), aSliceSize.Height);
CPPUNIT_ASSERT_GREATER(sal_Int32(8500), aSliceSize.Width);
}
void Chart2ImportTest2::testTdf122765()
{
// The horizontal position of the slices was wrong.
load(u"/chart2/qa/extras/data/pptx/", "tdf122765.pptx");
Reference<chart::XChartDocument> xChartDoc = getChartDocFromDrawImpress(0, 0);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xSeriesSlices(getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=0"),
UNO_SET_THROW);
Reference<container::XIndexAccess> xIndexAccess(xSeriesSlices, UNO_QUERY_THROW);
CPPUNIT_ASSERT_EQUAL(sal_Int32(9), xIndexAccess->getCount());
Reference<drawing::XShape> xSlice(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
// Check position of the first slice, all slices move together, so enough to check only one.
// Wrong position was around 5856.
awt::Point aSlicePosition = xSlice->getPosition();
CPPUNIT_ASSERT_GREATER(sal_Int32(7000), aSlicePosition.X);
}
void Chart2ImportTest2::testTdf123206CustomLabelField()
{
// File contains the deprecated "custom-label-field" attribute of the
// "data-point" element. It should be interpreted and stored as a data point
// property.
uno::Reference<chart2::XChartDocument> xChartDoc(
getChartDocFromImpress(u"/chart2/qa/extras/data/odp/", "tdf123206.odp"),
uno::UNO_QUERY_THROW);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
CPPUNIT_ASSERT(xDataSeries.is());
Reference<beans::XPropertySet> xDp = xDataSeries->getDataPointByIndex(1);
Sequence<Reference<chart2::XDataPointCustomLabelField>> aLabelFields;
CPPUNIT_ASSERT(xDp->getPropertyValue("CustomLabelFields") >>= aLabelFields);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aLabelFields.getLength());
CPPUNIT_ASSERT_EQUAL(OUString("Kiskacsa"), aLabelFields[0]->getString());
}
void Chart2ImportTest2::testTdf125444PercentageCustomLabel()
{
load(u"/chart2/qa/extras/data/pptx/", "tdf125444.pptx");
// 1st chart
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
Reference<beans::XPropertySet> xDp = xDataSeries->getDataPointByIndex(1);
Sequence<Reference<chart2::XDataPointCustomLabelField>> aLabelFields;
CPPUNIT_ASSERT(xDp->getPropertyValue("CustomLabelFields") >>= aLabelFields);
// There are three label field: a value label, a newline and a percentage label. We want
// to assert the latter.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aLabelFields.getLength());
CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType_PERCENTAGE,
aLabelFields[2]->getFieldType());
}
void Chart2ImportTest2::testDataPointLabelCustomPos()
{
// test CustomLabelPosition on Bar chart
load(u"/chart2/qa/extras/data/xlsx/", "testDataPointLabelCustomPos.xlsx");
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0),
uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
chart2::RelativePosition aCustomLabelPosition;
xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Primary, -0.14621409921671025, 1e-7);
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Secondary, -5.2887961029923464E-2, 1e-7);
sal_Int32 aPlacement;
xPropertySet->getPropertyValue("LabelPlacement") >>= aPlacement;
CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::OUTSIDE, aPlacement);
}
void Chart2ImportTest2::testTdf130032()
{
// test CustomLabelPosition on Line chart
load(u"/chart2/qa/extras/data/xlsx/", "testTdf130032.xlsx");
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(1),
uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
chart2::RelativePosition aCustomLabelPosition;
xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Primary, -0.0438333333333334, 1e-7);
CPPUNIT_ASSERT_DOUBLES_EQUAL(aCustomLabelPosition.Secondary, 0.086794050743657, 1e-7);
sal_Int32 aPlacement;
xPropertySet->getPropertyValue("LabelPlacement") >>= aPlacement;
CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::RIGHT, aPlacement);
}
void Chart2ImportTest2::testTdf134978()
{
// test CustomLabelPosition on Pie chart
load(u"/chart2/qa/extras/data/xlsx/", "tdf134978.xlsx");
uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT(xChartDoc.is());
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(2),
uno::UNO_SET_THROW);
CPPUNIT_ASSERT(xPropertySet.is());
chart2::RelativePosition aCustomLabelPosition;
xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.040273622047244093, aCustomLabelPosition.Primary, 1e-7);
CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.25635352872557599, aCustomLabelPosition.Secondary, 1e-7);
}
void Chart2ImportTest2::testTdf119138MissingAutoTitleDeleted()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf119138-missing-autotitledeleted.xlsx");
Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
uno::Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
CPPUNIT_ASSERT_MESSAGE(
"Missing autoTitleDeleted is implied to be True if title text is present", xTitle.is());
}
void Chart2ImportTest2::testStockChartShiftedCategoryPosition()
{
load(u"/chart2/qa/extras/data/odt/", "stock_chart_LO_6_2.odt");
uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xAxis.is());
chart2::ScaleData aScaleData = xAxis->getScaleData();
CPPUNIT_ASSERT(aScaleData.Categories.is());
CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
}
void Chart2ImportTest2::testTdf133376()
{
// FIXME: the DPI check should be removed when either (1) the test is fixed to work with
// non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
if (!IsDefaultDPI())
return;
load(u"/chart2/qa/extras/data/xlsx/", "tdf133376.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 3rd data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(1082, aLabelPosition.X, 30);
CPPUNIT_ASSERT_DOUBLES_EQUAL(5462, aLabelPosition.Y, 30);
}
void Chart2ImportTest2::testTdf134225()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf134225.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel1(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel1.is());
Reference<drawing::XShape> xDataPointLabel2(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel2.is());
#if defined(_WIN32)
// font is MS Comic Sans which we can only assume is available under windows
awt::Point aLabelPosition1 = xDataPointLabel1->getPosition();
awt::Point aLabelPosition2 = xDataPointLabel2->getPosition();
// Check the distance between the position of the 1st data point label and the second one
CPPUNIT_ASSERT_DOUBLES_EQUAL(1669, sal_Int32(aLabelPosition2.X - aLabelPosition1.X), 30);
CPPUNIT_ASSERT_DOUBLES_EQUAL(2166, sal_Int32(aLabelPosition2.Y - aLabelPosition1.Y), 30);
#endif
}
void Chart2ImportTest2::testTdf136105()
{
// FIXME: the DPI check should be removed when either (1) the test is fixed to work with
// non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
if (!IsDefaultDPI())
return;
load(u"/chart2/qa/extras/data/xlsx/", "tdf136105.xlsx");
// 1st chart with fix inner position and size
{
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 1st data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(8797, aLabelPosition.X, 500);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1374, aLabelPosition.Y, 500);
}
// 2nd chart with auto inner position and size
{
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(1, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 1st data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(7978, aLabelPosition.X, 500);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1048, aLabelPosition.Y, 500);
}
}
void Chart2ImportTest2::testTdf91250()
{
load(u"/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]);
}
void Chart2ImportTest2::testTdf134111()
{
// tdf134111 : To check TextBreak value is true
load(u"/chart2/qa/extras/data/docx/", "tdf134111.docx");
uno::Reference<chart::XChartDocument> xChartDoc = getChartDocFromWriter(0);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
uno::Reference<chart::XDiagram> mxDiagram(xChartDoc->getDiagram());
CPPUNIT_ASSERT(mxDiagram.is());
uno::Reference<chart::XAxisXSupplier> xAxisXSupp(mxDiagram, uno::UNO_QUERY);
CPPUNIT_ASSERT(xAxisXSupp.is());
uno::Reference<beans::XPropertySet> xAxisProp(xAxisXSupp->getXAxis());
bool bTextBreak = false;
xAxisProp->getPropertyValue("TextBreak") >>= bTextBreak;
// Expected value of 'TextBreak' is true
CPPUNIT_ASSERT(bTextBreak);
}
void Chart2ImportTest2::testTdf136752()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf136752.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
// Check the position of the 1st data point label, which is out from the pie slice
awt::Point aLabelPosition = xDataPointLabel->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(8675, aLabelPosition.X, 500);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1458, aLabelPosition.Y, 500);
}
void Chart2ImportTest2::testTdf137505()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf137505.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
CPPUNIT_ASSERT(xCustomShape.is());
float nFontSize;
Reference<text::XText> xRange(xCustomShape, uno::UNO_QUERY_THROW);
Reference<text::XTextCursor> xAt = xRange->createTextCursor();
Reference<beans::XPropertySet> xProps(xAt, UNO_QUERY);
// check the text size of custom shape, inside the chart.
CPPUNIT_ASSERT(xProps->getPropertyValue("CharHeight") >>= nFontSize);
CPPUNIT_ASSERT_EQUAL(float(12), nFontSize);
}
void Chart2ImportTest2::testTdf137734()
{
load(u"/chart2/qa/extras/data/xlsx/", "tdf137734.xlsx");
Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
CPPUNIT_ASSERT(xChartDoc.is());
Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
CPPUNIT_ASSERT(xDataSeries.is());
Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY_THROW);
uno::Any aAny = xPropSet->getPropertyValue("VaryColorsByPoint");
bool bVaryColor = true;
CPPUNIT_ASSERT(aAny >>= bVaryColor);
CPPUNIT_ASSERT(!bVaryColor);
// tdf#126133 Test primary X axis Rotation value
Reference<chart2::XAxis> xXAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
CPPUNIT_ASSERT(xXAxis.is());
Reference<chart2::XTitled> xTitled(xXAxis, uno::UNO_QUERY_THROW);
Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
CPPUNIT_ASSERT(xTitle.is());
Reference<beans::XPropertySet> xTitlePropSet(xTitle, uno::UNO_QUERY_THROW);
uno::Any aAny2 = xTitlePropSet->getPropertyValue("TextRotation");
double nRotation = -1;
CPPUNIT_ASSERT(aAny2 >>= nRotation);
CPPUNIT_ASSERT_EQUAL(0.0, nRotation);
}
void Chart2ImportTest2::testTdf137874()
{
load(u"/chart2/qa/extras/data/xlsx/", "piechart_legend.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xLegendEntry;
xLegendEntry
= getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0:LegendEntry=0");
CPPUNIT_ASSERT(xLegendEntry.is());
}
void Chart2ImportTest2::testTdfCustomShapePos()
{
load(u"/chart2/qa/extras/data/docx/", "testcustomshapepos.docx");
Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
// test position and size of a custom shape within a chart, rotated by 0 degree.
{
Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
awt::Point aPosition = xCustomShape->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(8845, aPosition.X, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(855, aPosition.Y, 300);
awt::Size aSize = xCustomShape->getSize();
CPPUNIT_ASSERT_DOUBLES_EQUAL(4831, aSize.Width, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1550, aSize.Height, 300);
}
// test position and size of a custom shape within a chart, rotated by 90 degree.
{
Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
awt::Point aPosition = xCustomShape->getPosition();
CPPUNIT_ASSERT_DOUBLES_EQUAL(1658, aPosition.X, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(6119, aPosition.Y, 300);
awt::Size aSize = xCustomShape->getSize();
CPPUNIT_ASSERT_DOUBLES_EQUAL(4165, aSize.Width, 300);
CPPUNIT_ASSERT_DOUBLES_EQUAL(1334, aSize.Height, 300);
}
}
void Chart2ImportTest2::testTdf121281()
{
load(u"/chart2/qa/extras/data/xlsx/", "incorrect_label_position.xlsx");
Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
UNO_QUERY_THROW);
Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
Reference<drawing::XShape> xDataPointLabel(
getShapeByName(xShapes,
"CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
UNO_SET_THROW);
CPPUNIT_ASSERT(xDataPointLabel.is());
awt::Point aLabelPosition = xDataPointLabel->getPosition();
// This failed, if the data label flowed out of the chart area.
CPPUNIT_ASSERT_GREATEREQUAL(static_cast<sal_Int32>(0), aLabelPosition.Y);
}
void Chart2ImportTest2::testTdf139658()
{
load(u"/chart2/qa/extras/data/docx/", "tdf139658.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(3), aCategories.getLength());
CPPUNIT_ASSERT_EQUAL(OUString("category1"), aCategories[0]);
CPPUNIT_ASSERT_EQUAL(OUString("\"category2\""), aCategories[1]);
CPPUNIT_ASSERT_EQUAL(OUString("category\"3"), aCategories[2]);
}
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest2);
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */