diff options
Diffstat (limited to 'sw/qa/api')
31 files changed, 3026 insertions, 0 deletions
diff --git a/sw/qa/api/SwXAutoTextContainer.cxx b/sw/qa/api/SwXAutoTextContainer.cxx new file mode 100644 index 0000000000..1f1fc3df1d --- /dev/null +++ b/sw/qa/api/SwXAutoTextContainer.cxx @@ -0,0 +1,77 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xnameaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/text/xautotextcontainer.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/text/XAutoTextContainer.hpp> +#include <com/sun/star/text/AutoTextContainer.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXAutoTextContainer. + */ +class SwXAutoTextContainer final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXAutoTextContainer() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XAutoTextGroup>::get()) + , XIndexAccess(3) + , XNameAccess("crdbus50") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + } + + Reference<XInterface> init() override + { + Reference<text::XAutoTextContainer> xAutoTextContainer + = text::AutoTextContainer::create(comphelper::getProcessComponentContext()); + + Reference<container::XNameAccess> xNA(xAutoTextContainer, UNO_QUERY_THROW); + Sequence<rtl::OUString> aNames = xNA->getElementNames(); + std::cout << aNames[0] << std::endl; + + return Reference<XInterface>(xAutoTextContainer, UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXAutoTextContainer); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXAutoTextContainer); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXBodyText.cxx b/sw/qa/api/SwXBodyText.cxx new file mode 100644 index 0000000000..69fb22a959 --- /dev/null +++ b/sw/qa/api/SwXBodyText.cxx @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/text/xsimpletext.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/text/xtextrange.hxx> +#include <test/container/xenumerationaccess.hxx> +#include <test/text/xtextrangecompare.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXBodyText. + */ +class SwXBodyText final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::XElementAccess, + public apitest::XTextRange, + public apitest::XSimpleText, + public apitest::XEnumerationAccess, + public apitest::XTextRangeCompare +{ +public: + SwXBodyText(); + virtual void setUp() override; + void tearDown() override; + + Reference<XInterface> init() override; + + CPPUNIT_TEST_SUITE(SwXBodyText); + CPPUNIT_TEST(testCreateTextCursor); + CPPUNIT_TEST(testCreateTextCursorByRange); + CPPUNIT_TEST(testInsertString); + CPPUNIT_TEST(testInsertControlCharacter); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testGetText); + CPPUNIT_TEST(testGetStart); + CPPUNIT_TEST(testGetEnd); + CPPUNIT_TEST(testGetSetString); + CPPUNIT_TEST(testCreateEnumeration); + CPPUNIT_TEST(testCompareRegionStarts); + CPPUNIT_TEST(testCompareRegionEnds); + CPPUNIT_TEST_SUITE_END(); + +private: + uno::Reference<lang::XComponent> component_; +}; + +SwXBodyText::SwXBodyText() + : XElementAccess(cppu::UnoType<text::XTextRange>::get()) +{ +} + +void SwXBodyText::setUp() +{ + test::BootstrapFixture::setUp(); + mxDesktop.set( + frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory()))); +} + +void SwXBodyText::tearDown() +{ + if (component_.is()) + component_->dispose(); + + test::BootstrapFixture::tearDown(); +} + +Reference<XInterface> SwXBodyText::init() +{ + component_ = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + Reference<text::XTextDocument> xTextDocument(component_, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(component_, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + + return Reference<XInterface>(xText, UNO_QUERY_THROW); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXBodyText); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXBookmark.cxx b/sw/qa/api/SwXBookmark.cxx new file mode 100644 index 0000000000..ca6c02d81f --- /dev/null +++ b/sw/qa/api/SwXBookmark.cxx @@ -0,0 +1,92 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/lang/xcomponent.hxx> +#include <test/container/xnamed.hxx> +#include <test/text/xtextcontent.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXBookmark. + */ +class SwXBookmark final : public UnoApiTest, + public apitest::XComponent, + public apitest::XNamed, + public apitest::XTextContent +{ +public: + SwXBookmark() + : UnoApiTest("") + , XNamed("Bookmark") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + Reference<text::XTextContent> xBookmark(xMSF->createInstance("com.sun.star.text.Bookmark"), + UNO_QUERY_THROW); + + xText->insertTextContent(xCursor, xBookmark, false); + mxTextRange = Reference<text::XTextRange>(xCursor, UNO_QUERY_THROW); + mxTextContent = Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.Bookmark"), UNO_QUERY_THROW); + + return Reference<XInterface>(xBookmark, UNO_QUERY_THROW); + } + + Reference<text::XTextRange> getTextRange() override { return mxTextRange; }; + Reference<text::XTextContent> getTextContent() override { return mxTextContent; }; + bool isAttachSupported() override { return true; } + void triggerDesktopTerminate() override { mxDesktop->terminate(); } + + CPPUNIT_TEST_SUITE(SwXBookmark); + CPPUNIT_TEST(testDispose); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST(testGetName); + CPPUNIT_TEST(testSetName); + CPPUNIT_TEST(testAttach); + CPPUNIT_TEST(testGetAnchor); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<text::XTextRange> mxTextRange; + Reference<text::XTextContent> mxTextContent; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXBookmark); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXBookmarks.cxx b/sw/qa/api/SwXBookmarks.cxx new file mode 100644 index 0000000000..34babbbd3c --- /dev/null +++ b/sw/qa/api/SwXBookmarks.cxx @@ -0,0 +1,85 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xnameaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xelementaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XBookmarksSupplier.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXBookmarks. + */ +class SwXBookmarks final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXBookmarks() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XTextContent>::get()) + , XIndexAccess(1) + , XNameAccess("Bookmark") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + Reference<text::XTextContent> xBookmark(xMSF->createInstance("com.sun.star.text.Bookmark"), + UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xBookmark, false); + + Reference<text::XBookmarksSupplier> xSupplier(xTextDocument, UNO_QUERY_THROW); + Reference<container::XNameAccess> xNameAccess = xSupplier->getBookmarks(); + + return Reference<XInterface>(xNameAccess, UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXBookmarks); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXBookmarks); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXChapterNumbering.cxx b/sw/qa/api/SwXChapterNumbering.cxx new file mode 100644 index 0000000000..5a676da9c0 --- /dev/null +++ b/sw/qa/api/SwXChapterNumbering.cxx @@ -0,0 +1,88 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/beans/xpropertyset.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/text/numberingrules.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <com/sun/star/text/XChapterNumberingSupplier.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXChapterNumbering. + */ +class SwXChapterNumbering final : public UnoApiTest, + public apitest::XPropertySet, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::NumberingRules +{ +public: + SwXChapterNumbering() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<Sequence<beans::PropertyValue>>::get()) + , XIndexAccess(10) + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + + Reference<text::XChapterNumberingSupplier> xCNSupplier(xTextDocument, UNO_QUERY_THROW); + Reference<container::XIndexAccess> xCNRules(xCNSupplier->getChapterNumberingRules(), + UNO_QUERY_THROW); + + try + { + Reference<container::XIndexReplace> xIndexReplace(xCNRules->getByIndex(1), + UNO_QUERY_THROW); + } + catch (Exception&) + { + } + return Reference<XInterface>(xCNRules, UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXChapterNumbering); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testGetPropertySetInfo); + CPPUNIT_TEST(testSetPropertyValue); + CPPUNIT_TEST(testGetPropertyValue); + CPPUNIT_TEST(testPropertyChangeListener); + CPPUNIT_TEST(testVetoableChangeListener); + CPPUNIT_TEST(testNumberingRulesProperties); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXChapterNumbering); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXDocumentIndex.cxx b/sw/qa/api/SwXDocumentIndex.cxx new file mode 100644 index 0000000000..929bf6e942 --- /dev/null +++ b/sw/qa/api/SwXDocumentIndex.cxx @@ -0,0 +1,111 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/lang/xcomponent.hxx> +#include <test/lang/xserviceinfo.hxx> +#include <test/text/baseindex.hxx> +#include <test/text/textdocumentindex.hxx> +#include <test/text/xdocumentindex.hxx> +#include <test/text/xtextcontent.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextContent.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextCursor.hpp> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/text/XDocumentIndex.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Test for Java API test of file com.sun.star.comp.office.SwXDocumentIndex.csv + */ +class SwXDocumentIndex final : public UnoApiTest, + public apitest::XServiceInfo, + public apitest::XDocumentIndex, + public apitest::BaseIndex, + public apitest::TextDocumentIndex, + public apitest::XTextContent, + public apitest::XComponent +{ + Reference<text::XTextDocument> mxTextDocument; + Reference<text::XTextRange> mxTextRange; + Reference<text::XTextContent> mxTextContent; + +public: + // SwXDocumentIndex() + // : apitest::XServiceInfo("SwXDocumentIndex", "com.sun.star.text.BaseIndex"){}; + SwXDocumentIndex() + : UnoApiTest("") + , apitest::XServiceInfo("SwXDocumentIndex", "com.sun.star.text.BaseIndex") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + mxTextDocument = Reference<text::XTextDocument>(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxTextDocument, UNO_QUERY_THROW); + Reference<text::XDocumentIndex> xDocumentIndex( + xMSF->createInstance("com.sun.star.text.DocumentIndex"), UNO_QUERY_THROW); + + auto xText = getTextDocument()->getText(); + auto xTextCursor = xText->createTextCursor(); + CPPUNIT_ASSERT(xTextCursor.is()); + xText->insertTextContent(xTextCursor, xDocumentIndex, false); + xTextCursor->gotoEnd(false); + + mxTextRange = Reference<text::XTextRange>(xTextCursor, UNO_QUERY_THROW); + mxTextContent = Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.DocumentIndex"), UNO_QUERY_THROW); + + return xDocumentIndex; + } + + Reference<text::XTextRange> getTextRange() override { return mxTextRange; }; + Reference<text::XTextContent> getTextContent() override { return mxTextContent; }; + bool isAttachSupported() override { return true; } + Reference<text::XTextDocument> getTextDocument() override { return mxTextDocument; } + void triggerDesktopTerminate() override {} + + CPPUNIT_TEST_SUITE(SwXDocumentIndex); + CPPUNIT_TEST(testGetImplementationName); + CPPUNIT_TEST(testGetSupportedServiceNames); + CPPUNIT_TEST(testSupportsService); + CPPUNIT_TEST(testUpdate); + CPPUNIT_TEST(testBaseIndexProperties); + CPPUNIT_TEST(testDocumentIndexProperties); + CPPUNIT_TEST(testAttach); + CPPUNIT_TEST(testGetAnchor); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXDocumentIndex); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXDocumentIndexMark.cxx b/sw/qa/api/SwXDocumentIndexMark.cxx new file mode 100644 index 0000000000..395769c5cc --- /dev/null +++ b/sw/qa/api/SwXDocumentIndexMark.cxx @@ -0,0 +1,113 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/lang/xcomponent.hxx> +#include <test/text/xtextcontent.hxx> +#include <test/text/baseindexmark.hxx> +#include <test/text/documentindexmark.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XDocumentIndexMark.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXDocumentIndexMark. + */ +class SwXDocumentIndexMark final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::XComponent, + public apitest::XTextContent, + public apitest::BaseIndexMark, + public apitest::DocumentIndexMark +{ +public: + virtual void setUp() override; + void tearDown() override; + + Reference<XInterface> init() override; + uno::Reference<text::XTextRange> getTextRange() override; + uno::Reference<text::XTextContent> getTextContent() override; + bool isAttachSupported() override { return true; } + uno::Reference<text::XTextDocument> getTextDocument() { return mxTextDocument; } + void triggerDesktopTerminate() override { mxDesktop->terminate(); } + + CPPUNIT_TEST_SUITE(SwXDocumentIndexMark); + CPPUNIT_TEST(testDispose); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST(testAttach); + CPPUNIT_TEST(testGetAnchor); + CPPUNIT_TEST(testBaseIndexMarkProperties); + CPPUNIT_TEST(testDocumentIndexMarkProperties); + CPPUNIT_TEST_SUITE_END(); + +private: + uno::Reference<text::XTextDocument> mxTextDocument; + uno::Reference<text::XTextRange> mxTextRange; + uno::Reference<text::XTextContent> mxTextContent; +}; + +void SwXDocumentIndexMark::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxTextDocument = uno::Reference<text::XTextDocument>( + loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"), + uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT(mxTextDocument.is()); +} + +void SwXDocumentIndexMark::tearDown() +{ + if (mxTextDocument.is()) + mxTextDocument->dispose(); + + test::BootstrapFixture::tearDown(); +} + +Reference<XInterface> SwXDocumentIndexMark::init() +{ + Reference<lang::XMultiServiceFactory> xMSF(mxTextDocument, UNO_QUERY_THROW); + + Reference<text::XText> xText = getTextDocument()->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + Reference<text::XDocumentIndexMark> xDIM( + xMSF->createInstance("com.sun.star.text.DocumentIndexMark"), UNO_QUERY_THROW); + + mxTextRange = uno::Reference<text::XTextRange>(xCursor, uno::UNO_QUERY_THROW); + mxTextContent = uno::Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.DocumentIndex"), uno::UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xDIM, false); + + return Reference<XInterface>(xDIM, UNO_QUERY_THROW); +} + +uno::Reference<text::XTextRange> SwXDocumentIndexMark::getTextRange() { return mxTextRange; } + +uno::Reference<text::XTextContent> SwXDocumentIndexMark::getTextContent() { return mxTextContent; } + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXDocumentIndexMark); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXDocumentIndexes.cxx b/sw/qa/api/SwXDocumentIndexes.cxx new file mode 100644 index 0000000000..91be0e5c84 --- /dev/null +++ b/sw/qa/api/SwXDocumentIndexes.cxx @@ -0,0 +1,84 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xnameaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xelementaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XDocumentIndex.hpp> +#include <com/sun/star/text/XDocumentIndexesSupplier.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXDocumentIndexes. + */ +class SwXDocumentIndexes final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXDocumentIndexes() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XDocumentIndex>::get()) + , XIndexAccess(1) + , XNameAccess("Table of Contents1") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + Reference<text::XTextContent> xTextContent( + xMSF->createInstance("com.sun.star.text.ContentIndex"), UNO_QUERY_THROW); + + xText->insertTextContent(xCursor, xTextContent, false); + Reference<text::XDocumentIndexesSupplier> xDocIndSupp(xTextDocument, UNO_QUERY_THROW); + + return Reference<XInterface>(xDocIndSupp->getDocumentIndexes(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXDocumentIndexes); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXDocumentIndexes); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXDocumentSettings.cxx b/sw/qa/api/SwXDocumentSettings.cxx new file mode 100644 index 0000000000..da2b366dae --- /dev/null +++ b/sw/qa/api/SwXDocumentSettings.cxx @@ -0,0 +1,90 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/lang/xserviceinfo.hxx> +#include <test/text/textdocumentsettings.hxx> +#include <test/text/textprintersettings.hxx> +#include <test/text/textsettings.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/uno/XInterface.hpp> + +using namespace css; + +namespace +{ +/** + * Test for Java API test of file com.sun.star.comp.Writer.DocumentSettings.csv + */ +class SwXDocumentSettings final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::TextDocumentSettings, + public apitest::TextSettings, + public apitest::TextPrinterSettings, + public apitest::XServiceInfo +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + virtual void setUp() override; + virtual void tearDown() override; + + SwXDocumentSettings() + : apitest::XServiceInfo("SwXDocumentSettings", "com.sun.star.text.DocumentSettings"){}; + uno::Reference<uno::XInterface> init() override; + + CPPUNIT_TEST_SUITE(SwXDocumentSettings); + CPPUNIT_TEST(testGetImplementationName); + CPPUNIT_TEST(testGetSupportedServiceNames); + CPPUNIT_TEST(testSupportsService); + CPPUNIT_TEST(testDocumentSettingsProperties); + CPPUNIT_TEST(testSettingsProperties); + CPPUNIT_TEST(testPrinterSettingsProperties); + CPPUNIT_TEST_SUITE_END(); +}; + +void SwXDocumentSettings::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void SwXDocumentSettings::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +uno::Reference<uno::XInterface> SwXDocumentSettings::init() +{ + mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY_THROW); + uno::Reference<lang::XMultiServiceFactory> xFactory(xTextDocument, uno::UNO_QUERY_THROW); + + uno::Reference<uno::XInterface> xDocumentSettings( + xFactory->createInstance("com.sun.star.text.DocumentSettings"), uno::UNO_SET_THROW); + + return xDocumentSettings; +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXDocumentSettings); + +} // end anonymous namespace + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXFieldEnumeration.cxx b/sw/qa/api/SwXFieldEnumeration.cxx new file mode 100644 index 0000000000..53c437ed18 --- /dev/null +++ b/sw/qa/api/SwXFieldEnumeration.cxx @@ -0,0 +1,109 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xenumeration.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/text/XDependentTextField.hpp> +#include <com/sun/star/container/XEnumeration.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextFieldsSupplier.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXFieldEnumeration. + */ +class SwXFieldEnumeration final : public UnoApiTest, public apitest::XEnumeration +{ +public: + SwXFieldEnumeration() + : UnoApiTest("") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<beans::XPropertySet> xFieldMaster; + Reference<text::XDependentTextField> xTF; + + try + { + xFieldMaster = Reference<beans::XPropertySet>( + xMSF->createInstance("com.sun.star.text.FieldMaster.Database"), UNO_QUERY_THROW); + xTF = Reference<text::XDependentTextField>( + xMSF->createInstance("com.sun.star.text.TextField.Database"), UNO_QUERY_THROW); + } + catch (Exception&) + { + } + + try + { + xFieldMaster->setPropertyValue("DataBaseName", Any(OUString("Bibliography"))); + xFieldMaster->setPropertyValue("DataTableName", Any(OUString("biblio"))); + xFieldMaster->setPropertyValue("DataColumnName", Any(OUString("Address"))); + } + catch (lang::WrappedTargetException&) + { + } + catch (lang::IllegalArgumentException&) + { + } + catch (beans::UnknownPropertyException&) + { + } + catch (beans::PropertyVetoException&) + { + } + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + Reference<text::XTextContent> xTextContent(xTF, UNO_QUERY_THROW); + + xTF->attachTextFieldMaster(xFieldMaster); + xText->insertTextContent(xCursor, xTextContent, false); + + Reference<text::XTextFieldsSupplier> xTFS(xTextDocument, UNO_QUERY_THROW); + Reference<container::XEnumerationAccess> xEnumerationAccess = xTFS->getTextFields(); + + return Reference<XInterface>(xEnumerationAccess->createEnumeration(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXFieldEnumeration); + CPPUNIT_TEST(testHasMoreElements); + CPPUNIT_TEST(testNextElement); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXFieldEnumeration); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXFootnote.cxx b/sw/qa/api/SwXFootnote.cxx new file mode 100644 index 0000000000..5c6f7418d9 --- /dev/null +++ b/sw/qa/api/SwXFootnote.cxx @@ -0,0 +1,129 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/lang/xcomponent.hxx> +#include <test/text/footnote.hxx> +#include <test/text/xsimpletext.hxx> +#include <test/text/xtextrange.hxx> +#include <test/text/xtextcontent.hxx> +#include <test/text/xtext.hxx> +#include <test/text/xfootnote.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XFootnote.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXFootnote. + */ +class SwXFootnote final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::XComponent, + public apitest::XSimpleText, + public apitest::XTextRange, + public apitest::XTextContent, + public apitest::XText, + public apitest::XFootnote, + public apitest::Footnote +{ +public: + virtual void setUp() override; + void tearDown() override; + + Reference<XInterface> init() override; + Reference<text::XTextRange> getTextRange() override; + Reference<text::XTextContent> getTextContent() override; + bool isAttachSupported() override { return true; } + Reference<text::XTextDocument> getTextDocument() { return mxTextDocument; } + void triggerDesktopTerminate() override {} + + CPPUNIT_TEST_SUITE(SwXFootnote); + CPPUNIT_TEST(testDispose); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST(testAttach); + CPPUNIT_TEST(testGetAnchor); + CPPUNIT_TEST(testCreateTextCursor); + CPPUNIT_TEST(testCreateTextCursorByRange); + CPPUNIT_TEST(testInsertString); + CPPUNIT_TEST(testInsertControlCharacter); + CPPUNIT_TEST(testGetEnd); + CPPUNIT_TEST(testGetSetString); + CPPUNIT_TEST(testGetStart); + CPPUNIT_TEST(testGetText); + CPPUNIT_TEST(testFootnoteProperties); + // CPPUNIT_TEST(testInsertRemoveTextContent); + CPPUNIT_TEST(testGetSetLabel); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<text::XTextDocument> mxTextDocument; + Reference<text::XTextRange> mxTextRange; + Reference<text::XTextContent> mxTextContent; +}; + +void SwXFootnote::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxTextDocument = Reference<text::XTextDocument>( + loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"), + uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT(mxTextDocument.is()); +} + +void SwXFootnote::tearDown() +{ + if (mxTextDocument.is()) + mxTextDocument->dispose(); + + test::BootstrapFixture::tearDown(); +} + +Reference<XInterface> SwXFootnote::init() +{ + Reference<lang::XMultiServiceFactory> xMSF(mxTextDocument, UNO_QUERY_THROW); + + Reference<text::XFootnote> xFootnote(xMSF->createInstance("com.sun.star.text.Footnote"), + UNO_QUERY_THROW); + + Reference<text::XText> xText = getTextDocument()->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + xText->insertTextContent(xCursor, xFootnote, false); + + mxTextRange = Reference<text::XTextRange>(xCursor, UNO_QUERY_THROW); + mxTextContent = Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.Footnote"), UNO_QUERY_THROW); + + return Reference<XInterface>(xFootnote, UNO_QUERY_THROW); +} + +Reference<text::XTextRange> SwXFootnote::getTextRange() { return mxTextRange; } + +Reference<text::XTextContent> SwXFootnote::getTextContent() { return mxTextContent; } + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXFootnote); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXFootnoteProperties.cxx b/sw/qa/api/SwXFootnoteProperties.cxx new file mode 100644 index 0000000000..e716181a55 --- /dev/null +++ b/sw/qa/api/SwXFootnoteProperties.cxx @@ -0,0 +1,96 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XFootnote.hpp> +#include <com/sun/star/text/XFootnotesSupplier.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXFootnoteProperties. + */ +class SwXFootnoteProperties final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::XElementAccess, + public apitest::XIndexAccess +{ +public: + SwXFootnoteProperties(); + virtual void setUp() override; + void tearDown() override; + + Reference<XInterface> init() override; + + CPPUNIT_TEST_SUITE(SwXFootnoteProperties); + CPPUNIT_TEST_SUITE_END(); + +private: + uno::Reference<lang::XComponent> component_; +}; + +SwXFootnoteProperties::SwXFootnoteProperties() + : XElementAccess(cppu::UnoType<text::XFootnote>::get()) + , XIndexAccess(3) +{ +} + +void SwXFootnoteProperties::setUp() +{ + test::BootstrapFixture::setUp(); + mxDesktop.set( + frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory()))); +} + +void SwXFootnoteProperties::tearDown() +{ + if (component_.is()) + component_->dispose(); + + test::BootstrapFixture::tearDown(); +} + +Reference<XInterface> SwXFootnoteProperties::init() +{ + component_ = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + Reference<text::XTextDocument> xTextDocument(component_, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(component_, UNO_QUERY_THROW); + + Reference<text::XFootnote> xFootnote(xMSF->createInstance("com.sun.star.text.Footnote"), + UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + xText->insertTextContent(xCursor, xFootnote, false); + + Reference<text::XFootnotesSupplier> xFootnotesSupplier(xTextDocument, UNO_QUERY_THROW); + + return Reference<XInterface>(xFootnotesSupplier->getFootnoteSettings(), UNO_QUERY_THROW); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXFootnoteProperties); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXFootnoteText.cxx b/sw/qa/api/SwXFootnoteText.cxx new file mode 100644 index 0000000000..2369729335 --- /dev/null +++ b/sw/qa/api/SwXFootnoteText.cxx @@ -0,0 +1,122 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/text/xsimpletext.hxx> +#include <test/text/xtextrange.hxx> +#include <test/text/xtext.hxx> +#include <test/container/xenumerationaccess.hxx> +#include <test/text/xtextrangecompare.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XFootnote.hpp> +#include <com/sun/star/text/XSimpleText.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXFootnoteText. + */ +class SwXFootnoteText final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::XElementAccess, + public apitest::XSimpleText, + public apitest::XTextRange, + public apitest::XText, + public apitest::XEnumerationAccess, + public apitest::XTextRangeCompare +{ +public: + SwXFootnoteText(); + virtual void setUp() override; + void tearDown() override; + + Reference<XInterface> init() override; + Reference<text::XTextContent> getTextContent() override { return mxTextContent; }; + + CPPUNIT_TEST_SUITE(SwXFootnoteText); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testCreateTextCursor); + CPPUNIT_TEST(testCreateTextCursorByRange); + CPPUNIT_TEST(testInsertString); + CPPUNIT_TEST(testInsertControlCharacter); + CPPUNIT_TEST(testGetEnd); + CPPUNIT_TEST(testGetSetString); + CPPUNIT_TEST(testGetStart); + CPPUNIT_TEST(testGetText); + // CPPUNIT_TEST(testInsertRemoveTextContent); + CPPUNIT_TEST(testCreateEnumeration); + CPPUNIT_TEST(testCompareRegionStarts); + CPPUNIT_TEST(testCompareRegionEnds); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<lang::XComponent> component_; + Reference<text::XTextContent> mxTextContent; +}; + +SwXFootnoteText::SwXFootnoteText() + : XElementAccess(cppu::UnoType<text::XTextRange>::get()) +{ +} + +void SwXFootnoteText::setUp() +{ + test::BootstrapFixture::setUp(); + mxDesktop.set( + frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory()))); +} + +void SwXFootnoteText::tearDown() +{ + if (component_.is()) + component_->dispose(); + + test::BootstrapFixture::tearDown(); +} + +Reference<XInterface> SwXFootnoteText::init() +{ + component_ = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + Reference<text::XTextDocument> xTextDocument(component_, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(component_, UNO_QUERY_THROW); + + Reference<text::XFootnote> xFootnote(xMSF->createInstance("com.sun.star.text.Footnote"), + UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + xText->insertTextContent(xCursor, xFootnote, false); + + Reference<text::XSimpleText> xFootText(xFootnote, UNO_QUERY_THROW); + xFootText->setString("SwXFootnoteText"); + mxTextContent = Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.Footnote"), UNO_QUERY_THROW); + + return Reference<XInterface>(xFootText->getText(), UNO_QUERY_THROW); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXFootnoteText); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXFootnotes.cxx b/sw/qa/api/SwXFootnotes.cxx new file mode 100644 index 0000000000..c04e2be384 --- /dev/null +++ b/sw/qa/api/SwXFootnotes.cxx @@ -0,0 +1,82 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/container/xindexaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XFootnote.hpp> +#include <com/sun/star/text/XFootnotesSupplier.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXFootnotes. + */ +class SwXFootnotes final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess +{ +public: + SwXFootnotes() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XFootnote>::get()) + , XIndexAccess(1) + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XFootnote> xFootnote(xMSF->createInstance("com.sun.star.text.Footnote"), + UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + xText->insertTextContent(xCursor, xFootnote, false); + + Reference<text::XFootnotesSupplier> xSupplier(xTextDocument, UNO_QUERY_THROW); + + return Reference<XInterface>(xSupplier->getFootnotes(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXFootnotes); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXFootnotes); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXFrames.cxx b/sw/qa/api/SwXFrames.cxx new file mode 100644 index 0000000000..18bc2e2047 --- /dev/null +++ b/sw/qa/api/SwXFrames.cxx @@ -0,0 +1,90 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xnameaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextFrame.hpp> +#include <com/sun/star/text/XTextFramesSupplier.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXFramesText. + */ +class SwXFramesText final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXFramesText() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XTextFrame>::get()) + , XIndexAccess(1) + , XNameAccess("Frame1") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XTextFrame> xTextFrame(xMSF->createInstance("com.sun.star.text.TextFrame"), + UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + xText->insertTextContent(xCursor, xTextFrame, false); + + Reference<text::XTextFramesSupplier> xSupplier(xTextDocument, UNO_QUERY_THROW); + + // Reference<container::XNameAccess> xNA = xSupplier->getTextFrames(); + // Sequence<OUString> aNames = xNA->getElementNames(); + // std::cout << aNames[0] << std::endl; + + return Reference<XInterface>(xSupplier->getTextFrames(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXFramesText); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXFramesText); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXHeadFootText.cxx b/sw/qa/api/SwXHeadFootText.cxx new file mode 100644 index 0000000000..b3769ccc58 --- /dev/null +++ b/sw/qa/api/SwXHeadFootText.cxx @@ -0,0 +1,124 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/text/xsimpletext.hxx> +#include <test/text/xtextrange.hxx> +#include <test/text/xtext.hxx> +#include <test/container/xenumerationaccess.hxx> +#include <test/text/xtextrangecompare.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/style/XStyle.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXHeadFootText. + */ +class SwXHeadFootText final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::XElementAccess, + public apitest::XSimpleText, + public apitest::XTextRange, + public apitest::XText, + public apitest::XEnumerationAccess, + public apitest::XTextRangeCompare +{ +public: + SwXHeadFootText(); + virtual void setUp() override; + void tearDown() override; + + Reference<XInterface> init() override; + Reference<text::XTextContent> getTextContent() override { return mxTextContent; }; + + CPPUNIT_TEST_SUITE(SwXHeadFootText); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testCreateTextCursor); + CPPUNIT_TEST(testCreateTextCursorByRange); + CPPUNIT_TEST(testInsertString); + CPPUNIT_TEST(testInsertControlCharacter); + CPPUNIT_TEST(testGetEnd); + CPPUNIT_TEST(testGetSetString); + CPPUNIT_TEST(testGetStart); + CPPUNIT_TEST(testGetText); + // CPPUNIT_TEST(testInsertRemoveTextContent); + CPPUNIT_TEST(testCreateEnumeration); + CPPUNIT_TEST(testCompareRegionStarts); + CPPUNIT_TEST(testCompareRegionEnds); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<lang::XComponent> component_; + Reference<text::XTextContent> mxTextContent; +}; + +SwXHeadFootText::SwXHeadFootText() + : XElementAccess(cppu::UnoType<text::XTextRange>::get()) +{ +} + +void SwXHeadFootText::setUp() +{ + test::BootstrapFixture::setUp(); + mxDesktop.set( + frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory()))); +} + +void SwXHeadFootText::tearDown() +{ + if (component_.is()) + component_->dispose(); + + test::BootstrapFixture::tearDown(); +} + +Reference<XInterface> SwXHeadFootText::init() +{ + component_ = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + Reference<text::XTextDocument> xTextDocument(component_, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(component_, UNO_QUERY_THROW); + + Reference<style::XStyleFamiliesSupplier> xStyleFam(xTextDocument, UNO_QUERY_THROW); + Reference<container::XNameAccess> xStyleFamNames = xStyleFam->getStyleFamilies(); + + Reference<container::XNameAccess> xPageStyles(xStyleFamNames->getByName("PageStyles"), + UNO_QUERY_THROW); + Reference<style::XStyle> xStyle(xPageStyles->getByName("Standard"), UNO_QUERY_THROW); + + Reference<beans::XPropertySet> xPropSet(xStyle, UNO_QUERY_THROW); + + xPropSet->setPropertyValue("HeaderIsOn", uno::Any(true)); + xPropSet->setPropertyValue("FooterIsOn", uno::Any(true)); + Reference<text::XText> xText(xPropSet->getPropertyValue("HeaderText"), UNO_QUERY_THROW); + + return Reference<XInterface>(xText, UNO_QUERY_THROW); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXHeadFootText); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXNumberingRules.cxx b/sw/qa/api/SwXNumberingRules.cxx new file mode 100644 index 0000000000..41fb3395aa --- /dev/null +++ b/sw/qa/api/SwXNumberingRules.cxx @@ -0,0 +1,137 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/beans/xpropertyset.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/text/numberingrules.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <com/sun/star/text/ControlCharacter.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/lang/IndexOutOfBoundsException.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXNumberingRules. + */ +class SwXNumberingRules final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XPropertySet, + public apitest::NumberingRules +{ +public: + SwXNumberingRules() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<Sequence<beans::PropertyValue>>::get()) + , XIndexAccess(10) + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + + Reference<container::XIndexAccess> xIndexAccess; + Reference<container::XIndexAccess> xNumRules; + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + try + { + xText->insertString(xCursor, "The quick brown fox jumps over the lazy dog", false); + xText->insertControlCharacter(xCursor, text::ControlCharacter::PARAGRAPH_BREAK, false); + } + catch (lang::IllegalArgumentException&) + { + } + + Reference<style::XStyleFamiliesSupplier> xStyleFam(xTextDocument, UNO_QUERY_THROW); + + try + { + Reference<container::XNameAccess> xStyleFamNames = xStyleFam->getStyleFamilies(); + Reference<container::XNameContainer> xNumStyles( + xStyleFamNames->getByName("NumberingStyles"), UNO_QUERY_THROW); + xIndexAccess = Reference<container::XIndexAccess>(xNumStyles, UNO_QUERY_THROW); + } + catch (lang::WrappedTargetException&) + { + } + catch (container::NoSuchElementException&) + { + } + catch (lang::IllegalArgumentException&) + { + } + + try + { + Reference<beans::XPropertySet> xPropSet(xIndexAccess->getByIndex(0), UNO_QUERY_THROW); + xNumRules = Reference<container::XIndexAccess>( + xPropSet->getPropertyValue("NumberingRules"), UNO_QUERY_THROW); + } + catch (lang::WrappedTargetException&) + { + } + catch (lang::IndexOutOfBoundsException&) + { + } + catch (beans::UnknownPropertyException&) + { + } + catch (lang::IllegalArgumentException&) + { + } + + return Reference<XInterface>(xNumRules, UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXNumberingRules); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetPropertySetInfo); + CPPUNIT_TEST(testSetPropertyValue); + CPPUNIT_TEST(testGetPropertyValue); + CPPUNIT_TEST(testPropertyChangeListener); + CPPUNIT_TEST(testVetoableChangeListener); + CPPUNIT_TEST(testNumberingRulesProperties); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXNumberingRules); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXParagraphEnumeration.cxx b/sw/qa/api/SwXParagraphEnumeration.cxx new file mode 100644 index 0000000000..7e7ddd6d18 --- /dev/null +++ b/sw/qa/api/SwXParagraphEnumeration.cxx @@ -0,0 +1,96 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xenumeration.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/container/XEnumeration.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/text/ControlCharacter.hpp> +#include <com/sun/star/lang/IllegalArgumentException.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXParagraphEnumeration. + */ +class SwXParagraphEnumeration final : public UnoApiTest, public apitest::XEnumeration +{ +public: + SwXParagraphEnumeration() + : UnoApiTest("") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + for (int i = 0; i < 5; i++) + { + try + { + xText->insertString(xCursor, "The quick brown fox jumps over the lazy dog", false); + xText->insertControlCharacter(xCursor, text::ControlCharacter::LINE_BREAK, false); + xText->insertString(xCursor, "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG", false); + xText->insertControlCharacter(xCursor, text::ControlCharacter::LINE_BREAK, false); + } + catch (lang::IllegalArgumentException&) + { + } + + try + { + xText->insertControlCharacter(xCursor, text::ControlCharacter::PARAGRAPH_BREAK, + false); + } + catch (lang::IllegalArgumentException&) + { + } + } + + Reference<container::XEnumerationAccess> xEnumAccess(xText, UNO_QUERY_THROW); + Reference<container::XEnumeration> xEnum = xEnumAccess->createEnumeration(); + + return Reference<XInterface>(xEnum, UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXParagraphEnumeration); + CPPUNIT_TEST(testHasMoreElements); + CPPUNIT_TEST(testNextElement); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXParagraphEnumeration); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXReferenceMark.cxx b/sw/qa/api/SwXReferenceMark.cxx new file mode 100644 index 0000000000..bf7b14dc80 --- /dev/null +++ b/sw/qa/api/SwXReferenceMark.cxx @@ -0,0 +1,97 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/lang/xcomponent.hxx> +#include <test/text/xtextcontent.hxx> +#include <test/container/xnamed.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/container/XNamed.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXReferenceMark. + */ +class SwXReferenceMark final : public UnoApiTest, + public apitest::XComponent, + public apitest::XTextContent, + public apitest::XNamed + +{ +public: + SwXReferenceMark() + : UnoApiTest("") + , XNamed("SwXReferenceMark") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + Reference<XInterface> xRefMark = xMSF->createInstance("com.sun.star.text.ReferenceMark"); + Reference<container::XNamed> xNamed(xRefMark, UNO_QUERY_THROW); + xNamed->setName("SwXReferenceMark"); + + Reference<text::XTextContent> xTextContent(xRefMark, UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xTextContent, false); + + mxTextRange = Reference<text::XTextRange>(xCursor, uno::UNO_QUERY_THROW); + mxTextContent = Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.ReferenceMark"), UNO_QUERY_THROW); + + return xRefMark; + } + + Reference<text::XTextRange> getTextRange() override { return mxTextRange; }; + Reference<text::XTextContent> getTextContent() override { return mxTextContent; }; + bool isAttachSupported() override { return true; } + void triggerDesktopTerminate() override { mxDesktop->terminate(); }; + + CPPUNIT_TEST_SUITE(SwXReferenceMark); + CPPUNIT_TEST(testAttach); + CPPUNIT_TEST(testGetAnchor); + CPPUNIT_TEST(testDispose); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST(testGetName); + CPPUNIT_TEST(testSetName); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<text::XTextRange> mxTextRange; + Reference<text::XTextContent> mxTextContent; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXReferenceMark); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXReferenceMarks.cxx b/sw/qa/api/SwXReferenceMarks.cxx new file mode 100644 index 0000000000..1420a0468a --- /dev/null +++ b/sw/qa/api/SwXReferenceMarks.cxx @@ -0,0 +1,100 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xnameaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/container/XNamed.hpp> +#include <com/sun/star/text/XReferenceMarksSupplier.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXReferenceMarks. + */ +class SwXReferenceMarks final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXReferenceMarks() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XTextContent>::get()) + , XIndexAccess(2) + , XNameAccess("SwXReferenceMarks2") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(xTextDocument, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + //RefMark 1 + Reference<XInterface> xRefMark1 = xMSF->createInstance("com.sun.star.text.ReferenceMark"); + Reference<container::XNamed> xNamed1(xRefMark1, UNO_QUERY_THROW); + xNamed1->setName("SwXReferenceMarks1"); + + Reference<text::XTextContent> xTextContent1(xRefMark1, UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xTextContent1, false); + + //RefMark 2 + Reference<XInterface> xRefMark2 = xMSF->createInstance("com.sun.star.text.ReferenceMark"); + Reference<container::XNamed> xNamed2(xRefMark2, UNO_QUERY_THROW); + xNamed2->setName("SwXReferenceMarks2"); + + Reference<text::XTextContent> xTextContent2(xRefMark2, UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xTextContent2, false); + + // Getting ReferenceMarks from Text Document + Reference<text::XReferenceMarksSupplier> xRefMarkSupp(xTextDocument, UNO_QUERY_THROW); + + return Reference<XInterface>(xRefMarkSupp->getReferenceMarks(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXReferenceMarks); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXReferenceMarks); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXStyleFamilies.cxx b/sw/qa/api/SwXStyleFamilies.cxx new file mode 100644 index 0000000000..6cc1430ac5 --- /dev/null +++ b/sw/qa/api/SwXStyleFamilies.cxx @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xnameaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/container/XNameContainer.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXStyleFamilies. + */ +class SwXStyleFamilies final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess + +{ +public: + SwXStyleFamilies() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<container::XNameContainer>::get()) + , XIndexAccess(7) + , XNameAccess("CharacterStyles") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<style::XStyleFamiliesSupplier> xStyleFamSupp(xTextDocument, UNO_QUERY_THROW); + Reference<container::XNameAccess> xSF = xStyleFamSupp->getStyleFamilies(); + + return Reference<XInterface>(xSF, UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXStyleFamilies); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXStyleFamilies); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTableCellText.cxx b/sw/qa/api/SwXTableCellText.cxx new file mode 100644 index 0000000000..733ba36415 --- /dev/null +++ b/sw/qa/api/SwXTableCellText.cxx @@ -0,0 +1,103 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xenumerationaccess.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/text/xsimpletext.hxx> +#include <test/text/xtextrange.hxx> +#include <test/text/xtext.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/table/XCell.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XSimpleText.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTableCellText. + */ +class SwXTableCellText final : public UnoApiTest, + public apitest::XEnumerationAccess, + public apitest::XElementAccess, + public apitest::XSimpleText, + public apitest::XTextRange, + public apitest::XText +{ +public: + SwXTableCellText() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XTextRange>::get()) + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + Reference<text::XTextTable> xTable(xMSF->createInstance("com.sun.star.text.TextTable"), + UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xTable, false); + + Reference<table::XCell> xCell = xTable->getCellByName("A1"); + Reference<text::XSimpleText> xCellText(xCell, UNO_QUERY_THROW); + xCellText->setString("SwXTableCellText"); + + mxTextContent = Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.TextTable"), UNO_QUERY_THROW); + + return Reference<XInterface>(xCellText->getText(), UNO_QUERY_THROW); + } + + Reference<text::XTextContent> getTextContent() override { return mxTextContent; }; + + CPPUNIT_TEST_SUITE(SwXTableCellText); + CPPUNIT_TEST(testCreateEnumeration); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testCreateTextCursor); + CPPUNIT_TEST(testCreateTextCursorByRange); + CPPUNIT_TEST(testInsertString); + CPPUNIT_TEST(testInsertControlCharacter); + CPPUNIT_TEST(testGetEnd); + CPPUNIT_TEST(testGetSetString); + CPPUNIT_TEST(testGetStart); + CPPUNIT_TEST(testGetText); + CPPUNIT_TEST(testInsertRemoveTextContent); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<text::XTextContent> mxTextContent; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTableCellText); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextEmbeddedObjects.cxx b/sw/qa/api/SwXTextEmbeddedObjects.cxx new file mode 100644 index 0000000000..4e8a19a702 --- /dev/null +++ b/sw/qa/api/SwXTextEmbeddedObjects.cxx @@ -0,0 +1,100 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xnameaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xelementaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextContent.hpp> +#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp> +#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp> +#include <com/sun/star/text/XTextFrame.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTextEmbeddedObjects. + */ +class SwXTextEmbeddedObjects final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXTextEmbeddedObjects() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<document::XEmbeddedObjectSupplier>::get()) + , XIndexAccess(1) + , XNameAccess("Object1") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + try + { + Reference<text::XTextContent> xTextContent( + xMSF->createInstance("com.sun.star.text.TextEmbeddedObject"), UNO_QUERY_THROW); + Reference<beans::XPropertySet> xPropertySet(xTextContent, UNO_QUERY_THROW); + xPropertySet->setPropertyValue("CLSID", + Any(OUString("12dcae26-281f-416f-a234-c3086127382e"))); + + xText->insertTextContent(xCursor, xTextContent, false); + } + catch (Exception&) + { + } + + Reference<text::XTextEmbeddedObjectsSupplier> xTEOSupp(xTextDocument, UNO_QUERY_THROW); + + return Reference<XInterface>(xTEOSupp->getEmbeddedObjects(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXTextEmbeddedObjects); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextEmbeddedObjects); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextField.cxx b/sw/qa/api/SwXTextField.cxx new file mode 100644 index 0000000000..e22ab89e47 --- /dev/null +++ b/sw/qa/api/SwXTextField.cxx @@ -0,0 +1,112 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/beans/xpropertyset.hxx> +#include <test/lang/xcomponent.hxx> +#include <test/text/textcontent.hxx> +#include <test/text/xtextcontent.hxx> +#include <test/text/xtextfield.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/beans/XPropertySet.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextContent.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XDependentTextField.hpp> +#include <com/sun/star/text/XTextCursor.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTextField. + */ +struct SwXTextField final : public UnoApiTest, + public apitest::XPropertySet, + public apitest::XComponent, + public apitest::TextContent, + public apitest::XTextContent, + public apitest::XTextField +{ + SwXTextField() + : UnoApiTest("") + , TextContent(text::TextContentAnchorType_AS_CHARACTER, + text::TextContentAnchorType_AS_CHARACTER, text::WrapTextMode_NONE, + text::WrapTextMode_NONE) + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<beans::XPropertySet> xFieldMaster( + xMSF->createInstance("com.sun.star.text.FieldMaster.Database"), UNO_QUERY_THROW); + + xFieldMaster->setPropertyValue("DataBaseName", Any(OUString("Address Book File"))); + xFieldMaster->setPropertyValue("DataTableName", Any(OUString("address"))); + xFieldMaster->setPropertyValue("DataColumnName", Any(OUString("FIRSTNAME"))); + + Reference<text::XDependentTextField> xField( + xMSF->createInstance("com.sun.star.text.TextField.Database"), UNO_QUERY_THROW); + xField->attachTextFieldMaster(xFieldMaster); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + Reference<text::XTextContent> xFieldAsContent(xField, UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xFieldAsContent, false); + + mxTextRange = Reference<text::XTextRange>(xCursor, UNO_QUERY_THROW); + mxTextContent = Reference<text::XTextContent>( + xMSF->createInstance("com.sun.star.text.TextField.DateTime"), UNO_QUERY_THROW); + + return Reference<XInterface>(xField, UNO_QUERY_THROW); + } + + void triggerDesktopTerminate() override { mxDesktop->terminate(); }; + bool isAttachSupported() override { return true; }; + Reference<text::XTextRange> getTextRange() override { return mxTextRange; }; + Reference<text::XTextContent> getTextContent() override { return mxTextContent; }; + + CPPUNIT_TEST_SUITE(SwXTextField); + CPPUNIT_TEST(testDispose); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST(testTextContentProperties); + CPPUNIT_TEST(testAttach); + CPPUNIT_TEST(testGetAnchor); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<text::XTextRange> mxTextRange; + Reference<text::XTextContent> mxTextContent; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextField); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextFieldMasters.cxx b/sw/qa/api/SwXTextFieldMasters.cxx new file mode 100644 index 0000000000..a5d5042dcf --- /dev/null +++ b/sw/qa/api/SwXTextFieldMasters.cxx @@ -0,0 +1,86 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xnameaccess.hxx> +#include <test/container/xelementaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextFieldsSupplier.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +// #include <com/sun/star/container/XNameAccess.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTextFieldMasters. + */ +class SwXTextFieldMasters final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XNameAccess +{ +public: + SwXTextFieldMasters() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<beans::XPropertySet>::get()) + , XNameAccess("com.sun.star.text.fieldmaster.SetExpression.Illustration") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + + Reference<text::XTextFieldsSupplier> xTFS; + + try + { + xTFS = Reference<text::XTextFieldsSupplier>(xTextDocument, UNO_QUERY_THROW); + } + catch (Exception&) + { + } + + // Reference<container::XNameAccess> xNA = xTFS->getTextFieldMasters(); + // Sequence<OUString> aNames = xNA->getElementNames(); + // std::cout << aNames[0] << std::endl; + + return Reference<XInterface>(xTFS->getTextFieldMasters(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXTextFieldMasters); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextFieldMasters); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextFieldTypes.cxx b/sw/qa/api/SwXTextFieldTypes.cxx new file mode 100644 index 0000000000..1a99606c87 --- /dev/null +++ b/sw/qa/api/SwXTextFieldTypes.cxx @@ -0,0 +1,85 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xelementaccess.hxx> +#include <test/container/xenumerationaccess.hxx> +#include <test/util/xrefreshable.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextFieldsSupplier.hpp> +#include <com/sun/star/text/XDependentTextField.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTextFieldTypes. + */ +class SwXTextFieldTypes final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XEnumerationAccess, + public apitest::XRefreshable +{ +public: + SwXTextFieldTypes() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XDependentTextField>::get()) + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + component_ = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + Reference<text::XTextDocument> xTextDocument(component_, UNO_QUERY_THROW); + + Reference<text::XTextFieldsSupplier> xTFS; + + try + { + xTFS = Reference<text::XTextFieldsSupplier>(xTextDocument, UNO_QUERY_THROW); + } + catch (Exception&) + { + } + + return Reference<XInterface>(xTFS->getTextFields(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXTextFieldTypes); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST(testCreateEnumeration); + CPPUNIT_TEST(testRefreshListener); + CPPUNIT_TEST_SUITE_END(); + +private: + Reference<lang::XComponent> component_; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextFieldTypes); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextFrame.cxx b/sw/qa/api/SwXTextFrame.cxx new file mode 100644 index 0000000000..5f356fdbfb --- /dev/null +++ b/sw/qa/api/SwXTextFrame.cxx @@ -0,0 +1,75 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/lang/xserviceinfo.hxx> +#include <test/lang/xcomponent.hxx> + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextCursor.hpp> +#include <com/sun/star/text/XTextFrame.hpp> + +using namespace css; + +namespace +{ +/** + * Test for Java API test of file com.sun.star.comp.office.SwXTextFrame.csv + */ +class SwXTextFrame final : public UnoApiTest, + public apitest::XServiceInfo, + public apitest::XComponent +{ +public: + SwXTextFrame() + : UnoApiTest("") + , apitest::XServiceInfo("SwXTextFrame", "com.sun.star.text.TextFrame") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + uno::Reference<uno::XInterface> init() override + { + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY_THROW); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY_THROW); + uno::Reference<text::XTextFrame> xTextFrame( + xMSF->createInstance("com.sun.star.text.TextFrame"), uno::UNO_QUERY_THROW); + auto xText = xTextDocument->getText(); + auto xTextCursor = xText->createTextCursor(); + CPPUNIT_ASSERT(xTextCursor.is()); + xText->insertTextContent(xTextCursor, xTextFrame, false); + xTextCursor->gotoEnd(false); + return xTextFrame; + } + + void triggerDesktopTerminate() override { mxDesktop->terminate(); } + + CPPUNIT_TEST_SUITE(SwXTextFrame); + CPPUNIT_TEST(testGetImplementationName); + CPPUNIT_TEST(testGetSupportedServiceNames); + CPPUNIT_TEST(testSupportsService); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextFrame); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextSections.cxx b/sw/qa/api/SwXTextSections.cxx new file mode 100644 index 0000000000..0e957ad911 --- /dev/null +++ b/sw/qa/api/SwXTextSections.cxx @@ -0,0 +1,100 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xnameaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xelementaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextContent.hpp> +#include <com/sun/star/text/XTextCursor.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextSection.hpp> +#include <com/sun/star/text/XTextSectionsSupplier.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTextSections. + */ +class SwXTextSections final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXTextSections() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XTextSection>::get()) + , XIndexAccess(2) + , XNameAccess("TextSection") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + Reference<text::XTextContent> xContent( + xMSF->createInstance("com.sun.star.text.TextSection"), UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xContent, false); + + Reference<text::XTextContent> xContent2( + xMSF->createInstance("com.sun.star.text.TextSection"), UNO_QUERY_THROW); + xText->insertTextContent(xCursor, xContent2, false); + + Reference<container::XNameAccess> xNameAccess; + try + { + Reference<text::XTextSectionsSupplier> xSupplier(xTextDocument, UNO_QUERY_THROW); + xNameAccess = xSupplier->getTextSections(); + } + catch (Exception&) + { + } + + return Reference<XInterface>(xNameAccess, UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXTextSections); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextSections); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextTable.cxx b/sw/qa/api/SwXTextTable.cxx new file mode 100644 index 0000000000..229583ebcf --- /dev/null +++ b/sw/qa/api/SwXTextTable.cxx @@ -0,0 +1,86 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/bootstrapfixture.hxx> +#include <test/lang/xcomponent.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XTextCursor.hpp> + +#include <comphelper/processfactory.hxx> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTextTable. + */ +struct SwXTextTable final : public test::BootstrapFixture, + public unotest::MacrosTest, + public apitest::XComponent +{ + virtual void setUp() override; + void tearDown() override; + + Reference<XInterface> init() override; + void triggerDesktopTerminate() override; + + CPPUNIT_TEST_SUITE(SwXTextTable); + CPPUNIT_TEST(testAddEventListener); + CPPUNIT_TEST(testRemoveEventListener); + CPPUNIT_TEST_SUITE_END(); + +private: + css::uno::Reference<css::lang::XComponent> component_; +}; + +void SwXTextTable::setUp() +{ + test::BootstrapFixture::setUp(); + mxDesktop.set( + frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory()))); +} + +void SwXTextTable::tearDown() +{ + if (component_.is()) + { + component_->dispose(); + } +} + +void SwXTextTable::triggerDesktopTerminate() { mxDesktop->terminate(); } + +Reference<XInterface> SwXTextTable::init() +{ + component_ = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + Reference<text::XTextDocument> xTextDocument(component_, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(component_, UNO_QUERY_THROW); + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + Reference<text::XTextTable> xTable(xMSF->createInstance("com.sun.star.text.TextTable"), + UNO_QUERY_THROW); + xTable->initialize(4, 3); + xText->insertTextContent(xCursor, xTable, false); + CPPUNIT_ASSERT(xCursor.is()); + return Reference<XInterface>(xTable, UNO_QUERY_THROW); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextTable); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/SwXTextTables.cxx b/sw/qa/api/SwXTextTables.cxx new file mode 100644 index 0000000000..a63a6592c8 --- /dev/null +++ b/sw/qa/api/SwXTextTables.cxx @@ -0,0 +1,97 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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 <test/unoapi_test.hxx> +#include <test/container/xnameaccess.hxx> +#include <test/container/xindexaccess.hxx> +#include <test/container/xelementaccess.hxx> + +#include <com/sun/star/frame/Desktop.hpp> + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XTextTablesSupplier.hpp> + +using namespace css; +using namespace css::uno; + +namespace +{ +/** + * Initial tests for SwXTextTables. + */ +class SwXTextTables final : public UnoApiTest, + public apitest::XElementAccess, + public apitest::XIndexAccess, + public apitest::XNameAccess +{ +public: + SwXTextTables() + : UnoApiTest("") + , XElementAccess(cppu::UnoType<text::XTextTable>::get()) + , XIndexAccess(1) + , XNameAccess("Table1") + { + } + + virtual void setUp() override + { + UnoApiTest::setUp(); + mxDesktop.set(frame::Desktop::create(mxComponentContext)); + mxComponent = loadFromDesktop("private:factory/swriter"); + CPPUNIT_ASSERT(mxComponent.is()); + } + + Reference<XInterface> init() override + { + Reference<text::XTextDocument> xTextDocument(mxComponent, UNO_QUERY_THROW); + Reference<lang::XMultiServiceFactory> xMSF(mxComponent, UNO_QUERY_THROW); + + Reference<text::XText> xText = xTextDocument->getText(); + Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + + try + { + Reference<text::XTextTable> xTable(xMSF->createInstance("com.sun.star.text.TextTable"), + UNO_QUERY_THROW); + xTable->initialize(4, 3); + xText->insertTextContent(xCursor, xTable, false); + + Reference<text::XTextTable> xTable2(xMSF->createInstance("com.sun.star.text.TextTable"), + UNO_QUERY_THROW); + xTable->initialize(4, 3); + xText->insertTextContent(xCursor, xTable2, false); + } + catch (Exception&) + { + } + + Reference<text::XTextTablesSupplier> xSupplier(xTextDocument, UNO_QUERY_THROW); + + return Reference<XInterface>(xSupplier->getTextTables(), UNO_QUERY_THROW); + } + + CPPUNIT_TEST_SUITE(SwXTextTables); + CPPUNIT_TEST(testGetByName); + CPPUNIT_TEST(testGetElementNames); + CPPUNIT_TEST(testHasByName); + CPPUNIT_TEST(testGetCount); + CPPUNIT_TEST(testGetByIndex); + CPPUNIT_TEST(testGetElementType); + CPPUNIT_TEST(testHasElements); + CPPUNIT_TEST_SUITE_END(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SwXTextTables); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/api/terminate.cxx b/sw/qa/api/terminate.cxx new file mode 100644 index 0000000000..9a0e26d4d7 --- /dev/null +++ b/sw/qa/api/terminate.cxx @@ -0,0 +1,75 @@ +/* -*- 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"); + 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: */ |