summaryrefslogtreecommitdiff
path: root/sc/qa
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2022-03-22 14:15:16 +0100
committerXisco Fauli <xiscofauli@libreoffice.org>2022-03-22 15:20:36 +0100
commit4c9be555e4a12e4c4440b941d3de72644683fb0e (patch)
treeac88b1e305cb266b0b7e2fc4743ed3731e39cefc /sc/qa
parentff8b9f6fca5784f62427302026642de0cdb1ef11 (diff)
tdf#107572: sc_macros: Add unittest
Change-Id: Ib80c8791ead9a151986642d835171fac04c1b1d6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131936 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'sc/qa')
-rw-r--r--sc/qa/extras/macros-test.cxx66
1 files changed, 66 insertions, 0 deletions
diff --git a/sc/qa/extras/macros-test.cxx b/sc/qa/extras/macros-test.cxx
index a53361f2d686..88195ac74153 100644
--- a/sc/qa/extras/macros-test.cxx
+++ b/sc/qa/extras/macros-test.cxx
@@ -18,6 +18,7 @@
#include <docsh.hxx>
#include <document.hxx>
+#include <scitems.hxx>
#include <sortparam.hxx>
#include <com/sun/star/sheet/XFunctionAccess.hpp>
@@ -25,6 +26,7 @@
#include <com/sun/star/script/XLibraryContainerPassword.hpp>
#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <editeng/brushitem.hxx>
#include <helper/xpath.hxx>
@@ -68,6 +70,7 @@ public:
void testTdf130307();
void testTdf146742();
void testMacroButtonFormControlXlsxExport();
+ void testTdf107572();
void testShapeLayerId();
void testVbaRangeSort();
void testFunctionAccessIndirect();
@@ -100,6 +103,7 @@ public:
CPPUNIT_TEST(testTdf130307);
CPPUNIT_TEST(testTdf146742);
CPPUNIT_TEST(testMacroButtonFormControlXlsxExport);
+ CPPUNIT_TEST(testTdf107572);
CPPUNIT_TEST(testShapeLayerId);
CPPUNIT_TEST(testVbaRangeSort);
CPPUNIT_TEST(testFunctionAccessIndirect);
@@ -1055,6 +1059,68 @@ void ScMacrosTest::testTdf105558()
xCloseable->close(true);
}
+void ScMacrosTest::testTdf107572()
+{
+ auto xComponent = loadFromDesktop("private:factory/scalc");
+
+ // insert initial library
+ css::uno::Reference<css::document::XEmbeddedScripts> xDocScr(xComponent, UNO_QUERY_THROW);
+ auto xLibs = xDocScr->getBasicLibraries();
+ auto xLibrary = xLibs->createLibrary("TestLibrary");
+ xLibrary->insertByName(
+ "TestModule",
+ uno::Any(
+ OUString("Function Main\n"
+ " thisComponent.Sheets(0).getCellRangeByName(\"A1:F14\").autoformat(\"Default\")\n"
+ "End Function\n")));
+
+ Any aRet;
+ Sequence<sal_Int16> aOutParamIndex;
+ Sequence<Any> aOutParam;
+
+ SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
+ ScDocShell* pDocSh = static_cast<ScDocShell*>(pFoundShell);
+ CPPUNIT_ASSERT(pDocSh);
+
+ // Without the fix in place, this test would have crashed
+ SfxObjectShell::CallXScript(
+ xComponent,
+ "vnd.sun.Star.script:TestLibrary.TestModule.Main?language=Basic&location=document",
+ {}, aRet, aOutParamIndex, aOutParam);
+
+ ScDocument& rDoc = pDocSh->GetDocument();
+
+ //Check the autoformat has been applied
+ for (SCCOL i = 0; i < 5; ++i)
+ {
+ const ScPatternAttr* pAttr = rDoc.GetPattern(i, 0, 0);
+ const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
+ const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem);
+ const Color& rColor = rBackground.GetColor();
+
+ CPPUNIT_ASSERT_EQUAL(Color(0x0, 0x0, 0x80), rColor);
+ }
+
+ for (SCROW i = 1; i < 13; ++i)
+ {
+ const ScPatternAttr* pAttr = rDoc.GetPattern(0, i, 0);
+ const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
+ const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem);
+ const Color& rColor = rBackground.GetColor();
+
+ CPPUNIT_ASSERT_EQUAL(Color(0x4d, 0x4d, 0x4d), rColor);
+
+ const ScPatternAttr* pAttr2 = rDoc.GetPattern(5, i, 0);
+ const SfxPoolItem& rItem2 = pAttr2->GetItem(ATTR_BACKGROUND);
+ const SvxBrushItem& rBackground2 = static_cast<const SvxBrushItem&>(rItem2);
+ const Color& rColor2 = rBackground2.GetColor();
+
+ CPPUNIT_ASSERT_EQUAL(Color(0xcc, 0xcc, 0xcc), rColor2);
+ }
+
+ pDocSh->DoClose();
+}
+
void ScMacrosTest::testShapeLayerId()
{
auto xComponent = loadFromDesktop("private:factory/scalc");