summaryrefslogtreecommitdiffstats
path: root/sw/qa/python/xtextcursor.py
diff options
context:
space:
mode:
Diffstat (limited to 'sw/qa/python/xtextcursor.py')
-rw-r--r--sw/qa/python/xtextcursor.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/sw/qa/python/xtextcursor.py b/sw/qa/python/xtextcursor.py
new file mode 100644
index 000000000..30d051869
--- /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: