From 99eee227ac5a96a2657e26d64b8fbf228fd10bf2 Mon Sep 17 00:00:00 2001 From: Xiaoli Date: Sun, 16 Jun 2013 17:13:43 +0200 Subject: migrate check_index test from Java to Python Change-Id: I5080cb0c3ca4b28d197137407da0d5f5b3d6c6d7 Reviewed-on: https://gerrit.libreoffice.org/4310 Reviewed-by: David Ostrovsky Tested-by: David Ostrovsky --- sw/qa/python/check_index.py | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 sw/qa/python/check_index.py (limited to 'sw/qa/python') diff --git a/sw/qa/python/check_index.py b/sw/qa/python/check_index.py new file mode 100644 index 000000000000..6ea5b0b138f2 --- /dev/null +++ b/sw/qa/python/check_index.py @@ -0,0 +1,97 @@ +import unittest +import unohelper +import os +from org.libreoffice.unotest import UnoInProcess +from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK +from com.sun.star.util import XRefreshListener + +class RefreshListener(XRefreshListener, unohelper.Base): + + def __init__(self): + self.m_bDisposed = False + self.m_bRefreshed = False + + def disposing(self, event): + self.m_bDisposed = True + + def refreshed(self, event): + self.m_bRefreshed = True + + def assertRefreshed(self): + assert(self.m_bRefreshed) + self.m_bRefreshed = False + +class CheckIndex(unittest.TestCase): + _uno = None + _xDoc = None + + @classmethod + def setUpClass(cls): + cls._uno = UnoInProcess() + cls._uno.setUp() + cls._xDoc = cls._uno.openEmptyWriterDoc() + + @classmethod + def tearDownClass(cls): + cls._uno.tearDown() + + def test_check_index(self): + xDoc = self.__class__._xDoc + xIndex = xDoc.createInstance("com.sun.star.text.ContentIndex") + xBodyText = xDoc.getText() + xCursor = xBodyText.createTextCursor() + xIndex.setPropertyValue("CreateFromOutline", True) + xBodyText.insertTextContent(xCursor, xIndex, True) + + # register listener + listener = RefreshListener() + xIndex.addRefreshListener(listener) + self.assertFalse(listener.m_bRefreshed) + xIndex.refresh() + listener.assertRefreshed() + + # insert some heading + xCursor.gotoEnd(False) + xBodyText.insertControlCharacter(xCursor, PARAGRAPH_BREAK, False) + xCursor.gotoEnd(False) + test_string = "a heading" + xCursor.setString(test_string) + xCursor.gotoStartOfParagraph(True) + xCursor.setPropertyValue("ParaStyleName","Heading 1") + + # hope text is in last paragraph... + xIndex.refresh() + listener.assertRefreshed() + xCursor.gotoRange(xIndex.getAnchor().getEnd(), False) + xCursor.gotoStartOfParagraph(True) + text = xCursor.getString() + # check if we got text with 'test_string' + assert( text.find(test_string) >= 0 ) + + # insert some more heading + xCursor.gotoEnd(False) + xBodyText.insertControlCharacter(xCursor, PARAGRAPH_BREAK, False) + xCursor.gotoEnd(False) + test_string = "yet another heading" + xCursor.setString(test_string) + xCursor.gotoStartOfParagraph(True) + xCursor.setPropertyValue("ParaStyleName","Heading 1") + + # try agian with update + xIndex.update() + listener.assertRefreshed() + xCursor.gotoRange(xIndex.getAnchor().getEnd(), False) + xCursor.gotoStartOfParagraph(True) + text = xCursor.getString() + # check if we got text with 'test_string' + assert( text.find(test_string) >= 0 ) + + # dispose must call the listener + assert(not listener.m_bDisposed) + xIndex.dispose() + assert(listener.m_bDisposed) + + # close the document + xDoc.dispose() +if __name__ == "__main__": + unittest.main() -- cgit