sc/qa/unit/bugfix-test.cxx             |   36 ++------
 sc/qa/unit/copy_paste_test.cxx         |  137 +++------------------------------
 sc/qa/unit/helper/qahelper.cxx         |   19 ++++
 sc/qa/unit/helper/qahelper.hxx         |    1 
 sc/qa/unit/jumbosheets-test.cxx        |   41 ++-------
 sc/qa/unit/subsequent_export_test2.cxx |   50 ++----------
 6 files changed, 65 insertions(+), 219 deletions(-)

New commits:
commit aff280d2304688673efa974eab35d8de4c83e9c1
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Wed Feb 23 11:49:22 2022 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Feb 23 14:59:28 2022 +0100

    sc: qa: factor out common code
    
    Change-Id: I3a71cdb4b64397403b1a17b9c63c736169581376
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130424
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/qa/unit/bugfix-test.cxx b/sc/qa/unit/bugfix-test.cxx
index b5b0c92a800e..3dac5e6df725 100644
--- a/sc/qa/unit/bugfix-test.cxx
+++ b/sc/qa/unit/bugfix-test.cxx
@@ -374,23 +374,8 @@ void ScFiltersTest::testTdf43534()
 
 void ScFiltersTest::testTdf91979()
 {
-    uno::Reference< frame::XDesktop2 > xDesktop = 
frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop.is());
-
     Sequence < beans::PropertyValue > args{ 
comphelper::makePropertyValue("Hidden", true) };
-
-    uno::Reference< lang::XComponent > xComponent = 
xDesktop->loadComponentFromURL(
-        "private:factory/scalc",
-        "_blank",
-        0,
-        args);
-    CPPUNIT_ASSERT(xComponent.is());
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    ScDocShellRef xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
+    ScDocShellRef xDocSh = loadEmptyDocument(args);
     CPPUNIT_ASSERT(xDocSh);
 
     // Get the document controller
