sc/CppunitTest_sc_sparkline_test.mk      |   60 +++++++++++
 sc/Module_sc.mk                          |    1 
 sc/qa/unit/SparklineImportExportTest.cxx |  159 +++++++++++++++++++++++++++++++
 sc/qa/unit/data/xlsx/Sparklines.xlsx     |binary
 4 files changed, 220 insertions(+)

New commits:
commit 860299fe04ec5a2ff0d716186d43d517006069aa
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Thu Feb 24 18:04:37 2022 +0900
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Tue Mar 15 06:31:13 2022 +0100

    sc: test Sparkline OOXML Import into Calc Sparkline doc. model
    
    Change-Id: I513571de398be419074d54c5861374effae07709
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131490
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/sc/CppunitTest_sc_sparkline_test.mk 
b/sc/CppunitTest_sc_sparkline_test.mk
new file mode 100644
index 000000000000..5dcd9a9921b5
--- /dev/null
+++ b/sc/CppunitTest_sc_sparkline_test.mk
@@ -0,0 +1,60 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sc_sparkline_test))
+
+$(eval $(call gb_CppunitTest_use_common_precompiled_header,sc_sparkline_test))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_sparkline_test, \
+    sc/qa/unit/SparklineImportExportTest \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sc_sparkline_test, \
+    basegfx \
+    comphelper \
+    cppu \
+    cppuhelper \
+    sal \
+    salhelper \
+    sax \
+    sc \
+    scqahelper \
+    sfx \
+    subsequenttest \
+    test \
+    tl \
+    unotest \
+    vcl \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_sparkline_test,\
+    -I$(SRCDIR)/sc/source/ui/inc \
+    -I$(SRCDIR)/sc/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sc_sparkline_test,\
+    offapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_sdk_api,sc_sparkline_test))
+
+$(eval $(call gb_CppunitTest_use_ure,sc_sparkline_test))
+$(eval $(call gb_CppunitTest_use_vcl,sc_sparkline_test))
+
+$(eval $(call gb_CppunitTest_use_rdb,sc_sparkline_test,services))
+
+$(eval $(call gb_CppunitTest_use_components,sc_sparkline_test))
+
+$(eval $(call gb_CppunitTest_use_configuration,sc_sparkline_test))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 1c146060b3a4..6dde171ebdc8 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -209,6 +209,7 @@ $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\
        CppunitTest_sc_sheetlinkobj \
        CppunitTest_sc_sheetlinksobj \
        CppunitTest_sc_sortdescriptorbaseobj \
+       CppunitTest_sc_sparkline_test \
        CppunitTest_sc_spreadsheetsettings \
        CppunitTest_sc_spreadsheetsettingsobj \
        CppunitTest_sc_styleobj \
