summaryrefslogtreecommitdiff
path: root/sw/qa/api/XDocumentIndexTest.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/qa/api/XDocumentIndexTest.hxx')
-rw-r--r--sw/qa/api/XDocumentIndexTest.hxx97
1 files changed, 97 insertions, 0 deletions
diff --git a/sw/qa/api/XDocumentIndexTest.hxx b/sw/qa/api/XDocumentIndexTest.hxx
new file mode 100644
index 000000000000..65c677864563
--- /dev/null
+++ b/sw/qa/api/XDocumentIndexTest.hxx
@@ -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/.
+ */
+
+#ifndef INCLUDED_SW_QA_API_XDOCUMENTINDEXTEST_HXX
+#define INCLUDED_SW_QA_API_XDOCUMENTINDEXTEST_HXX
+
+#include "ApiTestBase.hxx"
+
+#include <cppunit/TestAssert.h>
+
+#include <test/unoapi_property_testers.hxx>
+
+#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/XDocumentIndex.hpp>
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
+namespace apitest
+{
+class XDocumentIndexTest : public ApiTestBase
+{
+public:
+ /**
+ * Test calls the method. <p>
+ * Has <b> OK </b> status if the returned service name
+ * is equal to 'com.sun.star.text.DocumentIndex'.
+ */
+ void testGetServiceName()
+ {
+ auto inputMap = init();
+
+ css::uno::Reference<css::text::XDocumentIndex> xDocumentIndex(
+ inputMap["text::XDocumentIndex"], css::uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.text.DocumentIndex"),
+ xDocumentIndex->getServiceName());
+ }
+
+ /**
+ * Gets the document from relation and insert a new index mark.
+ * Then it stores the text content of document index before
+ * update and after.<p>
+ *
+ * Has <b> OK </b> status if index content is changed and
+ * new index contains index mark inserted. <p>
+ */
+ void testUpdate()
+ {
+ auto inputMap = init();
+
+ css::uno::Reference<css::text::XDocumentIndex> xDocumentIndex(
+ inputMap["text::XDocumentIndex"], css::uno::UNO_QUERY_THROW);
+ css::uno::Reference<css::text::XTextDocument> xTextDocument(inputMap["text::XTextDocument"],
+ css::uno::UNO_QUERY_THROW);
+
+ bool bOK = true;
+ try
+ {
+ css::uno::Reference<css::text::XText> xText = xTextDocument->getText();
+ css::uno::Reference<css::text::XTextRange> xTextRange = xText->getEnd();
+ xTextRange->setString("IndexMark");
+ css::uno::Reference<css::lang::XMultiServiceFactory> xFactory(
+ xTextDocument, css::uno::UNO_QUERY_THROW);
+ css::uno::Reference<css::text::XTextContent> xTextContentMark(
+ xFactory->createInstance("com.sun.star.text.DocumentIndexMark"),
+ css::uno::UNO_QUERY_THROW);
+ xText->insertTextContent(xTextRange, xTextContentMark, true);
+ }
+ catch (css::uno::Exception /*exception*/)
+ {
+ bOK = false;
+ }
+
+ CPPUNIT_ASSERT_MESSAGE("Couldn't create the document index mark", bOK);
+
+ OUString sContentBefore = xDocumentIndex->getAnchor()->getString();
+ xDocumentIndex->update();
+ OUString sContentAfter = xDocumentIndex->getAnchor()->getString();
+
+ CPPUNIT_ASSERT_MESSAGE("Before and after shouldn't be equal",
+ sContentBefore != sContentAfter);
+ CPPUNIT_ASSERT_MESSAGE("Content after should contain string 'IndexMark'",
+ sContentAfter.indexOf("IndexMark") >= 0);
+ }
+};
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */