summaryrefslogtreecommitdiff
path: root/sw/qa/python
diff options
context:
space:
mode:
authorVasily Melenchuk <vasily.melenchuk@cib.de>2018-10-03 09:39:50 +0300
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2018-11-23 00:09:17 +0100
commitba85d48c0384610829f6b0cfddd944da3cffeed7 (patch)
tree1622621b14838af9c9882ac99dd50d914e432141 /sw/qa/python
parent284dd58e326e61a5d84bde367e1e4873dd738c76 (diff)
sw: new testcase for XText
Change-Id: I8c4b89e1e0851e808daa0902f970f967c6d057a9 Reviewed-on: https://gerrit.libreoffice.org/61348 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'sw/qa/python')
-rw-r--r--sw/qa/python/xtext.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/sw/qa/python/xtext.py b/sw/qa/python/xtext.py
new file mode 100644
index 000000000000..5ee5986a5454
--- /dev/null
+++ b/sw/qa/python/xtext.py
@@ -0,0 +1,89 @@
+#! /usr/bin/env python
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-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/.
+#
+import unittest
+import unohelper
+from org.libreoffice.unotest import UnoInProcess
+from com.sun.star.lang import IllegalArgumentException
+from com.sun.star.container import NoSuchElementException
+import uno
+import time
+
+
+class TestXText(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls._uno = UnoInProcess()
+ cls._uno.setUp()
+ cls._uno.openEmptyWriterDoc()
+
+ @classmethod
+ def tearDownClass(cls):
+ cls._uno.tearDown()
+
+ def test_insertAndRemoveAnnotations(self):
+ xText = self._uno.getDoc().getText()
+ self.assertIsNotNone(xText)
+
+ # Insert annotation field
+ xAnnotation = self.createAnnotation("John Doe")
+ xCursor = xText.createTextCursor()
+ xText.insertTextContent(xCursor, xAnnotation, False)
+
+ # And the same once again, actually not inserted
+ xText.insertTextContent(xCursor, xAnnotation, False)
+
+ # Exception if we try to replace object by itself
+ with self.assertRaises(IllegalArgumentException):
+ xText.insertTextContent(xCursor, xAnnotation, True)
+ # We expect just one annotation actually
+ self.checkAnnotations(["John Doe"])
+
+ xAnnotation2 = self.createAnnotation("Richard Roe")
+ xText.insertTextContent(xCursor, xAnnotation2, True)
+ self.checkAnnotations(["Richard Roe"])
+
+ xAnnotation3 = self.createAnnotation("Jane Roe")
+ xText.insertTextContent(xCursor, xAnnotation3, True)
+ self.checkAnnotations(["Jane Roe", "Richard Roe"])
+
+ # Remove annotations
+ xText.removeTextContent(xAnnotation3)
+ self.checkAnnotations(["Richard Roe"])
+ xText.removeTextContent(xAnnotation2)
+ self.checkAnnotations([])
+
+ # Remove _already removed_ ones again
+ # TODO: unexpected behaviour, it should throw an exception,
+ # but let's nail down current behaviour
+ xText.removeTextContent(xAnnotation2)
+ xText.removeTextContent(xAnnotation)
+
+ self.checkAnnotations([])
+
+ def createAnnotation(self, author):
+ xAnnotation = self._uno.getDoc().createInstance("com.sun.star.text.TextField.Annotation")
+ self.assertIsNotNone(xAnnotation)
+ xAnnotation.setPropertyValue("Author", author)
+ return xAnnotation
+
+ def checkAnnotations(self, authors):
+ xFieldsEnum = self._uno.getDoc().getTextFields().createEnumeration()
+ annotationsFound = 0
+ for xField, author in zip(xFieldsEnum, authors):
+ self.assertTrue(xField.supportsService("com.sun.star.text.TextField.Annotation"))
+ self.assertEqual(xField.getPropertyValue("Author"), author)
+ annotationsFound += 1
+ self.assertEqual(annotationsFound, len(authors))
+
+if __name__ == '__main__':
+ unittest.main()
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab: