[Libreoffice-commits] core.git: chart2/qa

Kohei Yoshida kohei.yoshida at collabora.com
Fri Jun 20 09:03:03 PDT 2014


 chart2/qa/extras/chart2export.cxx                    |   66 +++++++++++++++++++
 chart2/qa/extras/charttest.hxx                       |   39 +++++++++++
 chart2/qa/extras/data/ods/axis-numformats-linked.ods |binary
 3 files changed, 105 insertions(+)

New commits:
commit aac149e4ad06e207e6c1b14f11867dbfbd343ab2
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Jun 20 11:45:57 2014 -0400

    fdo#71767: Write test for this.
    
    Not a direct test for the reported bug, but to ensure that the reworked
    properties survive import and export.
    
    Change-Id: I6c5a4c98eca5180251f04a24346290dedc44447a

diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index 51eb6c3..80aab30 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -62,6 +62,7 @@ public:
     void testFdo78290LineChartMarkerX();
     void testFdo78290ScatterChartMarkerX();
     void testFdo78290CombinationChartMarkerX();
+    void testAxisNumberFormatODS();
 
     CPPUNIT_TEST_SUITE(Chart2ExportTest);
     CPPUNIT_TEST(test);
@@ -95,6 +96,7 @@ public:
     CPPUNIT_TEST(testFdo78290LineChartMarkerX);
     CPPUNIT_TEST(testFdo78290ScatterChartMarkerX);
     CPPUNIT_TEST(testFdo78290CombinationChartMarkerX);
+    CPPUNIT_TEST(testAxisNumberFormatODS);
     CPPUNIT_TEST_SUITE_END();
 
 protected:
@@ -672,6 +674,70 @@ void Chart2ExportTest::testFdo78290CombinationChartMarkerX()
     assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:marker[1]/c:size[1]","val","7");
 }
 
+void Chart2ExportTest::testAxisNumberFormatODS()
+{
+    struct
+    {
+        void check( const Reference<chart2::XChartDocument>& xChartDoc )
+        {
+            Reference<util::XNumberFormatsSupplier> xNFS(xChartDoc, UNO_QUERY_THROW);
+            Reference<util::XNumberFormats> xNumberFormats = xNFS->getNumberFormats();
+            CPPUNIT_ASSERT(xNumberFormats.is());
+
+            Reference<chart2::XAxis> xAxisX = getAxisFromDoc(xChartDoc, 0, 0, 0);
+            Reference<chart2::XTitled> xTitle(xAxisX, UNO_QUERY_THROW);
+            OUString aTitleText = getTitleString(xTitle);
+            CPPUNIT_ASSERT_EQUAL(OUString("Linked To Source"), aTitleText);
+
+            Reference<beans::XPropertySet> xPS(xAxisX, UNO_QUERY_THROW);
+
+            sal_Int32 nNumFmt = -1;
+            xPS->getPropertyValue("NumberFormat") >>= nNumFmt;
+            CPPUNIT_ASSERT_MESSAGE("Failed to get a number format value from X axis.", nNumFmt != -1);
+            Reference<beans::XPropertySet> xNumPS = xNumberFormats->getByKey(nNumFmt);
+            CPPUNIT_ASSERT(xNumPS.is());
+            sal_Int16 nType = util::NumberFormat::UNDEFINED;
+            xNumPS->getPropertyValue("Type") >>= nType;
+            CPPUNIT_ASSERT_MESSAGE("X axis should be percentage format.", (nType & util::NumberFormat::PERCENT));
+
+            bool bNumFmtLinked = false;
+            xPS->getPropertyValue("LinkNumberFormatToSource") >>= bNumFmtLinked;
+            CPPUNIT_ASSERT_MESSAGE("X axis should have its number format linked to source.", bNumFmtLinked);
+
+            Reference<chart2::XAxis> xAxisY = getAxisFromDoc(xChartDoc, 0, 1, 0);
+            xTitle.set(xAxisY, UNO_QUERY_THROW);
+            aTitleText = getTitleString(xTitle);
+            CPPUNIT_ASSERT_EQUAL(OUString("Not Linked"), aTitleText);
+
+            xPS.set(xAxisY, UNO_QUERY_THROW);
+
+            nNumFmt = -1;
+            xPS->getPropertyValue("NumberFormat") >>= nNumFmt;
+            CPPUNIT_ASSERT_MESSAGE("Failed to get a number format value from Y axis.", nNumFmt != -1);
+            xNumPS = xNumberFormats->getByKey(nNumFmt);
+            CPPUNIT_ASSERT(xNumPS.is());
+            nType = util::NumberFormat::UNDEFINED;
+            xNumPS->getPropertyValue("Type") >>= nType;
+            CPPUNIT_ASSERT_MESSAGE("Y axis should be a normal number format.", (nType & util::NumberFormat::NUMBER));
+
+            bNumFmtLinked = true;
+            xPS->getPropertyValue("LinkNumberFormatToSource") >>= bNumFmtLinked;
+            CPPUNIT_ASSERT_MESSAGE("Y axis should not have its number format linked to source.", !bNumFmtLinked);
+        }
+
+    } aTest;
+
+    load("/chart2/qa/extras/data/ods/", "axis-numformats-linked.ods");
+
+    Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+    aTest.check(xChartDoc);
+
+    // Reload the document and make sure everything remains intact.
+    reload("calc8");
+    xChartDoc = getChartDocFromSheet(0, mxComponent);
+    aTest.check(xChartDoc);
+}
+
 void Chart2ExportTest::testBarChartRotation()
 {
     load ("/chart2/qa/extras/data/docx/", "barChartRotation.docx");
diff --git a/chart2/qa/extras/charttest.hxx b/chart2/qa/extras/charttest.hxx
index 5d0d15e..e0969f4 100644
--- a/chart2/qa/extras/charttest.hxx
+++ b/chart2/qa/extras/charttest.hxx
@@ -38,11 +38,17 @@
 #include <com/sun/star/chart2/XChartTypeContainer.hpp>
 #include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
 #include <com/sun/star/chart2/XDataSeriesContainer.hpp>
+#include <com/sun/star/chart2/XFormattedString.hpp>
+#include <com/sun/star/chart2/XTitle.hpp>
+#include <com/sun/star/chart2/XTitled.hpp>
 #include <com/sun/star/chart2/data/XLabeledDataSequence.hpp>
 #include <com/sun/star/chart2/data/XDataSource.hpp>
 #include <com/sun/star/chart/XChartDataArray.hpp>
 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
 #include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/util/NumberFormat.hpp>
+
 #include <iostream>
 
 #include <libxml/xmlwriter.h>
@@ -211,6 +217,27 @@ Reference< chart2::XChartType > getChartTypeFromDoc( Reference< chart2::XChartDo
     return xChartTypeSequence[nChartType];
 }
 
+Reference<chart2::XAxis> getAxisFromDoc(
+    const Reference<chart2::XChartDocument>& xChartDoc, sal_Int32 nCooSys, sal_Int32 nAxisDim, sal_Int32 nAxisIndex )
+{
+    Reference<chart2::XDiagram> xDiagram = xChartDoc->getFirstDiagram();
+    CPPUNIT_ASSERT(xDiagram.is());
+
+    Reference<chart2::XCoordinateSystemContainer> xCooSysContainer(xDiagram, UNO_QUERY_THROW);
+    CPPUNIT_ASSERT(xCooSysContainer.is());
+
+    Sequence<Reference<chart2::XCoordinateSystem> > xCooSysSequence = xCooSysContainer->getCoordinateSystems();
+    CPPUNIT_ASSERT(xCooSysSequence.getLength() > nCooSys);
+
+    Reference<chart2::XCoordinateSystem> xCoord = xCooSysSequence[nCooSys];
+    CPPUNIT_ASSERT(xCoord.is());
+
+    Reference<chart2::XAxis> xAxis = xCoord->getAxisByDimension(nAxisDim, nAxisIndex);
+    CPPUNIT_ASSERT(xAxis.is());
+
+    return xAxis;
+}
+
 Reference< chart2::XDataSeries > getDataSeriesFromDoc( uno::Reference< chart2::XChartDocument > xChartDoc,
                                                                 sal_Int32 nDataSeries, sal_Int32 nChartType = 0, sal_Int32 nCooSys = 0 )
 {
@@ -406,6 +433,18 @@ uno::Sequence < OUString > ChartTest::getImpressChartColumnDescriptions( const c
     return seriesList;
 }
 
+OUString getTitleString( const Reference<chart2::XTitled>& xTitled, sal_Int32 nIndex = 0 )
+{
+    uno::Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+    CPPUNIT_ASSERT(xTitle.is());
+    uno::Sequence<uno::Reference<chart2::XFormattedString> > aFSSeq = xTitle->getText();
+    CPPUNIT_ASSERT(aFSSeq.getLength() > nIndex);
+    uno::Reference<chart2::XFormattedString> xFS = aFSSeq[nIndex];
+    CPPUNIT_ASSERT(xFS.is());
+
+    return xFS->getString();
+}
+
 #endif // INCLUDED_CHART2_QA_EXTRAS_CHARTTEST_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/data/ods/axis-numformats-linked.ods b/chart2/qa/extras/data/ods/axis-numformats-linked.ods
new file mode 100644
index 0000000..ddaa9c9
Binary files /dev/null and b/chart2/qa/extras/data/ods/axis-numformats-linked.ods differ


More information about the Libreoffice-commits mailing list