diff options
Diffstat (limited to 'chart2/qa/extras/chart2import.cxx')
-rw-r--r-- | chart2/qa/extras/chart2import.cxx | 935 |
1 files changed, 560 insertions, 375 deletions
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx index 0b4f6d89303e..02c00daed941 100644 --- a/chart2/qa/extras/chart2import.cxx +++ b/chart2/qa/extras/chart2import.cxx @@ -29,210 +29,35 @@ #include <com/sun/star/chart2/data/XTextualDataSequence.hpp> #include <com/sun/star/chart/DataLabelPlacement.hpp> #include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/qa/XDumper.hpp> #include <iterator> #include <com/sun/star/util/Color.hpp> -#include <com/sun/star/awt/Gradient.hpp> +#include <com/sun/star/awt/Gradient2.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <docmodel/uno/UnoGradientTools.hxx> +namespace +{ class Chart2ImportTest : public ChartTest { public: - void Fdo60083(); - void testSteppedLines(); - void testErrorBarRange(); - void testErrorBarFormatting(); - void testODSChartSeries(); - void testXLSXChartSeries(); - void testXLSChartSeries(); - void testODTChartSeries(); - void testDOCChartSeries(); - void testDOCXChartSeries(); - void testDOCXChartEmptySeries(); - void testTdf81396(); - void testDOCXChartValuesSize(); - void testPPTXChartSeries(); - void testPPTXSparseChartSeries(); - /** - * Original data contains 3 series but 2 of them are hidden. For now, we - * detect and skip those hidden series on import (since we don't support - * hidden columns for internal data table yet). - */ - void testPPTXHiddenDataSeries(); - void testPPTXPercentageNumberFormats(); - void testPieChartLabelsNumFormat(); - void testPPTXStackedNonStackedYAxis(); - void testPPTChartSeries(); - void testODPChartSeries(); - void testBnc864396(); - void testBnc882383(); - void testTransparencyGradientValue(); - void testBnc889755(); - void testSimpleStrictXLSX(); - void testDelayedCellImport(); // chart range referencing content on later sheets - void testFlatODSStackedColumnChart(); - void testFdo78080(); - void testFdo54361(); - void testFdo54361_1(); - void testTdf127811(); - void testTdf86624(); // manually placed legends - void testTdf105517(); - void testTdf106217(); - void testTdf108021(); - void testTdf100084(); - void testTdf124817(); - void testTdf126033(); - void testAutoBackgroundXLSX(); - void testAutoChartAreaBorderPropXLSX(); - void testChartAreaStyleBackgroundXLSX(); - void testChartHatchFillXLSX(); - void testAxisTextRotationXLSX(); - // void testTextCanOverlapXLSX(); // TODO : temporarily disabled. - void testTextBreakXLSX(); - void testNumberFormatsXLSX(); - void testNumberFormatsDOCX(); - void testPercentageNumberFormatsDOCX(); - - void testTransparentBackground(OUString const & filename); + Chart2ImportTest() : ChartTest("/chart2/qa/extras/data/") {} - // below are OOXML default value tests for cases - // where we fixed the handling of MSO 2007 vs OOXML - void testAutoTitleDelDefaultValue2007XLSX(); - void testAutoTitleDelDefaultValue2013XLSX(); - void testDispBlanksAsDefaultValue2007XLSX(); - void testDispBlanksAsDefaultValue2013XLSX(); - - void testSmoothDefaultValue2007XLSX(); - void testSmoothDefaultValue2013XLSX(); - void testTrendlineDefaultValue2007XLSX(); - void testTrendlineDefaultValue2013XLSX(); - void testVaryColorDefaultValues2007XLSX(); - void testVaryColorDefaultValues2013XLSX(); - void testPlotVisOnlyDefaultValue2013XLSX(); - void testRAngAxDefaultValue2013XLSX(); - void testMajorTickMarksDefaultValue2013XLSX(); - void testMinorTickMarksDefaultValue2013XLSX(); - - void testAxisTitleDefaultRotationXLSX(); - void testSecondaryAxisTitleDefaultRotationXLSX(); - void testAxisTitleRotationXLSX(); - void testAxisTitlePositionDOCX(); - void testCombinedChartAttachedAxisXLSX(); - void testTdf140489MultiSeriesChartAxisXLSX(); - - void testTdf90510(); // Pie chart label placement settings(XLS) - void testTdf109858(); // Pie chart label placement settings(XLSX) - void testTdf130105(); - - void testTdf111173(); - void testTdf122226(); - - void testInternalDataProvider(); - - void testTdf115107(); // import complex data point labels - void testTdf115107_2(); // import complex data point labels in cobo charts with multiple data series - - void testTdf116163(); - - void testTdf48041(); - - void testTdf121205(); - - CPPUNIT_TEST_SUITE(Chart2ImportTest); - CPPUNIT_TEST(Fdo60083); - CPPUNIT_TEST(testSteppedLines); - CPPUNIT_TEST(testErrorBarRange); - CPPUNIT_TEST(testErrorBarFormatting); - CPPUNIT_TEST(testODSChartSeries); - CPPUNIT_TEST(testXLSXChartSeries); - CPPUNIT_TEST(testXLSChartSeries); - CPPUNIT_TEST(testODTChartSeries); - CPPUNIT_TEST(testDOCChartSeries); - CPPUNIT_TEST(testDOCXChartSeries); - CPPUNIT_TEST(testDOCXChartEmptySeries); - CPPUNIT_TEST(testTdf81396); - CPPUNIT_TEST(testDOCXChartValuesSize); - CPPUNIT_TEST(testPPTChartSeries); - CPPUNIT_TEST(testPPTXChartSeries); - CPPUNIT_TEST(testPPTXSparseChartSeries); - CPPUNIT_TEST(testPPTXHiddenDataSeries); - CPPUNIT_TEST(testPPTXPercentageNumberFormats); - CPPUNIT_TEST(testPieChartLabelsNumFormat); - CPPUNIT_TEST(testPPTXStackedNonStackedYAxis); - CPPUNIT_TEST(testODPChartSeries); - CPPUNIT_TEST(testBnc864396); - CPPUNIT_TEST(testBnc882383); - CPPUNIT_TEST(testTransparencyGradientValue); - CPPUNIT_TEST(testBnc889755); - CPPUNIT_TEST(testSimpleStrictXLSX); - CPPUNIT_TEST(testDelayedCellImport); - CPPUNIT_TEST(testFlatODSStackedColumnChart); - CPPUNIT_TEST(testFdo78080); - CPPUNIT_TEST(testFdo54361); - CPPUNIT_TEST(testFdo54361_1); - CPPUNIT_TEST(testTdf127811); - CPPUNIT_TEST(testTdf86624); - CPPUNIT_TEST(testTdf105517); - CPPUNIT_TEST(testTdf106217); - CPPUNIT_TEST(testTdf108021); - CPPUNIT_TEST(testTdf100084); - CPPUNIT_TEST(testTdf124817); - CPPUNIT_TEST(testTdf126033); - CPPUNIT_TEST(testAutoBackgroundXLSX); - CPPUNIT_TEST(testAutoChartAreaBorderPropXLSX); - CPPUNIT_TEST(testChartAreaStyleBackgroundXLSX); - CPPUNIT_TEST(testChartHatchFillXLSX); - CPPUNIT_TEST(testAxisTextRotationXLSX); - // CPPUNIT_TEST(testTextCanOverlapXLSX); // TODO : temporarily disabled. - CPPUNIT_TEST(testTextBreakXLSX); - CPPUNIT_TEST(testNumberFormatsXLSX); - CPPUNIT_TEST(testNumberFormatsDOCX); - CPPUNIT_TEST(testPercentageNumberFormatsDOCX); - CPPUNIT_TEST(testAutoTitleDelDefaultValue2007XLSX); - CPPUNIT_TEST(testAutoTitleDelDefaultValue2013XLSX); - CPPUNIT_TEST(testDispBlanksAsDefaultValue2007XLSX); - CPPUNIT_TEST(testDispBlanksAsDefaultValue2013XLSX); - CPPUNIT_TEST(testSmoothDefaultValue2007XLSX); - CPPUNIT_TEST(testSmoothDefaultValue2013XLSX); - CPPUNIT_TEST(testTrendlineDefaultValue2007XLSX); - CPPUNIT_TEST(testTrendlineDefaultValue2013XLSX); - CPPUNIT_TEST(testVaryColorDefaultValues2007XLSX); - CPPUNIT_TEST(testVaryColorDefaultValues2013XLSX); - CPPUNIT_TEST(testPlotVisOnlyDefaultValue2013XLSX); - CPPUNIT_TEST(testRAngAxDefaultValue2013XLSX); - CPPUNIT_TEST(testMajorTickMarksDefaultValue2013XLSX); - CPPUNIT_TEST(testMinorTickMarksDefaultValue2013XLSX); - CPPUNIT_TEST(testAxisTitleDefaultRotationXLSX); - CPPUNIT_TEST(testSecondaryAxisTitleDefaultRotationXLSX); - CPPUNIT_TEST(testAxisTitleRotationXLSX); - CPPUNIT_TEST(testAxisTitlePositionDOCX); - CPPUNIT_TEST(testCombinedChartAttachedAxisXLSX); - CPPUNIT_TEST(testTdf140489MultiSeriesChartAxisXLSX); - CPPUNIT_TEST(testTdf90510); - CPPUNIT_TEST(testTdf109858); - CPPUNIT_TEST(testTdf130105); - CPPUNIT_TEST(testTdf111173); - CPPUNIT_TEST(testTdf122226); - - CPPUNIT_TEST(testInternalDataProvider); - - CPPUNIT_TEST(testTdf115107); - CPPUNIT_TEST(testTdf115107_2); - - CPPUNIT_TEST(testTdf116163); - - CPPUNIT_TEST(testTdf48041); - - CPPUNIT_TEST(testTdf121205); - - CPPUNIT_TEST_SUITE_END(); +protected: + void testTransparentBackground(std::u16string_view filename); }; +OUString getShapeDump(css::uno::Reference<css::chart::XChartDocument> const& doc) +{ + return css::uno::Reference<css::qa::XDumper>(doc, css::uno::UNO_QUERY_THROW)->dump("shapes"); +} + // error bar import // split method up into smaller chunks for more detailed tests -void Chart2ImportTest::Fdo60083() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo60083) { - load(u"/chart2/qa/extras/data/ods/", "fdo60083.ods"); + loadFromFile(u"ods/fdo60083.ods"); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent ); CPPUNIT_ASSERT(xChartDoc.is()); @@ -279,9 +104,9 @@ void Chart2ImportTest::Fdo60083() CPPUNIT_ASSERT(!xErrorBarXProps.is()); } -void Chart2ImportTest::testErrorBarRange() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testErrorBarRange) { - load(u"/chart2/qa/extras/data/ods/", "error_bar_range.ods"); + loadFromFile(u"ods/error_bar_range.ods"); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent ); CPPUNIT_ASSERT(xChartDoc.is()); @@ -308,9 +133,9 @@ void Chart2ImportTest::testErrorBarRange() CPPUNIT_ASSERT_EQUAL(OUString("$Sheet1.$C$2:$C$4"), aRangePos); } -void Chart2ImportTest::testErrorBarFormatting() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testErrorBarFormatting) { - load(u"/chart2/qa/extras/data/ods/", "error_bar_properties.ods"); + loadFromFile(u"ods/error_bar_properties.ods"); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent ); CPPUNIT_ASSERT(xChartDoc.is()); @@ -331,7 +156,7 @@ void Chart2ImportTest::testErrorBarFormatting() } // stepped line interpolation -void Chart2ImportTest::testSteppedLines() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSteppedLines) { const sal_Int32 MAXSHEET = 14; chart2::CurveStyle const curveStyle[] = { @@ -351,7 +176,7 @@ void Chart2ImportTest::testSteppedLines() chart2::CurveStyle_STEP_CENTER_Y }; - load(u"/chart2/qa/extras/data/ods/", "stepped_lines.ods"); + loadFromFile(u"ods/stepped_lines.ods"); for(sal_Int32 nSheet = 0; nSheet < MAXSHEET; ++nSheet) { uno::Reference< chart2::XChartDocument > xChart2Doc = getChartDocFromSheet( nSheet, mxComponent ); @@ -369,7 +194,7 @@ void Chart2ImportTest::testSteppedLines() } } -static uno::Sequence < OUString > getChartColumnDescriptions( uno::Reference< chart::XChartDocument > const & xChart1Doc) +uno::Sequence < OUString > getChartColumnDescriptions( uno::Reference< chart::XChartDocument > const & xChart1Doc) { CPPUNIT_ASSERT(xChart1Doc.is()); uno::Reference< chart::XChartDataArray > xChartData ( xChart1Doc->getData(), UNO_QUERY_THROW); @@ -377,10 +202,10 @@ static uno::Sequence < OUString > getChartColumnDescriptions( uno::Reference< ch return seriesList; } -void Chart2ImportTest::testODSChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testODSChartSeries) { - load(u"/chart2/qa/extras/data/ods/", "chart.ods"); - uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + loadFromFile(u"ods/chart.ods"); + uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); uno::Sequence < OUString > seriesList = getChartColumnDescriptions( xChart1Doc); CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]); CPPUNIT_ASSERT_EQUAL(OUString("Col2"), seriesList[1]); @@ -388,10 +213,10 @@ void Chart2ImportTest::testODSChartSeries() } -void Chart2ImportTest::testXLSXChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testXLSXChartSeries) { - load(u"/chart2/qa/extras/data/xlsx/", "chart.xlsx"); - uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + loadFromFile(u"xlsx/chart.xlsx"); + uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); uno::Sequence < OUString > seriesList = getChartColumnDescriptions(xChart1Doc ); CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]); CPPUNIT_ASSERT_EQUAL(OUString("Col2"), seriesList[1]); @@ -399,10 +224,10 @@ void Chart2ImportTest::testXLSXChartSeries() } -void Chart2ImportTest::testXLSChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testXLSChartSeries) { - load(u"/chart2/qa/extras/data/xls/", "chart.xls"); - uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + loadFromFile(u"xls/chart.xls"); + uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); uno::Sequence < OUString > seriesList = getChartColumnDescriptions(xChart1Doc ); CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]); CPPUNIT_ASSERT_EQUAL(OUString("Col 2"), seriesList[1]); @@ -410,9 +235,9 @@ void Chart2ImportTest::testXLSChartSeries() } -void Chart2ImportTest::testODTChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testODTChartSeries) { - load(u"/chart2/qa/extras/data/odt/", "chart.odt"); + loadFromFile(u"odt/chart.odt"); uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent); CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]); CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]); @@ -420,18 +245,18 @@ void Chart2ImportTest::testODTChartSeries() } -void Chart2ImportTest::testDOCChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCChartSeries) { - load(u"/chart2/qa/extras/data/doc/", "chart.doc"); + loadFromFile(u"doc/chart.doc"); uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent); CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]); CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]); CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]); } -void Chart2ImportTest::testDOCXChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCXChartSeries) { - load(u"/chart2/qa/extras/data/docx/", "chart.docx"); + loadFromFile(u"docx/chart.docx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -445,9 +270,9 @@ void Chart2ImportTest::testDOCXChartSeries() CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), aLabels[2][0].get<OUString>()); } -void Chart2ImportTest::testDOCXChartEmptySeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCXChartEmptySeries) { - load(u"/chart2/qa/extras/data/docx/", "tdf125337.docx"); + loadFromFile(u"docx/tdf125337.docx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -471,9 +296,9 @@ void Chart2ImportTest::testDOCXChartEmptySeries() CPPUNIT_ASSERT(std::isnan(aValues[2][1])); } -void Chart2ImportTest::testTdf81396() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf81396) { - load(u"/chart2/qa/extras/data/xlsx/", "tdf81396.xlsx"); + loadFromFile(u"xlsx/tdf81396.xlsx"); Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent), UNO_QUERY_THROW); @@ -488,9 +313,22 @@ void Chart2ImportTest::testTdf81396() CPPUNIT_ASSERT_EQUAL(105.210801910481, aDataSeriesYValues[0][0]); } -void Chart2ImportTest::testDOCXChartValuesSize() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXChartErrorBars) { - load( u"/chart2/qa/extras/data/docx/", "bubblechart.docx" ); + loadFromFile(u"pptx/tdf127720.pptx"); + Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xChartDoc.is()); + + uno::Reference< chart::XChartDataArray > xDataArray(xChartDoc->getDataProvider(), UNO_QUERY_THROW); + Sequence<OUString> aColumnDesc = xDataArray->getColumnDescriptions(); + // Number of columns = 4 (Y-values, X-values and positive/negative error bars). + // Without the fix there would only be 2 columns (no error range). + CPPUNIT_ASSERT_EQUAL_MESSAGE("There must be 4 columns and descriptions", static_cast<sal_Int32>(4), aColumnDesc.getLength()); +} + +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCXChartValuesSize) +{ + loadFromFile(u"docx/bubblechart.docx" ); Reference<chart2::XChartDocument> xChartDoc( getChartDocFromWriter(0), uno::UNO_QUERY ); CPPUNIT_ASSERT( xChartDoc.is() ); @@ -509,10 +347,11 @@ void Chart2ImportTest::testDOCXChartValuesSize() CPPUNIT_ASSERT_DOUBLES_EQUAL( aExpected[nRowIdx][nColIdx], aData[nRowIdx][nColIdx], 1e-1 ); } -void Chart2ImportTest::testPPTChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTChartSeries) { //test chart series names for ppt - uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions(u"/chart2/qa/extras/data/ppt/", "chart.ppt"); + loadFromFile(u"ppt/chart.ppt"); + uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions(0, 0); CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]); CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]); @@ -520,10 +359,10 @@ void Chart2ImportTest::testPPTChartSeries() } -void Chart2ImportTest::testPPTXChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXChartSeries) { //test chart series names for pptx - load(u"/chart2/qa/extras/data/pptx/", "chart.pptx"); + loadFromFile(u"pptx/chart.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -537,10 +376,10 @@ void Chart2ImportTest::testPPTXChartSeries() CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), aLabels[2][0].get<OUString>()); } -void Chart2ImportTest::testPPTXSparseChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXSparseChartSeries) { //test chart series sparse data for pptx - load(u"/chart2/qa/extras/data/pptx/", "sparse-chart.pptx"); + loadFromFile(u"pptx/sparse-chart.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -559,9 +398,14 @@ void Chart2ImportTest::testPPTXSparseChartSeries() CPPUNIT_ASSERT_EQUAL(-2.8, aValues[1][3]); } -void Chart2ImportTest::testPPTXHiddenDataSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXHiddenDataSeries) { - load(u"/chart2/qa/extras/data/pptx/", "stacked-bar-chart-hidden-series.pptx"); + /** + * Original data contains 3 series but 2 of them are hidden. For now, we + * detect and skip those hidden series on import (since we don't support + * hidden columns for internal data table yet). + */ + loadFromFile(u"pptx/stacked-bar-chart-hidden-series.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -598,9 +442,9 @@ void Chart2ImportTest::testPPTXHiddenDataSeries() CPPUNIT_ASSERT_EQUAL(OUString("Category 4"), aCategories[3][0]); } -void Chart2ImportTest::testPPTXPercentageNumberFormats() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXPercentageNumberFormats) { - load(u"/chart2/qa/extras/data/pptx/", "percentage-number-formats.pptx"); + loadFromFile(u"pptx/percentage-number-formats.pptx"); // 1st chart Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); @@ -664,10 +508,10 @@ void Chart2ImportTest::testPPTXPercentageNumberFormats() CPPUNIT_ASSERT_MESSAGE("Y axis should be a percent format.", (nType & util::NumberFormat::PERCENT)); } -void Chart2ImportTest::testPieChartLabelsNumFormat() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPieChartLabelsNumFormat) { - load(u"/chart2/qa/extras/data/xlsx/", "tdfPieNumFormat.xlsx"); - uno::Reference< chart::XChartDocument > xChartDoc(getChartCompFromSheet(0, mxComponent), UNO_QUERY_THROW); + loadFromFile(u"xlsx/tdfPieNumFormat.xlsx"); + uno::Reference< chart::XChartDocument > xChartDoc(getChartCompFromSheet(0, 0, mxComponent), UNO_QUERY_THROW); CPPUNIT_ASSERT(xChartDoc.is()); // test data point labels format Reference<beans::XPropertySet> xDataPointPropSet(xChartDoc->getDiagram()->getDataPointProperties(0, 0), uno::UNO_SET_THROW); @@ -676,9 +520,9 @@ void Chart2ImportTest::testPieChartLabelsNumFormat() CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumber); } -void Chart2ImportTest::testPPTXStackedNonStackedYAxis() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXStackedNonStackedYAxis) { - load(u"/chart2/qa/extras/data/pptx/", "stacked-non-stacked-mix-y-axis.pptx"); + loadFromFile(u"pptx/stacked-non-stacked-mix-y-axis.pptx"); // 1st chart is a normal stacked column. Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); @@ -735,19 +579,21 @@ void Chart2ImportTest::testPPTXStackedNonStackedYAxis() CPPUNIT_ASSERT_MESSAGE("Y axis should NOT be a percent format.", !(nType & util::NumberFormat::PERCENT)); } -void Chart2ImportTest::testODPChartSeries() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testODPChartSeries) { //test chart series names for odp - uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions(u"/chart2/qa/extras/data/odp/", "chart.odp"); + loadFromFile(u"odp/chart.odp"); + uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions(0, 0); CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]); CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]); CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]); } -void Chart2ImportTest::testBnc864396() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc864396) { - uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromImpress(u"/chart2/qa/extras/data/pptx/", "bnc864396.pptx"), uno::UNO_QUERY_THROW); + loadFromFile(u"pptx/bnc864396.pptx"); + uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0,0), uno::UNO_QUERY_THROW); CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider()); uno::Reference< chart2::XInternalDataProvider > xDataProvider( xChartDoc->getDataProvider(), uno::UNO_QUERY_THROW ); @@ -760,9 +606,9 @@ void Chart2ImportTest::testBnc864396() } } -void Chart2ImportTest::testBnc889755() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc889755) { - load(u"/chart2/qa/extras/data/pptx/", "bnc889755.pptx"); + loadFromFile(u"pptx/bnc889755.pptx"); uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 5), uno::UNO_QUERY_THROW); CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider()); @@ -784,17 +630,26 @@ void Chart2ImportTest::testBnc889755() //tdf#139940 - the title's gradient was lost and was filled with solid blue, instead of a "blue underline". uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); + // Shape "Title 3" + // MCGR: Use the whole completely imported transparency gradient to check for correctness uno::Reference<beans::XPropertySet> xShapeProps(xPage->getByIndex(4), uno::UNO_QUERY_THROW); - awt::Gradient aTransparence; + awt::Gradient2 aTransparence; xShapeProps->getPropertyValue("FillTransparenceGradient") >>= aTransparence; - CPPUNIT_ASSERT(aTransparence.StartColor != aTransparence.EndColor); - CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xffffff), aTransparence.StartColor); + const basegfx::BColorStops aColorStops = model::gradient::getColorStopsFromUno(aTransparence.ColorStops); + + CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size()); + CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0)); + CPPUNIT_ASSERT_EQUAL(Color(0x404040), Color(aColorStops[0].getStopColor())); + CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.070000000000000007)); + CPPUNIT_ASSERT_EQUAL(Color(0x404040), Color(aColorStops[1].getStopColor())); + CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 0.080000000000000002)); + CPPUNIT_ASSERT_EQUAL(COL_WHITE, Color(aColorStops[2].getStopColor())); } -void Chart2ImportTest::testBnc882383() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc882383) { - load(u"/chart2/qa/extras/data/pptx/", "bnc882383.pptx"); + loadFromFile(u"pptx/bnc882383.pptx"); uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY_THROW); uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0)); CPPUNIT_ASSERT(xDataSeries.is()); @@ -805,9 +660,9 @@ void Chart2ImportTest::testBnc882383() CPPUNIT_ASSERT(!sGradientName.isEmpty()); } -void Chart2ImportTest::testTransparencyGradientValue() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTransparencyGradientValue) { - load(u"/chart2/qa/extras/data/xlsx/", "tdf128732.xlsx"); + loadFromFile(u"xlsx/tdf128732.xlsx"); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT(xChartDoc.is()); uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0)); @@ -818,19 +673,25 @@ void Chart2ImportTest::testTransparencyGradientValue() xPropertySet->getPropertyValue("FillTransparenceGradientName") >>= sTranspGradientName; CPPUNIT_ASSERT(!sTranspGradientName.isEmpty()); - awt::Gradient aTransparenceGradient; + awt::Gradient2 aTransparenceGradient; uno::Reference< lang::XMultiServiceFactory > xFact(xChartDoc, uno::UNO_QUERY); CPPUNIT_ASSERT(xFact.is()); uno::Reference< container::XNameAccess > xTransparenceGradient(xFact->createInstance("com.sun.star.drawing.TransparencyGradientTable"), uno::UNO_QUERY); uno::Any rTransparenceValue = xTransparenceGradient->getByName(sTranspGradientName); CPPUNIT_ASSERT(rTransparenceValue >>= aTransparenceGradient); - CPPUNIT_ASSERT_EQUAL(sal_Int32(3355443), aTransparenceGradient.EndColor); - CPPUNIT_ASSERT_EQUAL(sal_Int32(5000268), aTransparenceGradient.StartColor); + const basegfx::BColorStops aColorStops = model::gradient::getColorStopsFromUno(aTransparenceGradient.ColorStops); + + // MCGR: Use the whole completely imported transparency gradient to check for correctness + CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size()); + CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0)); + CPPUNIT_ASSERT_EQUAL(Color(0x4d4d4d), Color(aColorStops[0].getStopColor())); + CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0)); + CPPUNIT_ASSERT_EQUAL(Color(0x333333), Color(aColorStops[1].getStopColor())); } -void Chart2ImportTest::testSimpleStrictXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSimpleStrictXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "strict_chart.xlsx"); + loadFromFile(u"xlsx/strict_chart.xlsx"); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent ); CPPUNIT_ASSERT(xChartDoc.is()); @@ -839,9 +700,10 @@ void Chart2ImportTest::testSimpleStrictXLSX() } -void Chart2ImportTest::testDelayedCellImport() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDelayedCellImport) { - load(u"/chart2/qa/extras/data/xlsx/", "fdo70609.xlsx"); + // chart range referencing content on later sheets + loadFromFile(u"xlsx/fdo70609.xlsx"); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent ); Reference< chart2::data::XDataSequence > xDataSeq = getDataSequenceFromDocByRole(xChartDoc, u"values-x"); @@ -850,9 +712,9 @@ void Chart2ImportTest::testDelayedCellImport() CPPUNIT_ASSERT_EQUAL(OUString("$Sheet2.$C$5:$C$9"), aRange); } -void Chart2ImportTest::testFlatODSStackedColumnChart() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFlatODSStackedColumnChart) { - load(u"/chart2/qa/extras/data/fods/", "stacked-column-chart.fods"); + loadFromFile(u"fods/stacked-column-chart.fods"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT(xChartDoc.is()); @@ -867,9 +729,9 @@ void Chart2ImportTest::testFlatODSStackedColumnChart() CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aSeriesSeq.getLength()); } -void Chart2ImportTest::testFdo78080() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo78080) { - load(u"/chart2/qa/extras/data/xlsx/", "fdo78080.xlsx"); + loadFromFile(u"xlsx/fdo78080.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT(xChartDoc.is()); @@ -878,9 +740,9 @@ void Chart2ImportTest::testFdo78080() CPPUNIT_ASSERT(!xTitle.is()); } -void Chart2ImportTest::testTdf127811() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf127811) { - load(u"/chart2/qa/extras/data/pptx/", "tdf127811.pptx"); + loadFromFile(u"pptx/tdf127811.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -897,9 +759,10 @@ void Chart2ImportTest::testTdf127811() CPPUNIT_ASSERT_EQUAL(OUString("2. second"), aLabels[1][0].get<OUString>()); } -void Chart2ImportTest::testTdf86624() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf86624) { - load(u"/chart2/qa/extras/data/ods/", "tdf86624.ods"); + // manually placed legends + loadFromFile(u"ods/tdf86624.ods"); uno::Reference< chart2::XChartDocument > xChart2Doc = getChartDocFromSheet(0, mxComponent); uno::Reference< chart::XChartDocument > xChartDoc (xChart2Doc, uno::UNO_QUERY); uno::Reference<drawing::XShape> xLegend = xChartDoc->getLegend(); @@ -908,9 +771,9 @@ void Chart2ImportTest::testTdf86624() CPPUNIT_ASSERT(aPos.Y > 4000); // real value for ms is above 7000 } -void Chart2ImportTest::testTdf105517() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf105517) { - load(u"/chart2/qa/extras/data/pptx/", "tdf105517.pptx"); + loadFromFile(u"pptx/tdf105517.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -936,9 +799,9 @@ void Chart2ImportTest::testTdf105517() CPPUNIT_ASSERT_EQUAL(tools::Long(0x1e69a8), lineColor); } -void Chart2ImportTest::testTdf106217() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf106217) { - load(u"/chart2/qa/extras/data/pptx/", "tdf106217.pptx"); + loadFromFile(u"pptx/tdf106217.pptx"); uno::Reference< chart::XChartDocument > xChartDoc = getChartDocFromDrawImpress(0, 0); CPPUNIT_ASSERT(xChartDoc.is()); @@ -958,14 +821,14 @@ void Chart2ImportTest::testTdf106217() CPPUNIT_ASSERT_EQUAL(sal_Int32(2700), aSize.Height); } -void Chart2ImportTest::testTdf108021() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf108021) { // Tdf108021 : To check TextBreak value is true. - load(u"/chart2/qa/extras/data/ods/", "tdf108021.ods"); + loadFromFile(u"ods/tdf108021.ods"); uno::Reference< chart::XDiagram > mxDiagram; uno::Reference< beans::XPropertySet > xAxisProp; bool bTextBreak = false; - uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); mxDiagram.set(xChartDoc->getDiagram()); CPPUNIT_ASSERT(mxDiagram.is()); uno::Reference< chart::XAxisXSupplier > xAxisXSupp( mxDiagram, uno::UNO_QUERY ); @@ -976,19 +839,19 @@ void Chart2ImportTest::testTdf108021() CPPUNIT_ASSERT(bTextBreak); } -void Chart2ImportTest::testTdf100084() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf100084) { // The test file was created with IBM Cognos, make sure there is a diagram. - load(u"/chart2/qa/extras/data/xlsx/", "tdf100084.xlsx"); + loadFromFile(u"xlsx/tdf100084.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); Reference<beans::XPropertySet> xDiagram(xChartDoc->getFirstDiagram(), UNO_QUERY); CPPUNIT_ASSERT_MESSAGE("There should be a Diagram.", xDiagram.is()); } -void Chart2ImportTest::testTdf124817() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf124817) { - load(u"/chart2/qa/extras/data/xlsx/", "tdf124817.xlsx"); + loadFromFile(u"xlsx/tdf124817.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1017,9 +880,9 @@ void Chart2ImportTest::testTdf124817() CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xFF0000), aSymblProp.BorderColor); } -void Chart2ImportTest::testTdf126033() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf126033) { - load(u"/chart2/qa/extras/data/xlsx/", "tdf126033.xlsx"); + loadFromFile(u"xlsx/tdf126033.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1034,9 +897,9 @@ void Chart2ImportTest::testTdf126033() CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(176), aSymblProp.Size.Height); } -void Chart2ImportTest::testTransparentBackground(OUString const & filename) +void Chart2ImportTest::testTransparentBackground(std::u16string_view filename) { - load(u"/chart2/qa/extras/data/xlsx/", filename); + loadFromFile(filename); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1051,19 +914,20 @@ void Chart2ImportTest::testTransparentBackground(OUString const & filename) CPPUNIT_ASSERT_EQUAL_MESSAGE("Background needs to be with solid fill style", css::drawing::FillStyle_SOLID, aStyle); } + // 2 test methods here so that tearDown() can dispose the document -void Chart2ImportTest::testFdo54361() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo54361) { - testTransparentBackground("fdo54361.xlsx"); + testTransparentBackground(u"xlsx/fdo54361.xlsx"); } -void Chart2ImportTest::testFdo54361_1() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo54361_1) { - testTransparentBackground("fdo54361-1.xlsx"); + testTransparentBackground(u"xlsx/fdo54361-1.xlsx"); } -void Chart2ImportTest::testAutoBackgroundXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoBackgroundXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "chart-auto-background.xlsx"); + loadFromFile(u"xlsx/chart-auto-background.xlsx"); uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1078,9 +942,9 @@ void Chart2ImportTest::testAutoBackgroundXLSX() sal_Int32(0x00FFFFFF), sal_Int32(nColor & 0x00FFFFFF)); // highest 2 bytes are transparency which we ignore here. } -void Chart2ImportTest::testAutoChartAreaBorderPropXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoChartAreaBorderPropXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "chart-area-style-border.xlsx"); + loadFromFile(u"xlsx/chart-area-style-border.xlsx"); uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1098,9 +962,23 @@ void Chart2ImportTest::testAutoChartAreaBorderPropXLSX() sal_Int32(26), nWidth); } -void Chart2ImportTest::testChartAreaStyleBackgroundXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoChartAreaBorderPropPPTX) { - load(u"/chart2/qa/extras/data/xlsx/", "chart-area-style-background.xlsx"); + loadFromFile(u"pptx/tdf150176.pptx"); + Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); + CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); + + // Test "Automatic" chartarea border style/color/width. + Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground(); + CPPUNIT_ASSERT(xPropSet.is()); + drawing::LineStyle eStyle = xPropSet->getPropertyValue("LineStyle").get<drawing::LineStyle>(); + CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chartarea border should be loaded as none style for pptx.", + drawing::LineStyle_NONE, eStyle); +} + +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testChartAreaStyleBackgroundXLSX) +{ + loadFromFile(u"xlsx/chart-area-style-background.xlsx"); uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1115,9 +993,9 @@ void Chart2ImportTest::testChartAreaStyleBackgroundXLSX() sal_Int32(0), nColor); } -void Chart2ImportTest::testChartHatchFillXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testChartHatchFillXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "chart-hatch-fill.xlsx"); + loadFromFile(u"xlsx/chart-hatch-fill.xlsx"); uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1157,9 +1035,9 @@ void Chart2ImportTest::testChartHatchFillXLSX() CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0x00B050), nBackgroundColorofDatapoint); } -void Chart2ImportTest::testAxisTextRotationXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTextRotationXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "axis-label-rotation.xlsx"); + loadFromFile(u"xlsx/axis-label-rotation.xlsx"); uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1174,34 +1052,31 @@ void Chart2ImportTest::testAxisTextRotationXLSX() CPPUNIT_ASSERT_DOUBLES_EQUAL(90, nRotation, 1e-10); } -/* TODO : temporarily disabled. -void Chart2ImportTest::testTextCanOverlapXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTextCanOverlapXLSX) { // fdo#84647 : To check textoverlap value is imported correctly. - load("/chart2/qa/extras/data/xlsx/", "chart-text-can-overlap.xlsx"); + loadFromFile(u"xlsx/chart-text-can-overlap.xlsx"); uno::Reference< chart::XDiagram > mxDiagram; uno::Reference< beans::XPropertySet > xAxisProp; bool bTextCanOverlap = false; - uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); mxDiagram.set(xChartDoc->getDiagram()); CPPUNIT_ASSERT(mxDiagram.is()); uno::Reference< chart::XAxisXSupplier > xAxisXSupp( mxDiagram, uno::UNO_QUERY ); CPPUNIT_ASSERT(xAxisXSupp.is()); xAxisProp = xAxisXSupp->getXAxis(); xAxisProp->getPropertyValue("TextCanOverlap") >>= bTextCanOverlap; - // Expected value of 'TextCanOverlap' is true - CPPUNIT_ASSERT(bTextCanOverlap); + CPPUNIT_ASSERT(!bTextCanOverlap); } -*/ -void Chart2ImportTest::testTextBreakXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTextBreakXLSX) { // tdf#122091: To check textbreak value is true in case of 0° degree of Axis label rotation. - load(u"/chart2/qa/extras/data/xlsx/", "chart_label_text_break.xlsx"); + loadFromFile(u"xlsx/chart_label_text_break.xlsx"); uno::Reference< chart::XDiagram > mxDiagram; uno::Reference< beans::XPropertySet > xAxisProp; bool textBreak = false; - uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); CPPUNIT_ASSERT(xChartDoc.is()); mxDiagram.set(xChartDoc->getDiagram()); CPPUNIT_ASSERT(mxDiagram.is()); @@ -1213,9 +1088,9 @@ void Chart2ImportTest::testTextBreakXLSX() CPPUNIT_ASSERT(textBreak); } -void Chart2ImportTest::testNumberFormatsXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testNumberFormatsXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "number-formats.xlsx"); + loadFromFile(u"xlsx/number-formats.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1265,9 +1140,9 @@ void Chart2ImportTest::testNumberFormatsXLSX() CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource); } -void Chart2ImportTest::testNumberFormatsDOCX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testNumberFormatsDOCX) { - load(u"/chart2/qa/extras/data/docx/", "tdf132174.docx"); + loadFromFile(u"docx/tdf132174.docx"); { uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1288,7 +1163,7 @@ void Chart2ImportTest::testNumberFormatsDOCX() CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", !bLinkNumberFormatToSource); } - load(u"/chart2/qa/extras/data/docx/", "tdf136650.docx"); + loadFromFile(u"docx/tdf136650.docx"); { uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1310,9 +1185,9 @@ void Chart2ImportTest::testNumberFormatsDOCX() } } -void Chart2ImportTest::testPercentageNumberFormatsDOCX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPercentageNumberFormatsDOCX) { - load(u"/chart2/qa/extras/data/docx/", "tdf133632.docx"); + loadFromFile(u"docx/tdf133632.docx"); uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1331,9 +1206,11 @@ void Chart2ImportTest::testPercentageNumberFormatsDOCX() CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource); } -void Chart2ImportTest::testAutoTitleDelDefaultValue2007XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoTitleDelDefaultValue2007XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "autotitledel_2007.xlsx"); + // below are OOXML default value tests for cases + // where we fixed the handling of MSO 2007 vs OOXML + loadFromFile(u"xlsx/autotitledel_2007.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1343,9 +1220,9 @@ void Chart2ImportTest::testAutoTitleDelDefaultValue2007XLSX() !aTitle.isEmpty()); } -void Chart2ImportTest::testAutoTitleDelDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoTitleDelDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "autotitledel_2013.xlsx"); + loadFromFile(u"xlsx/autotitledel_2013.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1355,9 +1232,9 @@ void Chart2ImportTest::testAutoTitleDelDefaultValue2013XLSX() !xTitle.is()); } -void Chart2ImportTest::testDispBlanksAsDefaultValue2007XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDispBlanksAsDefaultValue2007XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "dispBlanksAs_2007.xlsx"); + loadFromFile(u"xlsx/dispBlanksAs_2007.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1369,9 +1246,9 @@ void Chart2ImportTest::testDispBlanksAsDefaultValue2007XLSX() CPPUNIT_ASSERT_EQUAL(chart::MissingValueTreatment::LEAVE_GAP, nMissingValueTreatment); } -void Chart2ImportTest::testDispBlanksAsDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDispBlanksAsDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "dispBlanksAs_2013.xlsx"); + loadFromFile(u"xlsx/dispBlanksAs_2013.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); @@ -1383,9 +1260,9 @@ void Chart2ImportTest::testDispBlanksAsDefaultValue2013XLSX() CPPUNIT_ASSERT_EQUAL(chart::MissingValueTreatment::USE_ZERO, nMissingValueTreatment); } -void Chart2ImportTest::testSmoothDefaultValue2007XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSmoothDefaultValue2007XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "smoothed_series2007.xlsx"); + loadFromFile(u"xlsx/smoothed_series2007.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1401,9 +1278,9 @@ void Chart2ImportTest::testSmoothDefaultValue2007XLSX() CPPUNIT_ASSERT_EQUAL(chart2::CurveStyle_LINES, eCurveStyle); } -void Chart2ImportTest::testSmoothDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSmoothDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "smoothed_series.xlsx"); + loadFromFile(u"xlsx/smoothed_series.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1419,9 +1296,9 @@ void Chart2ImportTest::testSmoothDefaultValue2013XLSX() CPPUNIT_ASSERT(eCurveStyle != chart2::CurveStyle_LINES); } -void Chart2ImportTest::testTrendlineDefaultValue2007XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTrendlineDefaultValue2007XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "trendline2007.xlsx"); + loadFromFile(u"xlsx/trendline2007.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1445,9 +1322,9 @@ void Chart2ImportTest::testTrendlineDefaultValue2007XLSX() CPPUNIT_ASSERT(!bShowCorrelation); } -void Chart2ImportTest::testTrendlineDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTrendlineDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "trendline.xlsx"); + loadFromFile(u"xlsx/trendline.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1471,9 +1348,9 @@ void Chart2ImportTest::testTrendlineDefaultValue2013XLSX() CPPUNIT_ASSERT(bShowCorrelation); } -void Chart2ImportTest::testVaryColorDefaultValues2007XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testVaryColorDefaultValues2007XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "vary_color2007.xlsx"); + loadFromFile(u"xlsx/vary_color2007.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1486,9 +1363,9 @@ void Chart2ImportTest::testVaryColorDefaultValues2007XLSX() CPPUNIT_ASSERT(!bVaryColor); } -void Chart2ImportTest::testVaryColorDefaultValues2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testVaryColorDefaultValues2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "vary_color.xlsx"); + loadFromFile(u"xlsx/vary_color.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1501,10 +1378,10 @@ void Chart2ImportTest::testVaryColorDefaultValues2013XLSX() CPPUNIT_ASSERT(!bVaryColor); } -void Chart2ImportTest::testPlotVisOnlyDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPlotVisOnlyDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "plotVisOnly.xlsx"); - uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + loadFromFile(u"xlsx/plotVisOnly.xlsx"); + uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); Reference<beans::XPropertySet> xPropSet(xChart1Doc->getDiagram(), uno::UNO_QUERY_THROW); uno::Any aAny = xPropSet->getPropertyValue("IncludeHiddenCells"); CPPUNIT_ASSERT(aAny.hasValue()); @@ -1513,10 +1390,10 @@ void Chart2ImportTest::testPlotVisOnlyDefaultValue2013XLSX() CPPUNIT_ASSERT(!bShowHiddenValues); } -void Chart2ImportTest::testRAngAxDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testRAngAxDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "rAngAx.xlsx"); - uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW); + loadFromFile(u"xlsx/rAngAx.xlsx"); + uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW); Reference<beans::XPropertySet> xPropSet(xChart1Doc->getDiagram(), uno::UNO_QUERY_THROW); uno::Any aAny = xPropSet->getPropertyValue("RightAngledAxes"); CPPUNIT_ASSERT(aAny.hasValue()); @@ -1525,9 +1402,9 @@ void Chart2ImportTest::testRAngAxDefaultValue2013XLSX() CPPUNIT_ASSERT(bRightAngleAxes); } -void Chart2ImportTest::testMajorTickMarksDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testMajorTickMarksDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "majorTickMark.xlsx"); + loadFromFile(u"xlsx/majorTickMark.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); Reference<chart2::XAxis> xXAxis = getAxisFromDoc(xChartDoc, 0, 0, 0); @@ -1540,9 +1417,9 @@ void Chart2ImportTest::testMajorTickMarksDefaultValue2013XLSX() CPPUNIT_ASSERT_EQUAL(chart2::TickmarkStyle::INNER | chart2::TickmarkStyle::OUTER, nMajorTickmarks); } -void Chart2ImportTest::testMinorTickMarksDefaultValue2013XLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testMinorTickMarksDefaultValue2013XLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "minorTickMark.xlsx"); + loadFromFile(u"xlsx/minorTickMark.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); Reference<chart2::XAxis> xXAxis = getAxisFromDoc(xChartDoc, 0, 0, 0); @@ -1555,9 +1432,9 @@ void Chart2ImportTest::testMinorTickMarksDefaultValue2013XLSX() CPPUNIT_ASSERT_EQUAL(chart2::TickmarkStyle::INNER | chart2::TickmarkStyle::OUTER, nMajorTickmarks); } -void Chart2ImportTest::testAxisTitleDefaultRotationXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTitleDefaultRotationXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "axis_title_default_rotation.xlsx"); + loadFromFile(u"xlsx/axis_title_default_rotation.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0); @@ -1572,9 +1449,9 @@ void Chart2ImportTest::testAxisTitleDefaultRotationXLSX() CPPUNIT_ASSERT_EQUAL(90.0, nRotation); } -void Chart2ImportTest::testSecondaryAxisTitleDefaultRotationXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSecondaryAxisTitleDefaultRotationXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "secondary_axis_title_default_rotation.xlsx"); + loadFromFile(u"xlsx/secondary_axis_title_default_rotation.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 1); @@ -1589,9 +1466,9 @@ void Chart2ImportTest::testSecondaryAxisTitleDefaultRotationXLSX() CPPUNIT_ASSERT_EQUAL(90.0, nRotation); } -void Chart2ImportTest::testAxisTitleRotationXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTitleRotationXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "axis_title_rotated.xlsx"); + loadFromFile(u"xlsx/axis_title_rotated.xlsx"); Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is()); { @@ -1621,9 +1498,9 @@ void Chart2ImportTest::testAxisTitleRotationXLSX() } -void Chart2ImportTest::testAxisTitlePositionDOCX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTitlePositionDOCX) { - load(u"/chart2/qa/extras/data/docx/", "testAxisTitlePosition.docx"); + loadFromFile(u"docx/testAxisTitlePosition.docx"); uno::Reference< chart::XDiagram > mxDiagram; uno::Reference< drawing::XShape > xAxisTitle; uno::Reference< chart::XChartDocument > xChartDoc = getChartDocFromWriter(0); @@ -1653,9 +1530,9 @@ void Chart2ImportTest::testAxisTitlePositionDOCX() CPPUNIT_ASSERT_DOUBLES_EQUAL(6378, aPos.Y, 300); } -void Chart2ImportTest::testCombinedChartAttachedAxisXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testCombinedChartAttachedAxisXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "testCombinedChartAxis.xlsx"); + loadFromFile(u"xlsx/testCombinedChartAxis.xlsx"); Reference< chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); // First series Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xChartDoc, 0); @@ -1679,9 +1556,9 @@ void Chart2ImportTest::testCombinedChartAttachedAxisXLSX() CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nAxisIndex); } -void Chart2ImportTest::testTdf140489MultiSeriesChartAxisXLSX() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf140489MultiSeriesChartAxisXLSX) { - load(u"/chart2/qa/extras/data/xlsx/", "tdf140489.xlsx"); + loadFromFile(u"xlsx/tdf140489.xlsx"); Reference< chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); // First series Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xChartDoc, 0); @@ -1712,8 +1589,10 @@ void Chart2ImportTest::testTdf140489MultiSeriesChartAxisXLSX() CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nAxisIndex); } -void Chart2ImportTest::testInternalDataProvider() { - uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromImpress(u"/chart2/qa/extras/data/odp/", "chart.odp"), uno::UNO_QUERY_THROW); +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testInternalDataProvider) +{ + loadFromFile(u"odp/chart.odp"); + uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0,0), uno::UNO_QUERY_THROW); const uno::Reference< chart2::data::XDataProvider >& rxDataProvider = xChartDoc->getDataProvider(); // Parse 42 array @@ -1757,10 +1636,11 @@ void Chart2ImportTest::testInternalDataProvider() { CPPUNIT_ASSERT_EQUAL(uno::Any(OUString("Row 4 world")), xSequence[3]); } -void Chart2ImportTest::testTdf90510() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf90510) { - load(u"/chart2/qa/extras/data/xls/", "piechart_outside.xls"); - uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW ); + // Pie chart label placement settings(XLS) + loadFromFile(u"xls/piechart_outside.xls"); + uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW ); Reference<beans::XPropertySet> xPropSet( xChart1Doc->getDiagram()->getDataPointProperties( 0, 0 ), uno::UNO_SET_THROW ); uno::Any aAny = xPropSet->getPropertyValue( "LabelPlacement" ); CPPUNIT_ASSERT( aAny.hasValue() ); @@ -1769,10 +1649,11 @@ void Chart2ImportTest::testTdf90510() CPPUNIT_ASSERT_EQUAL_MESSAGE( "Data labels should be placed outside", chart::DataLabelPlacement::OUTSIDE, nLabelPlacement ); } -void Chart2ImportTest::testTdf109858() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf109858) { - load(u"/chart2/qa/extras/data/xlsx/", "piechart_outside.xlsx"); - uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW ); + // Pie chart label placement settings(XLSX) + loadFromFile(u"xlsx/piechart_outside.xlsx"); + uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW ); // test data point labels position Reference<beans::XPropertySet> xDataPointPropSet( xChart1Doc->getDiagram()->getDataPointProperties( 0, 0 ), uno::UNO_SET_THROW ); @@ -1789,9 +1670,9 @@ void Chart2ImportTest::testTdf109858() CPPUNIT_ASSERT_EQUAL_MESSAGE( "Data series labels should be placed outside", chart::DataLabelPlacement::OUTSIDE, nLabelPlacement ); } -void Chart2ImportTest::testTdf130105() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf130105) { - load(u"/chart2/qa/extras/data/xlsx/", "barchart_outend.xlsx"); + loadFromFile(u"xlsx/barchart_outend.xlsx"); uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent); CPPUNIT_ASSERT(xChartDoc.is()); uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0)); @@ -1805,15 +1686,15 @@ void Chart2ImportTest::testTdf130105() CPPUNIT_ASSERT_EQUAL_MESSAGE("Data label should be placed outend", chart::DataLabelPlacement::OUTSIDE, nLabelPlacement); } -void Chart2ImportTest::testTdf111173() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf111173) { - load(u"/chart2/qa/extras/data/xlsx/", "tdf111173.xlsx"); - uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW ); + loadFromFile(u"xlsx/tdf111173.xlsx"); + uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW ); } -void Chart2ImportTest::testTdf122226() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf122226) { - load( u"/chart2/qa/extras/data/docx/", "testTdf122226.docx" ); + loadFromFile(u"docx/testTdf122226.docx" ); uno::Reference< chart2::XChartDocument > xChartDoc ( getChartDocFromWriter(0), uno::UNO_QUERY); CPPUNIT_ASSERT( xChartDoc.is() ); @@ -1829,9 +1710,10 @@ void Chart2ImportTest::testTdf122226() CPPUNIT_ASSERT_EQUAL_MESSAGE( "Data labels should be separated into new lines", OUString("\n"), nLabelSeparator ); } -void Chart2ImportTest::testTdf115107() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf115107) { - load(u"/chart2/qa/extras/data/pptx/", "tdf115107.pptx"); + // import complex data point labels + loadFromFile(u"pptx/tdf115107.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1920,9 +1802,10 @@ void Chart2ImportTest::testTdf115107() CPPUNIT_ASSERT_EQUAL(OUString(" <CELLREF"), aFields[1]->getString()); } -void Chart2ImportTest::testTdf115107_2() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf115107_2) { - load(u"/chart2/qa/extras/data/pptx/", "tdf115107-2.pptx"); + // import complex data point labels in cobo charts with multiple data series + loadFromFile(u"pptx/tdf115107-2.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -1975,9 +1858,9 @@ void Chart2ImportTest::testTdf115107_2() } -void Chart2ImportTest::testTdf116163() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf116163) { - load(u"/chart2/qa/extras/data/pptx/", "tdf116163.pptx"); + loadFromFile(u"pptx/tdf116163.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -2040,9 +1923,9 @@ void Chart2ImportTest::testTdf116163() CPPUNIT_ASSERT_EQUAL(OUString("Dddd..."), xLabel3->getString()); } -void Chart2ImportTest::testTdf48041() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf48041) { - load(u"/chart2/qa/extras/data/pptx/", "tdf48041.pptx"); + loadFromFile(u"pptx/tdf48041.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); CPPUNIT_ASSERT(xChartDoc.is()); @@ -2090,9 +1973,9 @@ void Chart2ImportTest::testTdf48041() CPPUNIT_ASSERT_EQUAL(OUString("5"), xLabel5->getString()); } -void Chart2ImportTest::testTdf121205() +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf121205) { - load(u"/chart2/qa/extras/data/pptx/", "tdf121205.pptx"); + loadFromFile(u"pptx/tdf121205.pptx"); Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); uno::Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW); @@ -2103,8 +1986,310 @@ void Chart2ImportTest::testTdf121205() CPPUNIT_ASSERT_EQUAL(OUString("Firstline\nSecondline\nThirdline"), aTitle); } -CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest); +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf146487) +{ + loadFromFile(u"pptx/tdf146487.pptx"); + Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); + 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("chart doc should not have a title", !xTitle.is()); + + // tdf#146756 use manualLayout Width that was provided (so Green; $7,654,321 is not wrapped + if (!IsDefaultDPI()) + return; + uno::Reference<chart::XChartDocument> xDoc = getChartDocFromDrawImpress(0, 0); + OString aXmlDump = OUStringToOString(getShapeDump(xDoc), RTL_TEXTENCODING_UTF8); + xmlDocUniquePtr pXmlDoc(xmlParseDoc(reinterpret_cast<const xmlChar*>(aXmlDump.getStr()))); + OString aPath("//XShape[@text='Green; $7,654,321 ']"_ostr); + assertXPath(pXmlDoc, aPath, 1); + // Expected - 1 line tall(371), not 4 lines(1481). + CPPUNIT_ASSERT_EQUAL(OUString("371"), getXPath(pXmlDoc, aPath, "sizeY"_ostr)); +} + +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf146756) +{ + // 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; + + // given a chart on page 2 + loadFromFile(u"pptx/tdf146756_bestFit.pptx"); + Reference<chart::XChartDocument> xChartDoc = getChartDocFromDrawImpress(1, 0); + OString aXmlDump = OUStringToOString(getShapeDump(xChartDoc), RTL_TEXTENCODING_UTF8); + xmlDocUniquePtr pXmlDoc(xmlParseDoc(reinterpret_cast<const xmlChar*>(aXmlDump.getStr()))); + OString aPath("//XShape[@text='New service request and approval; 18%']"_ostr); + assertXPath(pXmlDoc, aPath, 1); + // Expected something like 4 lines tall(1697), not 11 lines(3817). + CPPUNIT_ASSERT_EQUAL(OUString("1697"), getXPath(pXmlDoc, aPath, "sizeY"_ostr)); + // Expected some reasonable maximum text length for the label like 2350, not 881. + sal_Int32 nTextLength = getXPath(pXmlDoc, aPath, "textMaximumFrameWidth"_ostr).toInt32(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2350), nTextLength); + // MSO doesn't allow much more than 1/5 of the total chart width, so never go higher than that + CPPUNIT_ASSERT_LESS(sal_Int32(2370.6), nTextLength); +} + +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFixedSizeBarChartVeryLongLabel) +{ + // Bar chart area size is fixed (not automatic) so we can't resize + // the chart area to let the label break into multiple lines. In this + // case the best course of action is to just crop the label text. This + // test checks that the rendered text is actually cropped. + + loadFromFile(u"odp/BarChartVeryLongLabel.odp"); + + // Select shape 0 which has fixed size chart + Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xChartDoc.is()); + + Reference<chart2::XAxis> xHAxis = getAxisFromDoc(xChartDoc, 0, 0, 0); + CPPUNIT_ASSERT(xHAxis.is()); + + chart2::ScaleData aScaleData = xHAxis->getScaleData(); + CPPUNIT_ASSERT(aScaleData.Categories.is()); + + Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence = aScaleData.Categories; + CPPUNIT_ASSERT(xLabeledDataSequence.is()); + + Reference<chart2::data::XDataSequence> xDataSequence = xLabeledDataSequence->getValues(); + CPPUNIT_ASSERT(xDataSequence.is()); + + Reference<chart2::data::XTextualDataSequence> xTextualDataSequence(xDataSequence, uno::UNO_QUERY); + CPPUNIT_ASSERT(xTextualDataSequence.is()); + + std::vector<OUString> aCategories; + const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData()); + ::std::copy(aTextData.begin(), aTextData.end(), + ::std::back_inserter(aCategories)); + + // Check that we have a very very long label text + CPPUNIT_ASSERT_EQUAL(OUString("Very very very very very very very very very very very loooooooooooong label"), aCategories[0]); + + // Check visible text + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + + uno::Reference<drawing::XShape> xXAxis = getShapeByName(xShapes, "CID/D=0:CS=0:Axis=0,0", + // Axis occurs twice in chart xshape representation so need to get the one related to labels + [](const uno::Reference<drawing::XShape>& rXShape) -> bool + { + uno::Reference<drawing::XShapes> xAxisShapes(rXShape, uno::UNO_QUERY); + CPPUNIT_ASSERT(xAxisShapes.is()); + uno::Reference<drawing::XShape> xChildShape(xAxisShapes->getByIndex(0), uno::UNO_QUERY); + uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor(xChildShape, uno::UNO_QUERY_THROW); + return (xShapeDescriptor->getShapeType() == "com.sun.star.drawing.TextShape"); + }); + CPPUNIT_ASSERT(xXAxis.is()); + + uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW); + + // Check text is actually cropped. Depending on DPI, + // it may be "Very very very very very very..." or "Very very very very very ver..." + uno::Reference<text::XTextRange> xLabel(xIndexAccess->getByIndex(0), uno::UNO_QUERY_THROW); + const OUString aLabelString = xLabel->getString(); + CPPUNIT_ASSERT_LESSEQUAL(sal_Int32(32), aLabelString.getLength()); + CPPUNIT_ASSERT(aLabelString.endsWith(u"...")); + + uno::Reference<drawing::XShape> xChartWall = getShapeByName(xShapes, "CID/DiagramWall="); + CPPUNIT_ASSERT(xChartWall.is()); + + // The text shape width should be smaller than the chart wall + CPPUNIT_ASSERT_LESS(xChartWall->getSize().Width, xXAxis->getSize().Width); + + CPPUNIT_ASSERT_DOUBLES_EQUAL(7113, xChartWall->getSize().Height, 100); + CPPUNIT_ASSERT_DOUBLES_EQUAL(398, xXAxis->getSize().Height, 100); +} + +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutomaticSizeBarChartVeryLongLabel) +{ + // Bar chart area size is automatic so we expect the label to be broken + // into multiple lines. + + loadFromFile(u"odp/BarChartVeryLongLabel.odp"); + + // Select shape 1, which has an automatic sized chart + Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 1), uno::UNO_QUERY); + CPPUNIT_ASSERT(xChartDoc.is()); + + Reference<chart2::XAxis> xHAxis = getAxisFromDoc(xChartDoc, 0, 0, 0); + CPPUNIT_ASSERT(xHAxis.is()); + + chart2::ScaleData aScaleData = xHAxis->getScaleData(); + CPPUNIT_ASSERT(aScaleData.Categories.is()); + + Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence = aScaleData.Categories; + CPPUNIT_ASSERT(xLabeledDataSequence.is()); + + Reference<chart2::data::XDataSequence> xDataSequence = xLabeledDataSequence->getValues(); + CPPUNIT_ASSERT(xDataSequence.is()); + + Reference<chart2::data::XTextualDataSequence> xTextualDataSequence(xDataSequence, uno::UNO_QUERY); + CPPUNIT_ASSERT(xTextualDataSequence.is()); + + std::vector<OUString> aCategories; + const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData()); + ::std::copy(aTextData.begin(), aTextData.end(), + ::std::back_inserter(aCategories)); + + // Check that we have a very very long label text + CPPUNIT_ASSERT_EQUAL(OUString("Very very very very very very very very very very very loooooooooooong label"), aCategories[0]); + + // Check visible text + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + + uno::Reference<drawing::XShape> xXAxis = getShapeByName(xShapes, "CID/D=0:CS=0:Axis=0,0", + // Axis occurs twice in chart xshape representation so need to get the one related to labels + [](const uno::Reference<drawing::XShape>& rXShape) -> bool + { + uno::Reference<drawing::XShapes> xAxisShapes(rXShape, uno::UNO_QUERY); + CPPUNIT_ASSERT(xAxisShapes.is()); + uno::Reference<drawing::XShape> xChildShape(xAxisShapes->getByIndex(0), uno::UNO_QUERY); + uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor(xChildShape, uno::UNO_QUERY_THROW); + return (xShapeDescriptor->getShapeType() == "com.sun.star.drawing.TextShape"); + }); + CPPUNIT_ASSERT(xXAxis.is()); + + uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW); + + // Check text is unmodified + uno::Reference<text::XTextRange> xLabel(xIndexAccess->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("Very very very very very very very very very very very loooooooooooong label"), xLabel->getString()); + + uno::Reference<drawing::XShape> xChartWall = getShapeByName(xShapes, "CID/DiagramWall="); + CPPUNIT_ASSERT(xChartWall.is()); + + // The text shape width should be smaller than the chart wall + CPPUNIT_ASSERT_LESS(xChartWall->getSize().Width, xXAxis->getSize().Width); + + CPPUNIT_ASSERT_DOUBLES_EQUAL(7200, xChartWall->getSize().Height, 100); + CPPUNIT_ASSERT_DOUBLES_EQUAL(1192, xXAxis->getSize().Height, 100); +} + +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTotalsRowIgnored) +{ + loadFromFile(u"xlsx/barchart_totalsrow.xlsx"); + { + uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent); + CPPUNIT_ASSERT(xChartDoc.is()); + + Reference<chart2::data::XDataSequence> xDataSeq = + getDataSequenceFromDocByRole(xChartDoc, u"values-y"); + CPPUNIT_ASSERT(xDataSeq.is()); + + // Table data range is D2:D9 (8 rows) but because last row is totals row it is ignored + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(7u), xDataSeq->getData().size()); + } + { + uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(1, mxComponent); + CPPUNIT_ASSERT(xChartDoc.is()); + + Reference<chart2::data::XDataSequence> xDataSeq = + getDataSequenceFromDocByRole(xChartDoc, u"values-y"); + CPPUNIT_ASSERT(xDataSeq.is()); + + // Table data range is D2:D10 (9 rows) and totals row isn't the last row so it's not ignored + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(9u), xDataSeq->getData().size()); + } +} + +CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPieChartPlotAreaMarginWithAutomaticLayout) +{ + // tdf#91265 + // Checks the margin and calculation of the plot area for the pie chart inside the chart area. + + loadFromFile(u"pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx"); + + OUString aCheckShapeName = "CID/D=0:CS=0:CT=0:Series=0"; + // Chart Wuse case Width == Height + { + // Load chart Chart_2_2 - 2cm x 2cm - + auto xDocument = getChartDocFromDrawImpressNamed(0, u"Chart_2_2"); + CPPUNIT_ASSERT(xDocument.is()); + + uno::Reference<chart2::XChartDocument>xChartDocument(xDocument, uno::UNO_QUERY); + CPPUNIT_ASSERT(xChartDocument.is()); + + // Get the shape of the diagram / chart + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDocument, uno::UNO_QUERY); + CPPUNIT_ASSERT(xDrawPageSupplier.is()); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + + uno::Reference<drawing::XShape> xChartDiagramShape = getShapeByName(xShapes, aCheckShapeName); + CPPUNIT_ASSERT(xChartDiagramShape.is()); + + // Size + CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Width, 5); // calculated chart area size - 2 * margin + CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Height, 5); // calculated chart area size - 2 * margin + // Position + CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().X, 5); // margin + CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().Y, 5); // margin + } + + // Chart use case - Width < Height + { + // Load chart Chart_3_4 - 3cm x 4cm + auto xDocument = getChartDocFromDrawImpressNamed(0, u"Chart_3_4"); + CPPUNIT_ASSERT(xDocument.is()); + + uno::Reference<chart2::XChartDocument>xChartDocument(xDocument, uno::UNO_QUERY); + CPPUNIT_ASSERT(xChartDocument.is()); + + // Get the shape of the diagram / chart + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDocument, uno::UNO_QUERY); + CPPUNIT_ASSERT(xDrawPageSupplier.is()); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + + uno::Reference<drawing::XShape> xChartDiagramShape = getShapeByName(xShapes, aCheckShapeName); + CPPUNIT_ASSERT(xChartDiagramShape.is()); + + // Size + CPPUNIT_ASSERT_DOUBLES_EQUAL(2300, xChartDiagramShape->getSize().Width, 5); // calculated chart area size - 2 * margin + CPPUNIT_ASSERT_DOUBLES_EQUAL(2300, xChartDiagramShape->getSize().Height, 5); // calculated chart area size - 2 * margin + // Position + CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().X, 5); // margin + CPPUNIT_ASSERT_DOUBLES_EQUAL(850, xChartDiagramShape->getPosition().Y, 5); // margin + calculated centering + } + + // Chart use case - Width > Height + { + // Load chart Chart_3_2 - 3cm x 2cm + auto xDocument = getChartDocFromDrawImpressNamed(0, u"Chart_3_2"); + CPPUNIT_ASSERT(xDocument.is()); + + uno::Reference<chart2::XChartDocument>xChartDocument(xDocument, uno::UNO_QUERY); + CPPUNIT_ASSERT(xChartDocument.is()); + + // Get the shape of the diagram / chart + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDocument, uno::UNO_QUERY); + CPPUNIT_ASSERT(xDrawPageSupplier.is()); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + + uno::Reference<drawing::XShape> xChartDiagramShape = getShapeByName(xShapes, aCheckShapeName); + CPPUNIT_ASSERT(xChartDiagramShape.is()); + + // Size + CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Width, 5); // calculated chart area size - 2 * margin + CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Height, 5); // calculated chart area size - 2 * margin + // Position + CPPUNIT_ASSERT_DOUBLES_EQUAL(850, xChartDiagramShape->getPosition().X, 5); // margin + calculated centering + CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().Y, 5); // margin + } +} +} // end of anonymous namespace CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |