sc/qa/extras/macros-test.cxx             |   45 +++++++++++++++++++++++++++++++
 sc/qa/extras/testdocuments/tdf144970.ods |binary
 2 files changed, 45 insertions(+)

New commits:
commit ec20aee719aef1ff6fec6e09685dafcfd28fb2a7
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Fri Oct 8 10:07:01 2021 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri Oct 8 13:03:38 2021 +0200

    tdf#144970: sc_macros_test: Add unittest
    
    Change-Id: I0f44f15b7cf43d6a0cee13c427d473effc04c710
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123250
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/qa/extras/macros-test.cxx b/sc/qa/extras/macros-test.cxx
index 128b4b57df42..6c4c9e185521 100644
--- a/sc/qa/extras/macros-test.cxx
+++ b/sc/qa/extras/macros-test.cxx
@@ -14,6 +14,7 @@
 #include <unotools/tempfile.hxx>
 #include <vcl/svapp.hxx>
 #include <editeng/borderline.hxx>
+#include <svx/svdpage.hxx>
 #include <unotools/mediadescriptor.hxx>
 
 #include <docsh.hxx>
@@ -61,6 +62,7 @@ public:
     void testTdf43003();
     void testTdf133887();
     void testTdf133889();
+    void testTdf144970();
     void testTdf138646();
     void testTdf105558();
     void testTdf90278();
@@ -89,6 +91,7 @@ public:
     CPPUNIT_TEST(testTdf43003);
     CPPUNIT_TEST(testTdf133887);
     CPPUNIT_TEST(testTdf133889);
+    CPPUNIT_TEST(testTdf144970);
     CPPUNIT_TEST(testTdf138646);
     CPPUNIT_TEST(testTdf105558);
     CPPUNIT_TEST(testTdf90278);
@@ -1053,6 +1056,48 @@ void ScMacrosTest::testTdf144085()
     css::uno::Reference<css::util::XCloseable> xCloseable(xComponent, 
css::uno::UNO_QUERY_THROW);
     xCloseable->close(true);
 }
+
+void ScMacrosTest::testTdf144970()
+{
+    OUString aFileName;
+    createFileURL(u"tdf144970.ods", aFileName);
+    auto xComponent = loadFromDesktop(aFileName, 
"com.sun.star.sheet.SpreadsheetDocument");
+
+    Any aRet;
+    Sequence< sal_Int16 > aOutParamIndex;
+    Sequence< Any > aOutParam;
+    Sequence< uno::Any > aParams;
+
+    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
+    ScDocShell* pDocSh = static_cast<ScDocShell*>(pFoundShell);
+    ScDocument& rDoc = pDocSh->GetDocument();
+
+    formula::FormulaGrammar::Grammar eGram = 
formula::FormulaGrammar::GRAM_ENGLISH_XL_A1;
+    rDoc.SetGrammar(eGram);
+
+    ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
+    const SdrPage* pPage = pDrawLayer->GetPage(0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), pPage->GetObjCount());
+
+    // Without the fix in place, this test would have failed with
+    // - Expression: false
+    // - Unexpected dialog:  Error: BASIC runtime error.
+    // An exception occurred
+    // Type: com.sun.star.lang.IllegalArgumentException
+    SfxObjectShell::CallXScript(
+        xComponent,
+        
"vnd.sun.Star.script:Standard.Module1.Main?language=Basic&location=document",
+        aParams, aRet, aOutParamIndex, aOutParam);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
+
+    css::uno::Reference<css::util::XCloseable> xCloseable(xComponent, 
css::uno::UNO_QUERY_THROW);
+    xCloseable->close(true);
+}
+
 void ScMacrosTest::testTdf138646()
 {
     OUString aFileName;
diff --git a/sc/qa/extras/testdocuments/tdf144970.ods 
b/sc/qa/extras/testdocuments/tdf144970.ods
new file mode 100644
index 000000000000..860521a52080
Binary files /dev/null and b/sc/qa/extras/testdocuments/tdf144970.ods differ

Reply via email to