diff options
author | Vasily Melenchuk <vasily.melenchuk@cib.de> | 2018-10-03 09:39:50 +0300 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2018-11-23 00:09:17 +0100 |
commit | ba85d48c0384610829f6b0cfddd944da3cffeed7 (patch) | |
tree | 1622621b14838af9c9882ac99dd50d914e432141 /sw | |
parent | 284dd58e326e61a5d84bde367e1e4873dd738c76 (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')
-rw-r--r-- | sw/PythonTest_sw_python.mk | 1 | ||||
-rw-r--r-- | sw/qa/python/xtext.py | 89 |
2 files changed, 90 insertions, 0 deletions
diff --git a/sw/PythonTest_sw_python.mk b/sw/PythonTest_sw_python.mk index cd73e90f199a..ad479f527504 100644 --- a/sw/PythonTest_sw_python.mk +++ b/sw/PythonTest_sw_python.mk @@ -41,6 +41,7 @@ $(eval $(call gb_PythonTest_add_modules,sw_python,$(SRCDIR)/sw/qa/python,\ xcontrolshape \ xtextcontent \ xtextrange \ + xtext \ )) # vim: set noet sw=4 ts=4: 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: |