summaryrefslogtreecommitdiff
path: root/sw/qa/python
diff options
context:
space:
mode:
authorVasily Melenchuk <vasily.melenchuk@cib.de>2018-09-28 13:53:46 +0300
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2018-11-23 00:09:57 +0100
commit19923ea1d1608044e101b1875b47f6d4fbccf2d7 (patch)
treea11190810404f8e2ec84974905d0ff3b0c681506 /sw/qa/python
parentba85d48c0384610829f6b0cfddd944da3cffeed7 (diff)
sw: new unit test for XTextCursor
Change-Id: I5b70f6dc8f7399be78daefa95d6d98687d99ec18 Reviewed-on: https://gerrit.libreoffice.org/61098 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'sw/qa/python')
-rw-r--r--sw/qa/python/testdocuments/xtextcursor.odtbin0 -> 11003 bytes
-rw-r--r--sw/qa/python/xtextcursor.py107
2 files changed, 107 insertions, 0 deletions
diff --git a/sw/qa/python/testdocuments/xtextcursor.odt b/sw/qa/python/testdocuments/xtextcursor.odt
new file mode 100644
index 000000000000..1fdcfb9b77f9
--- /dev/null
+++ b/sw/qa/python/testdocuments/xtextcursor.odt
Binary files differ
diff --git a/sw/qa/python/xtextcursor.py b/sw/qa/python/xtextcursor.py
new file mode 100644
index 000000000000..30d0518690a7
--- /dev/null
+++ b/sw/qa/python/xtextcursor.py
@@ -0,0 +1,107 @@
+#! /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
+import uno
+import time
+
+
+class TestXTextCursor(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls._uno = UnoInProcess()
+ cls._uno.setUp()
+ cls._uno.openDocFromTDOC("xtextcursor.odt")
+
+ @classmethod
+ def tearDownClass(cls):
+ cls._uno.tearDown()
+
+ def createTextCursorInFrame(self, frameName):
+ xTextFrames = self._uno.getDoc().getTextFrames()
+ self.assertIsNotNone(xTextFrames)
+ xTextFrame = xTextFrames[frameName]
+ self.assertIsNotNone(xTextFrame)
+ xCursor = xTextFrame.getText().createTextCursor()
+ self.assertIsNotNone(xCursor)
+ return xCursor
+
+ def test_cursorMoveInText(self):
+ # Create cursor in frame with simple text (to avoid moving beyond)
+ xCursor = self.createTextCursorInFrame("FrameSimple")
+
+ xCursor.collapseToStart()
+ self.assertTrue(xCursor.isCollapsed())
+ self.assertTrue(xCursor.goRight(1, True))
+ self.assertFalse(xCursor.isCollapsed())
+ # Try to move right 10 characters, but we really can just 3, so partial move
+ self.assertFalse(xCursor.goRight(10, True))
+ self.assertFalse(xCursor.isCollapsed())
+ # Ensure that all line text is selected
+ self.assertEqual(xCursor.getString(), "1234")
+
+ self.assertFalse(xCursor.goRight(-10, True))
+ self.assertEqual(xCursor.getString(), "1234")
+
+ xCursor.collapseToEnd()
+ self.assertTrue(xCursor.isCollapsed())
+ self.assertTrue(xCursor.goLeft(2, True))
+ self.assertFalse(xCursor.isCollapsed())
+ self.assertEqual(xCursor.getString(), "34")
+
+ # Move to start without selection
+ self.assertTrue(xCursor.goLeft(2, False))
+ self.assertEqual(xCursor.getString(), "")
+
+ self.assertTrue(xCursor.isCollapsed())
+
+ # Select all text
+ xCursor.gotoStart(False)
+ self.assertTrue(xCursor.isCollapsed())
+ xCursor.gotoEnd(True)
+ self.assertFalse(xCursor.isCollapsed())
+ self.assertEqual(xCursor.getString(), "1234")
+
+ # Select all text from behind
+ xCursor.gotoEnd(False)
+ self.assertTrue(xCursor.isCollapsed())
+ xCursor.gotoStart(True)
+ self.assertFalse(xCursor.isCollapsed())
+ self.assertEqual(xCursor.getString(), "1234")
+
+ # Select all text, alternative way via gotoRange
+ xCursor2 = self.createTextCursorInFrame("FrameSimple")
+ xCursor2.gotoEnd(False)
+ xCursor2.gotoStart(True)
+ xCursor.gotoEnd(False)
+ self.assertTrue(xCursor.isCollapsed())
+ xCursor.gotoRange(xCursor2, True)
+ self.assertFalse(xCursor.isCollapsed())
+ self.assertEqual(xCursor.getString(), "1234")
+
+ def test_cursorMoveInTable(self):
+ # Create cursor in frame with table
+ xCursor = self.createTextCursorInFrame("FrameTable")
+
+ # Nothing is selected
+ xCursor.collapseToEnd()
+ self.assertTrue(xCursor.isCollapsed())
+ self.assertEqual(xCursor.getString(), "")
+ self.assertFalse(xCursor.goLeft(1, False))
+ self.assertFalse(xCursor.goLeft(1, True))
+ self.assertEqual(xCursor.getString(), "")
+
+
+if __name__ == '__main__':
+ unittest.main()
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab: