LCOV - code coverage report
Current view: top level - chart2/qa/extras - chart2import.cxx (source / functions) Hit Total Coverage
Test: commit 0e63ca4fde4e446f346e35849c756a30ca294aab Lines: 172 172 100.0 %
Date: 2014-04-11 Functions: 24 25 96.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  */
       9             : 
      10             : 
      11             : #include "charttest.hxx"
      12             : #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
      13             : #include <com/sun/star/chart2/CurveStyle.hpp>
      14             : #include <com/sun/star/chart/ErrorBarStyle.hpp>
      15             : #include <com/sun/star/chart2/XChartDocument.hpp>
      16             : #include <com/sun/star/chart/XChartDocument.hpp>
      17             : #include <com/sun/star/chart/XChartData.hpp>
      18             : #include <com/sun/star/chart2/XInternalDataProvider.hpp>
      19             : #include <com/sun/star/chart/XChartDataArray.hpp>
      20             : 
      21          42 : class Chart2ImportTest : public ChartTest
      22             : {
      23             : public:
      24             :     void Fdo60083();
      25             :     void testSteppedLines();
      26             :     void testErrorBarRange();
      27             :     void testODSChartSeries();
      28             :     void testXLSXChartSeries();
      29             :     void testXLSChartSeries();
      30             :     void testODTChartSeries();
      31             :     void testDOCChartSeries();
      32             :     void testDOCXChartSeries();
      33             :     void testPPTXChartSeries();
      34             :     void testPPTChartSeries();
      35             :     void testODPChartSeries();
      36             :     void testBnc864396();
      37             :     void testSimpleStrictXLSX();
      38             : 
      39           2 :     CPPUNIT_TEST_SUITE(Chart2ImportTest);
      40           1 :     CPPUNIT_TEST(Fdo60083);
      41           1 :     CPPUNIT_TEST(testSteppedLines);
      42           1 :     CPPUNIT_TEST(testErrorBarRange);
      43           1 :     CPPUNIT_TEST(testODSChartSeries);
      44           1 :     CPPUNIT_TEST(testXLSXChartSeries);
      45           1 :     CPPUNIT_TEST(testXLSChartSeries);
      46           1 :     CPPUNIT_TEST(testODTChartSeries);
      47           1 :     CPPUNIT_TEST(testDOCChartSeries);
      48           1 :     CPPUNIT_TEST(testDOCXChartSeries);
      49             : /*
      50             :  *  Disabling Impress Uts.
      51             :  *  ChartTest::tearDown() calls dispose of mxComponent
      52             :  *  this causes the UT to crash in sd.
      53             :  *  sd::DrawView::Notify tries to reset by calling sd::DrawViewShell::ResetActualPage
      54             :  */
      55           1 :     CPPUNIT_TEST(testPPTChartSeries);
      56           1 :     CPPUNIT_TEST(testPPTXChartSeries);
      57           1 :     CPPUNIT_TEST(testODPChartSeries);
      58           1 :     CPPUNIT_TEST(testBnc864396);
      59           1 :     CPPUNIT_TEST(testSimpleStrictXLSX);
      60           2 :     CPPUNIT_TEST_SUITE_END();
      61             : 
      62             : private:
      63             : 
      64             : };
      65             : 
      66             : // error bar import
      67             : // split method up into smaller chunks for more detailed tests
      68           1 : void Chart2ImportTest::Fdo60083()
      69             : {
      70           1 :     load("/chart2/qa/extras/data/ods/", "fdo60083.ods");
      71           1 :     uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
      72           1 :     CPPUNIT_ASSERT(xChartDoc.is());
      73             : 
      74           2 :     Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
      75           1 :     CPPUNIT_ASSERT( xDataSeries.is() );
      76             : 
      77           2 :     Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
      78           1 :     CPPUNIT_ASSERT( xPropSet.is() );
      79             : 
      80             :     // test that y error bars are there
      81           2 :     Reference< beans::XPropertySet > xErrorBarYProps;
      82           1 :     xPropSet->getPropertyValue("ErrorBarY") >>= xErrorBarYProps;
      83           1 :     CPPUNIT_ASSERT(xErrorBarYProps.is());
      84             :     {
      85             :         sal_Int32 nErrorBarStyle;
      86           2 :         CPPUNIT_ASSERT(
      87             :             xErrorBarYProps->getPropertyValue("ErrorBarStyle")
      88           1 :             >>= nErrorBarStyle);
      89           2 :         CPPUNIT_ASSERT_EQUAL(
      90             :             static_cast<sal_Int32>(chart::ErrorBarStyle::RELATIVE),
      91           1 :             nErrorBarStyle);
      92             : 
      93           1 :         double nVal = 0.0;
      94           2 :         CPPUNIT_ASSERT(
      95           1 :             xErrorBarYProps->getPropertyValue("PositiveError") >>= nVal);
      96           1 :         CPPUNIT_ASSERT_DOUBLES_EQUAL(5.0, nVal, 1e-8);
      97             : 
      98           2 :         CPPUNIT_ASSERT(
      99           1 :             xErrorBarYProps->getPropertyValue("NegativeError") >>= nVal);
     100           1 :         CPPUNIT_ASSERT_DOUBLES_EQUAL(5.0, nVal, 1e-8);
     101             : 
     102             :         bool bVal;
     103           2 :         CPPUNIT_ASSERT(
     104           1 :             xErrorBarYProps->getPropertyValue("ShowPositiveError") >>= bVal);
     105           1 :         CPPUNIT_ASSERT_EQUAL(bVal, true);
     106             : 
     107           2 :         CPPUNIT_ASSERT(
     108           1 :             xErrorBarYProps->getPropertyValue("ShowNegativeError") >>= bVal);
     109           1 :         CPPUNIT_ASSERT_EQUAL(bVal, true);
     110             :     }
     111             : 
     112             :     // test that x error bars are not imported
     113           2 :     Reference< beans::XPropertySet > xErrorBarXProps;
     114           1 :     xPropSet->getPropertyValue("ErrorBarX") >>= xErrorBarXProps;
     115           2 :     CPPUNIT_ASSERT(!xErrorBarXProps.is());
     116           1 : }
     117             : 
     118           1 : void Chart2ImportTest::testErrorBarRange()
     119             : {
     120           1 :     load("/chart2/qa/extras/data/ods/", "error_bar_range.ods");
     121           1 :     uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
     122           1 :     CPPUNIT_ASSERT(xChartDoc.is());
     123             : 
     124           2 :     Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
     125           1 :     CPPUNIT_ASSERT( xDataSeries.is() );
     126             : 
     127           2 :     Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
     128           1 :     CPPUNIT_ASSERT( xPropSet.is() );
     129             : 
     130             :     // test that y error bars are there
     131           2 :     Reference< beans::XPropertySet > xErrorBarYProps;
     132           1 :     xPropSet->getPropertyValue("ErrorBarY") >>= xErrorBarYProps;
     133           1 :     CPPUNIT_ASSERT(xErrorBarYProps.is());
     134             : 
     135             :     sal_Int32 nErrorBarStyle;
     136           2 :     CPPUNIT_ASSERT(
     137             :             xErrorBarYProps->getPropertyValue("ErrorBarStyle")
     138           1 :             >>= nErrorBarStyle);
     139           2 :     CPPUNIT_ASSERT_EQUAL(
     140             :             static_cast<sal_Int32>(chart::ErrorBarStyle::FROM_DATA),
     141           1 :             nErrorBarStyle);
     142             : 
     143           2 :     OUString aRangePos;
     144           1 :     CPPUNIT_ASSERT(xErrorBarYProps->getPropertyValue("ErrorBarRangePositive") >>= aRangePos);
     145           2 :     CPPUNIT_ASSERT_EQUAL(aRangePos, OUString("$Sheet1.$C$2:$C$4"));
     146           1 : }
     147             : 
     148             : // stepped line interpolation
     149           1 : void Chart2ImportTest::testSteppedLines()
     150             : {
     151           1 :     const sal_Int32 MAXSHEET = 14;
     152             :     chart2::CurveStyle curveStyle[] = {
     153             :         chart2::CurveStyle_LINES,
     154             :         chart2::CurveStyle_CUBIC_SPLINES,
     155             :         chart2::CurveStyle_B_SPLINES,
     156             :         chart2::CurveStyle_STEP_START,
     157             :         chart2::CurveStyle_STEP_END,
     158             :         chart2::CurveStyle_STEP_CENTER_X,
     159             :         chart2::CurveStyle_STEP_CENTER_Y,
     160             :         chart2::CurveStyle_LINES,
     161             :         chart2::CurveStyle_CUBIC_SPLINES,
     162             :         chart2::CurveStyle_B_SPLINES,
     163             :         chart2::CurveStyle_STEP_START,
     164             :         chart2::CurveStyle_STEP_END,
     165             :         chart2::CurveStyle_STEP_CENTER_X,
     166             :         chart2::CurveStyle_STEP_CENTER_Y
     167           1 :     };
     168             : 
     169           1 :     load("/chart2/qa/extras/data/ods/", "stepped_lines.ods");
     170          15 :     for(sal_Int32 nSheet = 0; nSheet < MAXSHEET; ++nSheet)
     171             :     {
     172          14 :         uno::Reference< chart2::XChartDocument > xChart2Doc = getChartDocFromSheet( nSheet, mxComponent );
     173          14 :         CPPUNIT_ASSERT(xChart2Doc.is());
     174             : 
     175          28 :         Reference< chart2::XChartType > xChartType = getChartTypeFromDoc( xChart2Doc, 0 );
     176          14 :         CPPUNIT_ASSERT(xChartType.is());
     177             : 
     178          28 :         Reference< beans::XPropertySet > xPropSet( xChartType, UNO_QUERY );
     179          14 :         CPPUNIT_ASSERT(xPropSet.is());
     180             : 
     181             :         chart2::CurveStyle eCurveStyle;
     182          14 :         xPropSet->getPropertyValue("CurveStyle") >>= eCurveStyle;
     183          14 :         CPPUNIT_ASSERT_EQUAL(eCurveStyle, curveStyle[nSheet]);
     184          14 :     }
     185           1 : }
     186             : 
     187           3 : uno::Sequence < OUString > getChartColumnDescriptions( uno::Reference< chart::XChartDocument > xChart1Doc)
     188             : {
     189           3 :     CPPUNIT_ASSERT(xChart1Doc.is());
     190           3 :     uno::Reference< chart::XChartDataArray > xChartData ( xChart1Doc->getData(), UNO_QUERY_THROW);
     191           3 :     CPPUNIT_ASSERT(xChartData.is());
     192           3 :     uno::Sequence < OUString > seriesList = xChartData->getColumnDescriptions();
     193           3 :     return seriesList;
     194             : }
     195             : 
     196           1 : void Chart2ImportTest::testODSChartSeries()
     197             : {
     198           1 :     load("/chart2/qa/extras/data/ods/", "chart.ods");
     199           1 :     uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW);
     200           2 :     uno::Sequence < OUString > seriesList = getChartColumnDescriptions( xChart1Doc);
     201           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]);
     202           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Col2"), seriesList[1]);
     203           2 :     CPPUNIT_ASSERT_EQUAL(OUString("Col 33"), seriesList[2]);
     204             : 
     205           1 : }
     206             : 
     207           1 : void Chart2ImportTest::testXLSXChartSeries()
     208             : {
     209           1 :     load("/chart2/qa/extras/data/xlsx/", "chart.xlsx");
     210           1 :     uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW);
     211           2 :     uno::Sequence < OUString > seriesList = getChartColumnDescriptions(xChart1Doc );
     212           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]);
     213           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Col2"), seriesList[1]);
     214           2 :     CPPUNIT_ASSERT_EQUAL(OUString("Col 33"), seriesList[2]);
     215             : 
     216           1 : }
     217             : 
     218           1 : void Chart2ImportTest::testXLSChartSeries()
     219             : {
     220           1 :     load("/chart2/qa/extras/data/xls/", "chart.xls");
     221           1 :     uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, mxComponent ), UNO_QUERY_THROW);
     222           2 :     uno::Sequence < OUString > seriesList = getChartColumnDescriptions(xChart1Doc );
     223           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]);
     224           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Col 2"), seriesList[1]);
     225           2 :     CPPUNIT_ASSERT_EQUAL(OUString("Col 3"), seriesList[2]);
     226             : 
     227           1 : }
     228             : 
     229           1 : void Chart2ImportTest::testODTChartSeries()
     230             : {
     231           1 :     load("/chart2/qa/extras/data/odt/", "chart.odt");
     232           1 :     uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent);
     233           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
     234           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
     235           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
     236             : 
     237           1 : }
     238             : 
     239           1 : void Chart2ImportTest::testDOCChartSeries()
     240             : {
     241           1 :     load("/chart2/qa/extras/data/doc/", "chart.doc");
     242           1 :     uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent);
     243           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
     244           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
     245           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
     246           1 : }
     247             : 
     248           1 : void Chart2ImportTest::testDOCXChartSeries()
     249             : {
     250           1 :     load("/chart2/qa/extras/data/docx/", "chart.docx");
     251           1 :     uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent);
     252           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Series 1"), seriesList[0]);
     253           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Series 2"), seriesList[1]);
     254           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), seriesList[2]);
     255           1 : }
     256             : 
     257           1 : void Chart2ImportTest::testPPTChartSeries()
     258             : {
     259             :     //test chart series names for ppt
     260           1 :     uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions("/chart2/qa/extras/data/ppt/", "chart.ppt");
     261             : 
     262           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
     263           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
     264           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
     265             : 
     266           1 : }
     267             : 
     268           1 : void Chart2ImportTest::testPPTXChartSeries()
     269             : {
     270             :     //test chart series names for pptx
     271           1 :     uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions("/chart2/qa/extras/data/pptx/", "chart.pptx");
     272           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[1]);
     273           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[2]);
     274           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[3]);
     275             : 
     276           1 : }
     277             : 
     278           1 : void Chart2ImportTest::testODPChartSeries()
     279             : {
     280             :     //test chart series names for odp
     281           1 :     uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions("/chart2/qa/extras/data/odp/", "chart.odp");
     282           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
     283           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
     284           1 :     CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
     285             : 
     286           1 : }
     287             : 
     288           1 : void Chart2ImportTest::testBnc864396()
     289             : {
     290           1 :     uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromImpress("/chart2/qa/extras/data/pptx/", "bnc864396.pptx"), uno::UNO_QUERY_THROW);
     291           1 :     CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
     292             : 
     293           2 :     uno::Reference< chart2::XInternalDataProvider > xDataProvider( xChartDoc->getDataProvider(), uno::UNO_QUERY_THROW );
     294           2 :     uno::Reference< chart::XChartDataArray > xChartDataArray(xDataProvider, uno::UNO_QUERY_THROW);
     295           2 :     uno::Sequence< OUString > aRowLabels = xChartDataArray->getRowDescriptions();
     296           4 :     for(sal_Int32 i = 0; i < aRowLabels.getLength(); ++i)
     297             :     {
     298           3 :         OUString aExpected = OUString("cat") + OUString::number(i+1);
     299           3 :         CPPUNIT_ASSERT_EQUAL(aExpected, aRowLabels[i]);
     300           4 :     }
     301           1 : }
     302             : 
     303           1 : void Chart2ImportTest::testSimpleStrictXLSX()
     304             : {
     305           1 :     load("/chart2/qa/extras/data/xlsx/", "strict_chart.xlsx");
     306           1 :     uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
     307           1 :     CPPUNIT_ASSERT(xChartDoc.is());
     308             : 
     309           2 :     Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
     310           2 :     CPPUNIT_ASSERT(xDataSeries.is());
     311             : 
     312           1 : }
     313             : 
     314           1 : CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest);
     315             : 
     316           4 : CPPUNIT_PLUGIN_IMPLEMENT();
     317             : 
     318             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10