diff --git a/sc/qa/unit/SparklineImportExportTest.cxx 
b/sc/qa/unit/SparklineImportExportTest.cxx
new file mode 100644
index 000000000000..cf970ae8995c
--- /dev/null
+++ b/sc/qa/unit/SparklineImportExportTest.cxx
@@ -0,0 +1,159 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "helper/qahelper.hxx"
+
+#include <com/sun/star/lang/XComponent.hpp>
+#include <docsh.hxx>
+#include <Sparkline.hxx>
+
+using namespace css;
+
+class SparklineImportExportTest : public ScBootstrapFixture
+{
+private:
+    uno::Reference<uno::XInterface> m_xCalcComponent;
+
+public:
+    SparklineImportExportTest()
+        : ScBootstrapFixture("sc/qa/unit/data")
+    {
+    }
+
+    virtual void setUp() override
+    {
+        test::BootstrapFixture::setUp();
+
+        // This is a bit of a fudge, we do this to ensure that 
ScGlobals::ensure,
+        // which is a private symbol to us, gets called
+        m_xCalcComponent = getMultiServiceFactory()->createInstance(
+            "com.sun.star.comp.Calc.SpreadsheetDocument");
+        CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is());
+    }
+
+    virtual void tearDown() override
+    {
+        uno::Reference<lang::XComponent>(m_xCalcComponent, 
uno::UNO_QUERY_THROW)->dispose();
+        test::BootstrapFixture::tearDown();
+    }
+
+    void testSparklines();
+
+    CPPUNIT_TEST_SUITE(SparklineImportExportTest);
+    CPPUNIT_TEST(testSparklines);
+    CPPUNIT_TEST_SUITE_END();
+};
+
+void SparklineImportExportTest::testSparklines()
+{
+    ScDocShellRef xDocSh = loadDoc(u"Sparklines.", FORMAT_XLSX);
+    CPPUNIT_ASSERT(xDocSh);
+
+    ScDocument& rDocument = xDocSh->GetDocument();
+    // Sparkline at Sheet1:A2
+    {
+        sc::Sparkline* pSparkline = rDocument.GetSparkline(ScAddress(0, 1, 
0)); // A2
+        CPPUNIT_ASSERT(pSparkline);
+        auto pSparklineGroup = pSparkline->getSparklineGroup();
+        CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Line, 
pSparklineGroup->m_eType);
+
+        CPPUNIT_ASSERT_EQUAL(Color(0x376092), pSparklineGroup->m_aColorSeries);
+        CPPUNIT_ASSERT_EQUAL(Color(0x00b050), 
pSparklineGroup->m_aColorNegative);
+        CPPUNIT_ASSERT_EQUAL(Color(0x000000), pSparklineGroup->m_aColorAxis);
+        CPPUNIT_ASSERT_EQUAL(Color(0x000000), 
pSparklineGroup->m_aColorMarkers);
+        CPPUNIT_ASSERT_EQUAL(Color(0x7030a0), pSparklineGroup->m_aColorFirst);
+        CPPUNIT_ASSERT_EQUAL(Color(0xff0000), pSparklineGroup->m_aColorLast);
+        CPPUNIT_ASSERT_EQUAL(Color(0x92d050), pSparklineGroup->m_aColorHigh);
+        CPPUNIT_ASSERT_EQUAL(Color(0x00b0f0), pSparklineGroup->m_aColorLow);
+
+        CPPUNIT_ASSERT_EQUAL(1.0, pSparklineGroup->m_fLineWeight);
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bDateAxis);
+        CPPUNIT_ASSERT_EQUAL(sc::DisplayEmptyCellAs::Gap, 
pSparklineGroup->m_eDisplayEmptyCellsAs);
+
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bMarkers);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bHigh);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bLow);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bFirst);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bLast);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bNegative);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bDisplayXAxis);
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bDisplayHidden);
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bRightToLeft);
+
+        CPPUNIT_ASSERT_EQUAL(false, bool(pSparklineGroup->m_aManualMax));
+        CPPUNIT_ASSERT_EQUAL(false, bool(pSparklineGroup->m_aManualMin));
+    }
+    // Sparkline at Sheet1:A3
+    {
+        sc::Sparkline* pSparkline = rDocument.GetSparkline(ScAddress(0, 2, 
0)); // A3
+        CPPUNIT_ASSERT(pSparkline);
+        auto pSparklineGroup = pSparkline->getSparklineGroup();
+        CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Column, 
pSparklineGroup->m_eType);
+
+        CPPUNIT_ASSERT_EQUAL(Color(0x376092), pSparklineGroup->m_aColorSeries);
+        CPPUNIT_ASSERT_EQUAL(Color(0xff0000), 
pSparklineGroup->m_aColorNegative);
+        CPPUNIT_ASSERT_EQUAL(Color(0x000000), pSparklineGroup->m_aColorAxis);
+        CPPUNIT_ASSERT_EQUAL(Color(0xd00000), 
pSparklineGroup->m_aColorMarkers);
+        CPPUNIT_ASSERT_EQUAL(Color(0x92d050), pSparklineGroup->m_aColorFirst);
+        CPPUNIT_ASSERT_EQUAL(Color(0x00b0f0), pSparklineGroup->m_aColorLast);
+        CPPUNIT_ASSERT_EQUAL(Color(0x7030a0), pSparklineGroup->m_aColorHigh);
+        CPPUNIT_ASSERT_EQUAL(Color(0xffc000), pSparklineGroup->m_aColorLow);
+
+        CPPUNIT_ASSERT_EQUAL(0.75, pSparklineGroup->m_fLineWeight);
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bDateAxis);
+        CPPUNIT_ASSERT_EQUAL(sc::DisplayEmptyCellAs::Gap, 
pSparklineGroup->m_eDisplayEmptyCellsAs);
+
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bMarkers);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bHigh);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bLow);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bFirst);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bLast);
+        CPPUNIT_ASSERT_EQUAL(true, pSparklineGroup->m_bNegative);
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bDisplayXAxis);
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bDisplayHidden);
+        CPPUNIT_ASSERT_EQUAL(false, pSparklineGroup->m_bRightToLeft);
+
+        CPPUNIT_ASSERT_EQUAL(false, bool(pSparklineGroup->m_aManualMax));
+        CPPUNIT_ASSERT_EQUAL(false, bool(pSparklineGroup->m_aManualMin));
+    }
+    // Sparkline at Sheet2:B1
+    {
+        sc::Sparkline* pSparkline = rDocument.GetSparkline(ScAddress(1, 0, 
1)); //B1
+        CPPUNIT_ASSERT(pSparkline);
+        auto pSparklineGroup = pSparkline->getSparklineGroup();
+        CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Column, 
pSparklineGroup->m_eType);
+    }
+    // Sparkline at Sheet2:B2
+    {
+        sc::Sparkline* pSparkline = rDocument.GetSparkline(ScAddress(1, 1, 
1)); //B2
+        CPPUNIT_ASSERT(pSparkline);
+        auto pSparklineGroup = pSparkline->getSparklineGroup();
+        CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Line, 
pSparklineGroup->m_eType);
+    }
+    // Sparkline at Sheet2:B2
+    {
+        sc::Sparkline* pSparkline = rDocument.GetSparkline(ScAddress(1, 1, 
1)); //B2
+        CPPUNIT_ASSERT(pSparkline);
+        auto pSparklineGroup = pSparkline->getSparklineGroup();
+        CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Line, 
pSparklineGroup->m_eType);
+    }
+    // Sparkline doesn't exists at A4
+    {
+        sc::Sparkline* pSparkline = rDocument.GetSparkline(ScAddress(0, 3, 
0)); //A4
+        CPPUNIT_ASSERT(!pSparkline);
+    }
+
+    xDocSh->DoClose();
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(SparklineImportExportTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/unit/data/xlsx/Sparklines.xlsx 
b/sc/qa/unit/data/xlsx/Sparklines.xlsx
new file mode 100644
index 000000000000..3725841603be
Binary files /dev/null and b/sc/qa/unit/data/xlsx/Sparklines.xlsx differ

Reply via email to