@@ -405,6 +390,8 @@ void ScFiltersTest::testTdf91979()
     int nRowHeight = ScViewData::ToPixel(rDoc.GetRowHeight(0, 0), 
aViewData.GetPPTY());
     CPPUNIT_ASSERT_EQUAL(static_cast<tools::Long>((rDoc.MaxCol() - 1) * 
nColWidth), aPos.getX());
     CPPUNIT_ASSERT_EQUAL(static_cast<tools::Long>(10000 * nRowHeight), 
aPos.getY());
+
+    xDocSh->DoClose();
 }
 
 /*
@@ -708,17 +695,12 @@ void ScFiltersTest::testTdf129789()
 
 void ScFiltersTest::testTdf130725()
 {
-    css::uno::Reference<css::frame::XDesktop2> xDesktop
-        = 
css::frame::Desktop::create(comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop.is());
-
-    // 1. Create spreadsheet
-    css::uno::Sequence aHiddenArgList{ comphelper::makePropertyValue("Hidden", 
true) };
+    Sequence < beans::PropertyValue > args{ 
comphelper::makePropertyValue("Hidden", true) };
+    ScDocShellRef xDocSh = loadEmptyDocument(args);
+    CPPUNIT_ASSERT(xDocSh);
 
-    css::uno::Reference<css::lang::XComponent> xComponent
-        = xDesktop->loadComponentFromURL("private:factory/scalc", "_blank", 0, 
aHiddenArgList);
-    css::uno::Reference<css::sheet::XSpreadsheetDocument> xDoc(xComponent,
-        css::uno::UNO_QUERY_THROW);
+    uno::Reference<frame::XModel> xModel = xDocSh->GetModel();
+    uno::Reference<sheet::XSpreadsheetDocument> xDoc(xModel, 
uno::UNO_QUERY_THROW);
 
     // 2. Insert 0.0042 into a cell as a formula, to force the conversion from 
string to double
     css::uno::Reference<css::sheet::XCellRangesAccess> 
xSheets(xDoc->getSheets(),
@@ -730,6 +712,8 @@ void ScFiltersTest::testTdf130725()
     //    (it was 0.0042000000000000006 instead of 0.0041999999999999997).
     CPPUNIT_ASSERT_EQUAL_MESSAGE("Value must be the nearest representation of 
decimal 0.0042",
         0.0042, xCell->getValue()); // strict equality
+
+    xDocSh->DoClose();
 }
 
 void ScFiltersTest::testTdf104502_hiddenColsCountedInPageCount()
diff --git a/sc/qa/unit/copy_paste_test.cxx b/sc/qa/unit/copy_paste_test.cxx
index 79e1eaf7ef82..bcdce8eaa5f8 100644
--- a/sc/qa/unit/copy_paste_test.cxx
+++ b/sc/qa/unit/copy_paste_test.cxx
@@ -106,22 +106,7 @@ void ScCopyPasteTest::testCopyPasteXLS()
     // 4. Close the document (Ctrl-W)
     xDocSh->DoClose();
 
-    uno::Reference< frame::XDesktop2 > xDesktop = 
frame::Desktop::create(::comphelper::getProcessComponentContext());
-    // 5. Create a new Spreadsheet
-    Sequence < beans::PropertyValue > args{ 
comphelper::makePropertyValue("Hidden", true) };
-
-    uno::Reference< lang::XComponent > xComponent = 
xDesktop->loadComponentFromURL(
-            "private:factory/scalc",
-            "_blank",
-            0,
-            args );
-    CPPUNIT_ASSERT( xComponent.is() );
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
+    xDocSh = loadEmptyDocument();
     CPPUNIT_ASSERT(xDocSh);
 
     // Get the document controller
@@ -131,7 +116,7 @@ void ScCopyPasteTest::testCopyPasteXLS()
     // 6. Paste
     pViewShell->GetViewData().GetView()->PasteFromClip(InsertDeleteFlags::ALL, 
&aClipDoc);
 
-    xComponent->dispose();
+    xDocSh->DoClose();
 }
 
 namespace {
@@ -169,42 +154,9 @@ void lcl_copy( const OUString& rSrcRange, const OUString& 
rDstRange, ScDocument&
 
 void ScCopyPasteTest::testTdf84411()
 {
-    uno::Reference< frame::XDesktop2 > xDesktop = 
frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT( xDesktop.is() );
-
-    // create a frame
-    Reference< frame::XFrame > xTargetFrame = xDesktop->findFrame( "_blank", 0 
);
-    CPPUNIT_ASSERT( xTargetFrame.is() );
-
-    // 1. Create spreadsheet
-    uno::Sequence< beans::PropertyValue > aEmptyArgList;
-    uno::Reference< lang::XComponent > xComponent = 
xDesktop->loadComponentFromURL(
-            "private:factory/scalc",
-            "_blank",
-            0,
-            aEmptyArgList );
-    CPPUNIT_ASSERT( xComponent.is() );
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    ScDocShellRef xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
+    ScDocShellRef xDocSh = loadEmptyDocument();
     CPPUNIT_ASSERT(xDocSh);
 
-    uno::Reference< frame::XModel2 > xModel2 = xDocSh->GetModel();
-    CPPUNIT_ASSERT( xModel2.is() );
-
-    Reference< frame::XController2 > xController = 
xModel2->createDefaultViewController( xTargetFrame );
-    CPPUNIT_ASSERT( xController.is() );
-
-    // introduce model/view/controller to each other
-    xController->attachModel( xModel2 );
-    xModel2->connectController( xController );
-    xTargetFrame->setComponent( xController->getComponentWindow(), xController 
);
-    xController->attachFrame( xTargetFrame );
-    xModel2->setCurrentController( xController );
-
     ScDocument& rDoc = xDocSh->GetDocument();
 
     // Get the document controller
@@ -225,7 +177,8 @@ void ScCopyPasteTest::testTdf84411()
 
 
     // 3. Disable OpenCL
-    ScModelObj* pModel = 
comphelper::getFromUnoTunnel<ScModelObj>(pFoundShell->GetModel());
+    uno::Reference<lang::XComponent> xComponent = xDocSh->GetModel();
+    ScModelObj* pModel = dynamic_cast<ScModelObj*>(xComponent.get());
     CPPUNIT_ASSERT(pModel != nullptr);
     bool bOpenCLState = ScCalcConfig::isOpenCLEnabled();
     pModel->enableOpenCL(false);
@@ -243,36 +196,14 @@ void ScCopyPasteTest::testTdf84411()
 
     // 5. Close the document (Ctrl-W)
     pModel->enableOpenCL(bOpenCLState);
-    xComponent->dispose();
+
+    xDocSh->DoClose();
 }
 
 void ScCopyPasteTest::testTdf124565()
 {
-    // Create new document
-    ScDocShell* xDocSh = new ScDocShell(
-        SfxModelFlags::EMBEDDED_OBJECT |
-        SfxModelFlags::DISABLE_EMBEDDED_SCRIPTS |
-        SfxModelFlags::DISABLE_DOCUMENT_RECOVERY);
-    xDocSh->DoInitNew();
-
-    uno::Reference< frame::XDesktop2 > xDesktop = 
frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT( xDesktop.is() );
-
-    Reference< frame::XFrame > xTargetFrame = xDesktop->findFrame( "_blank", 0 
);
-    CPPUNIT_ASSERT( xTargetFrame.is() );
-
-    uno::Reference< frame::XModel2 > xModel2 = xDocSh->GetModel();
-    CPPUNIT_ASSERT( xModel2.is() );
-
-    Reference< frame::XController2 > xController = 
xModel2->createDefaultViewController( xTargetFrame );
-    CPPUNIT_ASSERT( xController.is() );
-
-    // introduce model/view/controller to each other
-    xController->attachModel( xModel2 );
-    xModel2->connectController( xController );
-    xTargetFrame->setComponent( xController->getComponentWindow(), xController 
);
-    xController->attachFrame( xTargetFrame );
-    xModel2->setCurrentController( xController );
+    ScDocShellRef xDocSh = loadEmptyDocument();
+    CPPUNIT_ASSERT(xDocSh);
 
     ScDocument& rDoc = xDocSh->GetDocument();
     ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
@@ -311,40 +242,9 @@ void ScCopyPasteTest::testTdf124565()
 
 void ScCopyPasteTest::testTdf126421()
 {
-    uno::Reference<frame::XDesktop2> xDesktop
-        = frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop.is());
-
-    // create a frame
-    Reference<frame::XFrame> xTargetFrame = xDesktop->findFrame("_blank", 0);
-    CPPUNIT_ASSERT(xTargetFrame.is());
-
-    // 1. Create spreadsheet
-    uno::Sequence<beans::PropertyValue> aEmptyArgList;
-    uno::Reference<lang::XComponent> xComponent
-        = xDesktop->loadComponentFromURL("private:factory/scalc", "_blank", 0, 
aEmptyArgList);
-    CPPUNIT_ASSERT(xComponent.is());
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    ScDocShellRef xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
+    ScDocShellRef xDocSh = loadEmptyDocument();
     CPPUNIT_ASSERT(xDocSh);
 
-    uno::Reference<frame::XModel2> xModel2 = xDocSh->GetModel();
-    CPPUNIT_ASSERT(xModel2.is());
-
-    Reference<frame::XController2> xController = 
xModel2->createDefaultViewController(xTargetFrame);
-    CPPUNIT_ASSERT(xController.is());
-
-    // introduce model/view/controller to each other
-    xController->attachModel(xModel2);
-    xModel2->connectController(xController);
-    xTargetFrame->setComponent(xController->getComponentWindow(), xController);
-    xController->attachFrame(xTargetFrame);
-    xModel2->setCurrentController(xController);
-
     ScDocument& rDoc = xDocSh->GetDocument();
 
     // Get the document controller
@@ -372,19 +272,10 @@ void ScCopyPasteTest::testTdf126421()
 
 void ScCopyPasteTest::testTdf107394()
 {
-    uno::Reference<frame::XDesktop2> xDesktop
-        = frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop.is());
-
-    uno::Reference<lang::XComponent> xComponent
-        = xDesktop->loadComponentFromURL("private:factory/scalc", "_blank", 0, 
{});
-    CPPUNIT_ASSERT(xComponent.is());
-
-    auto pModelObj = dynamic_cast<ScModelObj*>(xComponent.get());
-    CPPUNIT_ASSERT(pModelObj);
-    CPPUNIT_ASSERT(pModelObj->GetDocument());
+    ScDocShellRef xDocSh = loadEmptyDocument();
+    CPPUNIT_ASSERT(xDocSh);
 
-    ScDocument& rDoc = *pModelObj->GetDocument();
+    ScDocument& rDoc = xDocSh->GetDocument();
 
     sal_uInt16 nFirstRowHeight = rDoc.GetRowHeight(0, 0);
     sal_uInt16 nSecondRowHeight = rDoc.GetRowHeight(1, 0);
@@ -422,7 +313,7 @@ void ScCopyPasteTest::testTdf107394()
     // i.e. the increased height of the second row remained after undo.
     CPPUNIT_ASSERT_EQUAL(nFirstRowHeight, nSecondRowHeight);
 
-    xComponent->dispose();
+    xDocSh->DoClose();
 }
 
 static ScMF lcl_getMergeFlagOfCell(const ScDocument& rDoc, SCCOL nCol, SCROW 
nRow, SCTAB nTab)
diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index 30894e939135..a11d240b9b35 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -645,6 +645,25 @@ ScDocShellRef ScBootstrapFixture::load(const OUString& 
rURL, sal_Int32 nFormat,
     return load(bReadWrite, rURL, aFilterName, OUString(), aFilterType, 
nFormatType, nClipboardId, static_cast<sal_uIntPtr>(nFormatType));
 }
 
+ScDocShellRef ScBootstrapFixture::loadEmptyDocument(const 
uno::Sequence<beans::PropertyValue>& rPropertyValues)
+{
+    uno::Reference< frame::XDesktop2 > xDesktop = 
frame::Desktop::create(::comphelper::getProcessComponentContext());
+    CPPUNIT_ASSERT(xDesktop.is());
+
+    uno::Reference< lang::XComponent > xComponent = 
xDesktop->loadComponentFromURL(
+        "private:factory/scalc",
+        "_blank",
+        0,
+        rPropertyValues);
+    CPPUNIT_ASSERT(xComponent.is());
+
+    // Get the document model
+    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
+    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
+
+    return dynamic_cast<ScDocShell*>(pFoundShell);
+}
+
 ScDocShellRef 
ScBootstrapFixture::loadDocAndSetupModelViewController(std::u16string_view 
rFileName, sal_Int32 nFormat)
 {
     uno::Reference< frame::XDesktop2 > xDesktop = 
frame::Desktop::create(comphelper::getProcessComponentContext());
diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx
index 888fd2162a0b..eb400e68acba 100644
--- a/sc/qa/unit/helper/qahelper.hxx
+++ b/sc/qa/unit/helper/qahelper.hxx
@@ -201,6 +201,7 @@ protected:
 
     ScDocShellRef load(const OUString& rURL, sal_Int32 nFormat, bool 
bReadWrite = false);
 
+    ScDocShellRef loadEmptyDocument(const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& 
rPropertyValues = {});
     ScDocShellRef loadDocAndSetupModelViewController(std::u16string_view 
rFileName, sal_Int32 nFormat);
     ScDocShellRef loadDoc(
         std::u16string_view rFileName, sal_Int32 nFormat, bool bReadWrite = 
false );
diff --git a/sc/qa/unit/jumbosheets-test.cxx b/sc/qa/unit/jumbosheets-test.cxx
index 59a53256908b..c1648ac5ca14 100644
--- a/sc/qa/unit/jumbosheets-test.cxx
+++ b/sc/qa/unit/jumbosheets-test.cxx
@@ -252,21 +252,7 @@ void ScJumboSheetsTest::testTdf134392()
 
 void ScJumboSheetsTest::testTdf147509()
 {
-    // Create an empty document
-    uno::Reference<frame::XDesktop2> xDesktop
-        = frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop.is());
-
-    Sequence<beans::PropertyValue> args{ 
comphelper::makePropertyValue("Hidden", true) };
-
-    m_xCalcComponent = xDesktop->loadComponentFromURL("private:factory/scalc", 
"_blank", 0, args);
-    CPPUNIT_ASSERT(m_xCalcComponent.is());
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(m_xCalcComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    ScDocShellRef xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
+    ScDocShellRef xDocSh = loadEmptyDocument();
     CPPUNIT_ASSERT(xDocSh);
 
     ScDocument& rDoc = xDocSh->GetDocument();
@@ -281,7 +267,7 @@ void ScJumboSheetsTest::testTdf147509()
     CPPUNIT_ASSERT_EQUAL(sal_Int16(0), rViewData.GetCurX());
     CPPUNIT_ASSERT_EQUAL(sal_Int32(0), rViewData.GetCurY());
 
-    uno::Reference<lang::XComponent> xComponent(m_xCalcComponent, 
uno::UNO_QUERY);
+    uno::Reference<lang::XComponent> xComponent = xDocSh->GetModel();
     dispatchCommand(xComponent, ".uno:SelectColumn", {});
     Scheduler::ProcessEventsToIdle();
 
@@ -295,31 +281,20 @@ void ScJumboSheetsTest::testTdf147509()
     // - Actual  : B
     CPPUNIT_ASSERT_EQUAL(OUString(""), rDoc.GetString(ScAddress(1, 0, 0)));
     CPPUNIT_ASSERT_EQUAL(OUString("B"), rDoc.GetString(ScAddress(2, 0, 0)));
+
+    xDocSh->DoClose();
 }
 
 void ScJumboSheetsTest::testTdf133033()
 {
-    // Create an empty document
-    uno::Reference<frame::XDesktop2> xDesktop
-        = frame::Desktop::create(::comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop.is());
-
-    Sequence<beans::PropertyValue> args{ 
comphelper::makePropertyValue("Hidden", true) };
-
-    m_xCalcComponent = xDesktop->loadComponentFromURL("private:factory/scalc", 
"_blank", 0, args);
-    CPPUNIT_ASSERT(m_xCalcComponent.is());
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(m_xCalcComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    ScDocShellRef xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
+    ScDocShellRef xDocSh = loadEmptyDocument();
     CPPUNIT_ASSERT(xDocSh);
 
     ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
     CPPUNIT_ASSERT(pViewShell);
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(m_xCalcComponent.get());
+    uno::Reference<lang::XComponent> xComponent = xDocSh->GetModel();
+    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(xComponent.get());
     CPPUNIT_ASSERT(pModelObj);
 
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN | KEY_MOD1);
@@ -329,6 +304,8 @@ void ScJumboSheetsTest::testTdf133033()
 
     CPPUNIT_ASSERT_EQUAL(sal_Int16(0), rViewData.GetCurX());
     CPPUNIT_ASSERT_EQUAL(sal_Int32(16777215), rViewData.GetCurY());
+
+    xDocSh->DoClose();
 }
 
 void ScJumboSheetsTest::testTdf109061()
diff --git a/sc/qa/unit/subsequent_export_test2.cxx 
b/sc/qa/unit/subsequent_export_test2.cxx
index 88f82eaf8509..8450d82d3ba8 100644
--- a/sc/qa/unit/subsequent_export_test2.cxx
+++ b/sc/qa/unit/subsequent_export_test2.cxx
@@ -1781,25 +1781,10 @@ void ScExportTest2::testTdf128976()
 
 void ScExportTest2::testTdf143979()
 {
-    // Create an empty worksheet
-    css::uno::Reference<css::frame::XDesktop2> xDesktop
-        = 
css::frame::Desktop::create(comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop);
-
-    css::uno::Sequence args{ comphelper::makePropertyValue("Hidden", true) };
-
-    css::uno::Reference<css::lang::XComponent> xComponent
-        = xDesktop->loadComponentFromURL("private:factory/scalc", "_blank", 0, 
args);
-    CPPUNIT_ASSERT(xComponent);
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    ScDocShellRef xShell = dynamic_cast<ScDocShell*>(pFoundShell);
-    CPPUNIT_ASSERT(xShell);
+    ScDocShellRef xDocSh = loadEmptyDocument();
+    CPPUNIT_ASSERT(xDocSh);
 
-    ScDocument& rDoc = xShell->GetDocument();
+    ScDocument& rDoc = xDocSh->GetDocument();
 
     OUString aCode = "YYYY-MM\"\"MMM-DDNN";
     sal_Int32 nCheckPos;
@@ -1818,7 +1803,7 @@ void ScExportTest2::testTdf143979()
 
     CPPUNIT_ASSERT_EQUAL(OUString("2021-08Aug-30Mon"), 
rDoc.GetString(ScAddress(0, 0, 0)));
 
-    ScDocShellRef pDocSh = saveAndReload(*xShell, FORMAT_ODS);
+    ScDocShellRef pDocSh = saveAndReload(*xDocSh, FORMAT_ODS);
     CPPUNIT_ASSERT(pDocSh.is());
 
     ScDocument& rDoc2 = pDocSh->GetDocument();
@@ -1827,43 +1812,32 @@ void ScExportTest2::testTdf143979()
     // - Expected: 2021-08Aug-30Mon
     // - Actual  : 2021-A-30Mon
     CPPUNIT_ASSERT_EQUAL(OUString("2021-08Aug-30Mon"), 
rDoc2.GetString(ScAddress(0, 0, 0)));
+
+    xDocSh->DoClose();
 }
 
 void ScExportTest2::testTdf120502()
 {
     // Create an empty worksheet; resize last column on its first sheet; 
export to XLSX, and check
     // that the last exported column number is correct
-    css::uno::Reference<css::frame::XDesktop2> xDesktop
-        = 
css::frame::Desktop::create(comphelper::getProcessComponentContext());
-    CPPUNIT_ASSERT(xDesktop);
-
-    css::uno::Sequence args{ comphelper::makePropertyValue("Hidden", true) };
-
-    css::uno::Reference<css::lang::XComponent> xComponent
-        = xDesktop->loadComponentFromURL("private:factory/scalc", "_blank", 0, 
args);
-    CPPUNIT_ASSERT(xComponent);
-
-    // Get the document model
-    SfxObjectShell* pFoundShell = 
SfxObjectShell::GetShellFromComponent(xComponent);
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
-    ScDocShellRef xShell = dynamic_cast<ScDocShell*>(pFoundShell);
-    CPPUNIT_ASSERT(xShell);
+    ScDocShellRef xDocSh = loadEmptyDocument();
+    CPPUNIT_ASSERT(xDocSh);
 
-    ScDocument& rDoc = xShell->GetDocument();
+    ScDocument& rDoc = xDocSh->GetDocument();
     const SCCOL nMaxCol = rDoc.MaxCol(); // 0-based
 
     const auto nOldWidth = rDoc.GetColWidth(nMaxCol, 0);
     rDoc.SetColWidth(nMaxCol, 0, nOldWidth + 100);
 
-    std::shared_ptr<utl::TempFile> pXPathFile = 
ScBootstrapFixture::exportTo(*xShell, FORMAT_XLSX);
-    xShell->DoClose();
+    std::shared_ptr<utl::TempFile> pXPathFile = 
ScBootstrapFixture::exportTo(*xDocSh, FORMAT_XLSX);
     xmlDocUniquePtr pSheet1
         = XPathHelper::parseExport(pXPathFile, m_xSFactory, 
"xl/worksheets/sheet1.xml");
     CPPUNIT_ASSERT(pSheet1);
 
     // This was 1025 when nMaxCol+1 was 1024
     assertXPath(pSheet1, "/x:worksheet/x:cols/x:col", "max", 
OUString::number(nMaxCol + 1));
+
+    xDocSh->DoClose();
 }
 
 void ScExportTest2::testTdf131372()

Reply via email to