summaryrefslogtreecommitdiff
path: root/chart2/qa/extras/chart2import.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/qa/extras/chart2import.cxx')
-rw-r--r--chart2/qa/extras/chart2import.cxx1707
1 files changed, 586 insertions, 1121 deletions
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index 57c7227b49c1..02c00daed941 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -12,7 +12,6 @@
#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>
@@ -30,281 +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 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 testTransparancyGradientValue();
- 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);
-
- // 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 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();
-
- 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();
-
- 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(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(testTransparancyGradientValue);
- 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(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(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_SUITE_END();
-
-private:
+ Chart2ImportTest() : ChartTest("/chart2/qa/extras/data/") {}
+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());
@@ -351,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());
@@ -380,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());
@@ -403,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[] = {
@@ -423,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 );
@@ -441,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);
@@ -449,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]);
@@ -460,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]);
@@ -471,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]);
@@ -482,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]);
@@ -492,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());
@@ -517,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());
@@ -543,9 +296,39 @@ void Chart2ImportTest::testDOCXChartEmptySeries()
CPPUNIT_ASSERT(std::isnan(aValues[2][1]));
}
-void Chart2ImportTest::testDOCXChartValuesSize()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf81396)
{
- load( u"/chart2/qa/extras/data/docx/", "bubblechart.docx" );
+ loadFromFile(u"xlsx/tdf81396.xlsx");
+ 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());
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 105.210801910481
+ // - Actual : nan
+ CPPUNIT_ASSERT_EQUAL(105.210801910481, aDataSeriesYValues[0][0]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXChartErrorBars)
+{
+ 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() );
@@ -564,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]);
@@ -575,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());
@@ -592,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());
@@ -614,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());
@@ -653,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);
@@ -707,7 +496,8 @@ void Chart2ImportTest::testPPTXPercentageNumberFormats()
Reference<beans::XPropertySet> xPS(xYAxis, uno::UNO_QUERY_THROW);
bool bLinkNumberFormatToSource = true;
bool bSuccess = xPS->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
- CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", bSuccess && !bLinkNumberFormatToSource);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", !bLinkNumberFormatToSource);
// FIXME: This should be in fact "0.00%".
// see TODO in oox/source/drawingml/chart/modelbase.cxx
@@ -718,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);
@@ -730,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);
@@ -789,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 );
@@ -814,37 +606,50 @@ void Chart2ImportTest::testBnc864396()
}
}
-void Chart2ImportTest::testBnc889755()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc889755)
{
- load(u"/chart2/qa/extras/data/pptx/", "bnc889755.pptx");
- uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 6), uno::UNO_QUERY_THROW);
+ loadFromFile(u"pptx/bnc889755.pptx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 5), uno::UNO_QUERY_THROW);
CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
- uno::Reference< chart2::XInternalDataProvider > xDataProvider( xChartDoc->getDataProvider(), uno::UNO_QUERY_THROW );
- uno::Reference< chart::XChartDataArray > xChartDataArray(xDataProvider, uno::UNO_QUERY_THROW);
- uno::Sequence< OUString > aRowLabels = xChartDataArray->getRowDescriptions();
- CPPUNIT_ASSERT_EQUAL(sal_Int32(16), aRowLabels.getLength());
- CPPUNIT_ASSERT_EQUAL(OUString("Oct-12"), aRowLabels[0]);
- CPPUNIT_ASSERT_EQUAL(OUString("Nov-12"), aRowLabels[1]);
- CPPUNIT_ASSERT_EQUAL(OUString("Dec-12"), aRowLabels[2]);
- CPPUNIT_ASSERT_EQUAL(OUString("Jan-13"), aRowLabels[3]);
- CPPUNIT_ASSERT_EQUAL(OUString("Feb-13"), aRowLabels[4]);
- CPPUNIT_ASSERT_EQUAL(OUString("Mar-13"), aRowLabels[5]);
- CPPUNIT_ASSERT_EQUAL(OUString("Apr-13"), aRowLabels[6]);
- CPPUNIT_ASSERT_EQUAL(OUString("May-13"), aRowLabels[7]);
- CPPUNIT_ASSERT_EQUAL(OUString("Jun-13"), aRowLabels[8]);
- CPPUNIT_ASSERT_EQUAL(OUString("Jul-13"), aRowLabels[9]);
- CPPUNIT_ASSERT_EQUAL(OUString("Aug-13"), aRowLabels[10]);
- CPPUNIT_ASSERT_EQUAL(OUString("Sep-13"), aRowLabels[11]);
- CPPUNIT_ASSERT_EQUAL(OUString("Oct-13"), aRowLabels[12]);
- CPPUNIT_ASSERT_EQUAL(OUString("Nov-13"), aRowLabels[13]);
- CPPUNIT_ASSERT_EQUAL(OUString("Dec-13"), aRowLabels[14]);
- CPPUNIT_ASSERT_EQUAL(OUString("Jan-14"), aRowLabels[15]);
-}
-
-void Chart2ImportTest::testBnc882383()
-{
- load(u"/chart2/qa/extras/data/pptx/", "bnc882383.pptx");
+ constexpr sal_Int32 nNumCategories = 16;
+ Sequence<OUString> aDateSeq = getFormattedDateCategories(xChartDoc);
+
+ CPPUNIT_ASSERT_EQUAL(nNumCategories, aDateSeq.getLength());
+
+ const OUString aExpectedDateCategories[nNumCategories] = {
+ "Oct-12", "Nov-12", "Dec-12", "Jan-13",
+ "Feb-13", "Mar-13", "Apr-13", "May-13",
+ "Jun-13", "Jul-13", "Aug-13", "Sep-13",
+ "Oct-13", "Nov-13", "Dec-13", "Jan-14",
+ };
+
+ for (size_t nIdx = 0; nIdx < nNumCategories; ++nIdx)
+ CPPUNIT_ASSERT_EQUAL(aExpectedDateCategories[nIdx], aDateSeq[nIdx]);
+
+ //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::Gradient2 aTransparence;
+ xShapeProps->getPropertyValue("FillTransparenceGradient") >>= aTransparence;
+ 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()));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc882383)
+{
+ 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());
@@ -855,9 +660,9 @@ void Chart2ImportTest::testBnc882383()
CPPUNIT_ASSERT(!sGradientName.isEmpty());
}
-void Chart2ImportTest::testTransparancyGradientValue()
+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));
@@ -868,19 +673,25 @@ void Chart2ImportTest::testTransparancyGradientValue()
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());
@@ -889,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");
@@ -900,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());
@@ -917,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());
@@ -928,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());
@@ -947,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();
@@ -958,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());
@@ -986,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());
@@ -1008,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 );
@@ -1026,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());
@@ -1049,24 +862,27 @@ void Chart2ImportTest::testTdf124817()
xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropSet_0(xDataSeries, uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT((xPropSet_0->getPropertyValue("Symbol") >>= aSymblProp) && (aSymblProp.Style == chart2::SymbolStyle_NONE));
+ CPPUNIT_ASSERT((xPropSet_0->getPropertyValue("Symbol") >>= aSymblProp));
+ CPPUNIT_ASSERT_EQUAL(chart2::SymbolStyle_NONE, aSymblProp.Style);
// Check the symbol of data series 2 (marker style square)
xDataSeries = getDataSeriesFromDoc(xChartDoc, 1);
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropSet_1(xDataSeries, uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT((xPropSet_1->getPropertyValue("Symbol") >>= aSymblProp) && (aSymblProp.FillColor == static_cast<sal_Int32>(0xED7D31)));
+ CPPUNIT_ASSERT((xPropSet_1->getPropertyValue("Symbol") >>= aSymblProp));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xED7D31), aSymblProp.FillColor);
// Check the symbol of data series 3 (marker style diagonal cross)
xDataSeries = getDataSeriesFromDoc(xChartDoc, 2);
CPPUNIT_ASSERT(xDataSeries.is());
uno::Reference<beans::XPropertySet> xPropSet_2(xDataSeries, uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT((xPropSet_2->getPropertyValue("Symbol") >>= aSymblProp) && (aSymblProp.BorderColor == static_cast<sal_Int32>(0xFF0000)));
+ CPPUNIT_ASSERT((xPropSet_2->getPropertyValue("Symbol") >>= aSymblProp));
+ 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());
@@ -1081,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());
@@ -1098,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());
@@ -1125,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());
@@ -1145,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());
@@ -1162,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());
@@ -1181,9 +1012,9 @@ void Chart2ImportTest::testChartHatchFillXLSX()
xPropSet->getPropertyValue("FillBackground") >>= bBackgroundFill;
CPPUNIT_ASSERT(bBackgroundFill);
- sal_Int32 nBackgroundColor;
+ Color nBackgroundColor;
xPropSet->getPropertyValue("FillColor") >>= nBackgroundColor;
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xFFFFFF), nBackgroundColor);
+ CPPUNIT_ASSERT_EQUAL(COL_WHITE, nBackgroundColor);
// Check the datapoint has HatchName value
uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
@@ -1204,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());
@@ -1221,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());
@@ -1260,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());
@@ -1284,7 +1112,8 @@ void Chart2ImportTest::testNumberFormatsXLSX()
bool bSuccess = xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
CPPUNIT_ASSERT_EQUAL(false, bSuccess);
bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
- CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess && bLinkNumberFormatToSource);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource);
xPropertySet.set(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
xPropertySet->getPropertyValue("Label") >>= aLabel;
@@ -1295,7 +1124,8 @@ void Chart2ImportTest::testNumberFormatsXLSX()
bSuccess = xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
CPPUNIT_ASSERT_EQUAL(false, bSuccess);
bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
- CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess && bLinkNumberFormatToSource);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource);
xPropertySet.set(xDataSeries->getDataPointByIndex(2), uno::UNO_SET_THROW);
xPropertySet->getPropertyValue("Label") >>= aLabel;
@@ -1306,12 +1136,13 @@ void Chart2ImportTest::testNumberFormatsXLSX()
bSuccess = xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
CPPUNIT_ASSERT_EQUAL(false, bSuccess);
bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
- CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess && bLinkNumberFormatToSource);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ 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());
@@ -1332,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());
@@ -1354,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());
@@ -1371,12 +1202,15 @@ void Chart2ImportTest::testPercentageNumberFormatsDOCX()
CPPUNIT_ASSERT_EQUAL(sal_False, aLabel.ShowNumber);
CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
bool bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
- CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess && bLinkNumberFormatToSource);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ 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());
@@ -1386,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());
@@ -1398,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());
@@ -1412,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());
@@ -1426,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());
@@ -1444,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());
@@ -1462,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());
@@ -1488,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());
@@ -1514,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());
@@ -1529,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());
@@ -1544,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());
@@ -1556,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());
@@ -1568,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);
@@ -1583,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);
@@ -1598,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);
@@ -1615,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);
@@ -1632,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());
{
@@ -1664,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);
@@ -1696,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);
@@ -1722,12 +1556,47 @@ void Chart2ImportTest::testCombinedChartAttachedAxisXLSX()
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), 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, testTdf140489MultiSeriesChartAxisXLSX)
+{
+ loadFromFile(u"xlsx/tdf140489.xlsx");
+ Reference< chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ // First series
+ Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ Reference<beans::XPropertySet> xPropSet(xSeries, uno::UNO_QUERY_THROW);
+ sal_Int32 nAxisIndex = -1;
+ uno::Any aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nAxisIndex);
+
+ // Second series
+ xSeries = getDataSeriesFromDoc(xChartDoc, 0, 1);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ xPropSet.set(xSeries, uno::UNO_QUERY_THROW);
+ aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nAxisIndex);
+
+ // Third series
+ xSeries = getDataSeriesFromDoc(xChartDoc, 0, 2);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ xPropSet.set(xSeries, uno::UNO_QUERY_THROW);
+ aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nAxisIndex);
+}
+
+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
- Reference<chart2::data::XDataSequence> xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;42;42;42}");
+ Reference<chart2::data::XDataSequence> xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;42;42;42}", "");
Sequence<Any> xSequence = xDataSeq->getData();
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[1]);
@@ -1735,7 +1604,7 @@ void Chart2ImportTest::testInternalDataProvider() {
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[3]);
// Parse empty first and last
- xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{\"\";42;42;\"\"}");
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{\"\";42;42;\"\"}", "");
xSequence = xDataSeq->getData();
CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[0].getValue())));
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[1]);
@@ -1743,7 +1612,7 @@ void Chart2ImportTest::testInternalDataProvider() {
CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[3].getValue())));
// Parse empty middle
- xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"\";\"\";42}");
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"\";\"\";42}", "");
xSequence = xDataSeq->getData();
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[1].getValue())) );
@@ -1751,7 +1620,7 @@ void Chart2ImportTest::testInternalDataProvider() {
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[3]);
// Parse mixed types, numeric only role
- xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"hello\";0;\"world\"}");
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"hello\";0;\"world\"}", "");
xSequence = xDataSeq->getData();
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[1]);
@@ -1759,7 +1628,7 @@ void Chart2ImportTest::testInternalDataProvider() {
CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[3]);
// Parse mixed types, mixed role
- xDataSeq = rxDataProvider->createDataSequenceByValueArray("categories", "{42;\"hello\";0;\"world\"}");
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("categories", "{42;\"hello\";0;\"world\"}", "");
xSequence = xDataSeq->getData();
CPPUNIT_ASSERT_EQUAL(uno::Any(OUString("Row 1 42")), xSequence[0]);
CPPUNIT_ASSERT_EQUAL(uno::Any(OUString("Row 2 hello")), xSequence[1]);
@@ -1767,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() );
@@ -1779,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 );
@@ -1799,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));
@@ -1815,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() );
@@ -1839,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());
@@ -1930,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());
@@ -1985,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());
@@ -2008,7 +1881,7 @@ void Chart2ImportTest::testTdf116163()
CPPUNIT_ASSERT(xTextualDataSequence.is());
std::vector<OUString> aCategories;
- Sequence<OUString> aTextData(xTextualDataSequence->getTextualData());
+ const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData());
::std::copy(aTextData.begin(), aTextData.end(),
::std::back_inserter(aCategories));
@@ -2050,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());
@@ -2100,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);
@@ -2113,718 +1986,310 @@ 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()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf146487)
{
- load(u"/chart2/qa/extras/data/pptx/", "tdf127393.pptx");
-
- // 1st chart
+ loadFromFile(u"pptx/tdf146487.pptx");
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::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());
- 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);
+ // 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));
}
-void Chart2ImportTest::testExternalStrRefsXLSX()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf146756)
{
- 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());
+ // 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;
- 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>());
+ // 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);
}
-void Chart2ImportTest::testSourceNumberFormatComplexCategoriesXLS()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFixedSizeBarChartVeryLongLabel)
{
- 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());
+ // 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.
- 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);
-}
+ loadFromFile(u"odp/BarChartVeryLongLabel.odp");
-void Chart2ImportTest::testSimpleCategoryAxis()
-{
- load(u"/chart2/qa/extras/data/docx/", "testSimpleCategoryAxis.docx");
- uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ // Select shape 0 which has fixed size chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 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());
+ Reference<chart2::XAxis> xHAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xHAxis.is());
- // Test the internal data.
- CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
+ chart2::ScaleData aScaleData = xHAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
- Reference<chart2::XInternalDataProvider> xInternalProvider(xChartDoc->getDataProvider(), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xInternalProvider.is());
+ Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence = aScaleData.Categories;
+ CPPUNIT_ASSERT(xLabeledDataSequence.is());
- Reference<chart::XComplexDescriptionAccess> xDescAccess(xInternalProvider, uno::UNO_QUERY);
- CPPUNIT_ASSERT(xDescAccess.is());
+ Reference<chart2::data::XDataSequence> xDataSequence = xLabeledDataSequence->getValues();
+ CPPUNIT_ASSERT(xDataSequence.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]);
-}
+ Reference<chart2::data::XTextualDataSequence> xTextualDataSequence(xDataSequence, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextualDataSequence.is());
-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());
+ std::vector<OUString> aCategories;
+ const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData());
+ ::std::copy(aTextData.begin(), aTextData.end(),
+ ::std::back_inserter(aCategories));
- 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())));
-}
+ // 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]);
-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);
+ // 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());
- 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());
+ 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());
- 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());
+ 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"..."));
-void Chart2ImportTest::testTdf125444PercentageCustomLabel()
-{
- load(u"/chart2/qa/extras/data/pptx/", "tdf125444.pptx");
+ uno::Reference<drawing::XShape> xChartWall = getShapeByName(xShapes, "CID/DiagramWall=");
+ CPPUNIT_ASSERT(xChartWall.is());
- // 1st chart
- Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xChartDoc.is());
+ // The text shape width should be smaller than the chart wall
+ CPPUNIT_ASSERT_LESS(xChartWall->getSize().Width, xXAxis->getSize().Width);
- 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());
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(7113, xChartWall->getSize().Height, 100);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(398, xXAxis->getSize().Height, 100);
}
-void Chart2ImportTest::testDataPointLabelCustomPos()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutomaticSizeBarChartVeryLongLabel)
{
- // 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);
+ // Bar chart area size is automatic so we expect the label to be broken
+ // into multiple lines.
- sal_Int32 aPlacement;
- xPropertySet->getPropertyValue("LabelPlacement") >>= aPlacement;
- CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::OUTSIDE, aPlacement);
-}
+ loadFromFile(u"odp/BarChartVeryLongLabel.odp");
-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);
+ // Select shape 1, which has an automatic sized chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 1), uno::UNO_QUERY);
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);
-}
+ Reference<chart2::XAxis> xHAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xHAxis.is());
-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());
+ chart2::ScaleData aScaleData = xHAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
- uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(2),
- uno::UNO_SET_THROW);
- CPPUNIT_ASSERT(xPropertySet.is());
+ Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence = aScaleData.Categories;
+ CPPUNIT_ASSERT(xLabeledDataSequence.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);
-}
+ Reference<chart2::data::XDataSequence> xDataSequence = xLabeledDataSequence->getValues();
+ CPPUNIT_ASSERT(xDataSequence.is());
-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::data::XTextualDataSequence> xTextualDataSequence(xDataSequence, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextualDataSequence.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());
-}
+ std::vector<OUString> aCategories;
+ const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData());
+ ::std::copy(aTextData.begin(), aTextData.end(),
+ ::std::back_inserter(aCategories));
-void Chart2ImportTest::testStockChartShiftedCategoryPosition()
-{
- load(u"/chart2/qa/extras/data/odt/", "stock_chart_LO_6_2.odt");
+ // 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]);
- uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xChartDoc.is());
+ // 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());
- Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
- CPPUNIT_ASSERT(xAxis.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());
- chart2::ScaleData aScaleData = xAxis->getScaleData();
- CPPUNIT_ASSERT(aScaleData.Categories.is());
- CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
-}
+ uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW);
-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;
+ // 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());
- load(u"/chart2/qa/extras/data/xlsx/", "tdf133376.xlsx");
- Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
- UNO_QUERY_THROW);
+ uno::Reference<drawing::XShape> xChartWall = getShapeByName(xShapes, "CID/DiagramWall=");
+ CPPUNIT_ASSERT(xChartWall.is());
- 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);
+ // The text shape width should be smaller than the chart wall
+ CPPUNIT_ASSERT_LESS(xChartWall->getSize().Width, xXAxis->getSize().Width);
- 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);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(7200, xChartWall->getSize().Height, 100);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1192, xXAxis->getSize().Height, 100);
}
-void Chart2ImportTest::testTdf134225()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTotalsRowIgnored)
{
- 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();
+ loadFromFile(u"xlsx/barchart_totalsrow.xlsx");
+ {
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
- // 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
-}
+ Reference<chart2::data::XDataSequence> xDataSeq =
+ getDataSequenceFromDocByRole(xChartDoc, u"values-y");
+ CPPUNIT_ASSERT(xDataSeq.is());
-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);
+ // 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());
}
- // 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);
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(1, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
- 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());
+ Reference<chart2::data::XDataSequence> xDataSeq =
+ getDataSequenceFromDocByRole(xChartDoc, u"values-y");
+ CPPUNIT_ASSERT(xDataSeq.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);
+ // 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());
+ }
}
-void Chart2ImportTest::testTdf137734()
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPieChartPlotAreaMarginWithAutomaticLayout)
{
- 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#91265
+ // Checks the margin and calculation of the plot area for the pie chart inside the chart area.
- // 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);
-}
+ loadFromFile(u"pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx");
-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.
+ OUString aCheckShapeName = "CID/D=0:CS=0:CT=0:Series=0";
+ // Chart Wuse case Width == Height
{
- 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);
+ // 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
}
- // test position and size of a custom shape within a chart, rotated by 90 degree.
+
+ // Chart use case - Width < Height
{
- 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);
+ // 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
}
-}
-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);
+ // 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
+ }
}
-CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest);
-
+} // end of anonymous namespace
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */