summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/CppunitTest_sw_apiterminate.mk44
-rw-r--r--sw/Module_sw.mk1
-rw-r--r--sw/qa/api/SwXTextTable.cxx9
-rw-r--r--sw/qa/api/terminate.cxx76
4 files changed, 122 insertions, 8 deletions
diff --git a/sw/CppunitTest_sw_apiterminate.mk b/sw/CppunitTest_sw_apiterminate.mk
new file mode 100644
index 000000000000..c6228cf72d88
--- /dev/null
+++ b/sw/CppunitTest_sw_apiterminate.mk
@@ -0,0 +1,44 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*-
+#
+# 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,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_apiterminate, \
+ sw/qa/api/terminate \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sw_apiterminate, \
+ offapi \
+ udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_apiterminate, \
+ comphelper \
+ cppu \
+ sal \
+ subsequenttest \
+ test \
+ unotest \
+))
+
+$(eval $(call gb_CppunitTest_use_rdb,sw_apiterminate,services))
+
+$(eval $(call gb_CppunitTest_use_vcl,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_use_uiconfigs,sw_apiterminate, \
+ svx \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_apiterminate))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 139dee1be4a1..88c14c2fa51b 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -102,6 +102,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_mailmerge \
CppunitTest_sw_globalfilter \
CppunitTest_sw_accessible_relation_set \
+ CppunitTest_sw_apiterminate \
CppunitTest_sw_apitests \
CppunitTest_sw_unowriter \
CppunitTest_sw_core_text \
diff --git a/sw/qa/api/SwXTextTable.cxx b/sw/qa/api/SwXTextTable.cxx
index ed1bc0670251..37c8600653a4 100644
--- a/sw/qa/api/SwXTextTable.cxx
+++ b/sw/qa/api/SwXTextTable.cxx
@@ -44,7 +44,6 @@ struct SwXTextTable final : public test::BootstrapFixture,
CPPUNIT_TEST_SUITE(SwXTextTable);
CPPUNIT_TEST(testAddEventListener);
CPPUNIT_TEST(testRemoveEventListener);
- CPPUNIT_TEST(testDisposedByDesktopTerminate);
CPPUNIT_TEST_SUITE_END();
private:
@@ -62,13 +61,7 @@ void SwXTextTable::tearDown()
{
if (component_.is())
{
- try
- {
- component_->dispose();
- }
- catch (css::lang::DisposedException&) // thrown by testDisposedByDesktopTerminate
- {
- }
+ component_->dispose();
}
}
diff --git a/sw/qa/api/terminate.cxx b/sw/qa/api/terminate.cxx
new file mode 100644
index 000000000000..5f077d0aa1f8
--- /dev/null
+++ b/sw/qa/api/terminate.cxx
@@ -0,0 +1,76 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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 <sal/config.h>
+
+#include <cppunit/TestAssert.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/plugin/TestPlugIn.h>
+
+#include <com/sun/star/frame/Desktop.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/XTextCursor.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/text/XTextTable.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <comphelper/processfactory.hxx>
+#include <test/bootstrapfixture.hxx>
+#include <test/lang/xcomponent.hxx>
+#include <unotest/macros_test.hxx>
+
+class TerminateTest final : public test::BootstrapFixture,
+ public unotest::MacrosTest,
+ public apitest::XComponent
+{
+public:
+ void setUp() override;
+
+ css::uno::Reference<css::uno::XInterface> init() override;
+
+ void triggerDesktopTerminate() override;
+
+ CPPUNIT_TEST_SUITE(TerminateTest);
+ CPPUNIT_TEST(testDisposedByDesktopTerminate);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+void TerminateTest::setUp()
+{
+ test::BootstrapFixture::setUp();
+ mxDesktop.set(
+ css::frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory())));
+}
+
+css::uno::Reference<css::uno::XInterface> TerminateTest::init()
+{
+ auto const component
+ = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument");
+ CPPUNIT_ASSERT(component.is());
+ css::uno::Reference<css::text::XTextDocument> xTextDocument(component,
+ css::uno::UNO_QUERY_THROW);
+ css::uno::Reference<css::lang::XMultiServiceFactory> xMSF(component, css::uno::UNO_QUERY_THROW);
+ css::uno::Reference<css::text::XText> xText = xTextDocument->getText();
+ css::uno::Reference<css::text::XTextCursor> xCursor = xText->createTextCursor();
+ css::uno::Reference<css::text::XTextTable> xTable(
+ xMSF->createInstance("com.sun.star.text.TextTable"), css::uno::UNO_QUERY_THROW);
+ xTable->initialize(4, 3);
+ xText->insertTextContent(xCursor, xTable, false);
+ CPPUNIT_ASSERT(xCursor.is());
+ return css::uno::Reference<css::uno::XInterface>(xTable, css::uno::UNO_QUERY_THROW);
+}
+
+void TerminateTest::triggerDesktopTerminate() { mxDesktop->terminate(); }
+
+CPPUNIT_TEST_SUITE_REGISTRATION(TerminateTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */