sc/qa/extras/testdocuments/tdf149531.xls |binary
 sc/qa/extras/vba-macro-test.cxx          |   36 +++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

New commits:
commit 4b97420c5bc72504cfbf793aaa7837ebe812399a
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Tue Jun 14 11:51:18 2022 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Jun 15 08:28:17 2022 +0200

    tdf#149325, tdf#149531: sc_macros_test: Add unittest
    
    Change-Id: Ie6d9f75f2dd3ecb92eed4d464b4c36fd993076f1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135819
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/qa/extras/testdocuments/tdf149531.xls 
b/sc/qa/extras/testdocuments/tdf149531.xls
new file mode 100644
index 000000000000..e79c16b0090e
Binary files /dev/null and b/sc/qa/extras/testdocuments/tdf149531.xls differ
diff --git a/sc/qa/extras/vba-macro-test.cxx b/sc/qa/extras/vba-macro-test.cxx
index bd2ebe1702e4..78f5b1c3f4b2 100644
--- a/sc/qa/extras/vba-macro-test.cxx
+++ b/sc/qa/extras/vba-macro-test.cxx
@@ -66,6 +66,7 @@ public:
     void testTdf131562();
     void testTdf107902();
     void testTdf90278();
+    void testTdf149531();
 
     CPPUNIT_TEST_SUITE(VBAMacroTest);
     CPPUNIT_TEST(testSimpleCopyAndPaste);
@@ -83,6 +84,7 @@ public:
     CPPUNIT_TEST(testTdf131562);
     CPPUNIT_TEST(testTdf107902);
     CPPUNIT_TEST(testTdf90278);
+    CPPUNIT_TEST(testTdf149531);
     CPPUNIT_TEST_SUITE_END();
 };
 
@@ -743,6 +745,40 @@ void VBAMacroTest::testTdf90278()
     xDocSh->DoClose();
 }
 
+void VBAMacroTest::testTdf149531()
+{
+    OUString aFileName;
+    createFileURL(u"tdf149531.xls", aFileName);
+    auto xComponent = loadFromDesktop(aFileName, 
"com.sun.star.sheet.SpreadsheetDocument");
+
+    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
+    CPPUNIT_ASSERT(pFoundShell);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
+    ScDocShell* pDocSh = static_cast<ScDocShell*>(pFoundShell);
+    ScDocument& rDoc = pDocSh->GetDocument();
+
+    uno::Any aRet;
+    uno::Sequence<sal_Int16> aOutParamIndex;
+    uno::Sequence<uno::Any> aOutParam;
+    uno::Sequence<uno::Any> aParams;
+
+    for (sal_Int32 i = 0; i < 5; ++i)
+    {
+        // Without the fix in place, this test would have crashed
+        // also check the test doesn't crash when the macro is executed a few 
times in a row
+        SfxObjectShell::CallXScript(xComponent,
+                                    
"vnd.sun.Star.script:VBAProject.Module1.SetColumnWidth?"
+                                    "language=Basic&location=document",
+                                    aParams, aRet, aOutParamIndex, aOutParam);
+    }
+
+    sal_uInt16 nWidth
+        = o3tl::convert(rDoc.GetColWidth(0, 0), o3tl::Length::twip, 
o3tl::Length::mm100);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(25749), nWidth);
+
+    pDocSh->DoClose();
+}
 CPPUNIT_TEST_SUITE_REGISTRATION(VBAMacroTest);
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Reply via email to