diff options
Diffstat (limited to 'sw/qa/python/xtextcursor.py')
-rw-r--r-- | sw/qa/python/xtextcursor.py | 107 |
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: |