diff options
author | linus <linus@thebehrens.net> | 2018-04-28 12:18:46 +0200 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2018-04-29 23:38:59 +0200 |
commit | f3a4d1597258c0db37a32757f4600e0dc8288aed (patch) | |
tree | 18d2cdee09e725814c2cbd27aec0c276f7d351f6 /sw/qa | |
parent | 3922602fc3aff254ba1df3e2f193a7f569b8963f (diff) |
sw: more fine-granular python tests
- cleanup unnecessary stuff
- split tests up into smaller bits, so test failures give better
error reporting
Change-Id: I0a7d36c7c7afa574141c88bfe344024324969596
Co-authored-by: janniklas.weghorn@gmail.com
Reviewed-on: https://gerrit.libreoffice.org/53586
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'sw/qa')
-rw-r--r-- | sw/qa/python/check_index.py | 153 |
1 files changed, 84 insertions, 69 deletions
diff --git a/sw/qa/python/check_index.py b/sw/qa/python/check_index.py index a39cfbacad4a..b681ff21d061 100644 --- a/sw/qa/python/check_index.py +++ b/sw/qa/python/check_index.py @@ -15,92 +15,107 @@ from com.sun.star.util import XRefreshListener class RefreshListener(XRefreshListener, unohelper.Base): - def __init__(self): - self.m_bDisposed = False - self.m_bRefreshed = False + self.m_refreshed = False + self.m_disposed = False + # Gets called when index is disposed def disposing(self, event): - self.m_bDisposed = True + self.m_disposed = True + # Gets callled when index is refreshed def refreshed(self, event): - self.m_bRefreshed = True - - def assertRefreshed(self): - assert(self.m_bRefreshed) - self.m_bRefreshed = False + self.m_refreshed = True class CheckIndex(unittest.TestCase): - @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 again 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() + # Gets called every time a new test is run + def setUp(self): + """ + Every test should run with a new Instance of an Index and + Refresh Listener + So we need to reload the text of the document and initialize + the corresponding Cursor + """ + self.xDoc = self.__class__._uno.openEmptyWriterDoc() + self.xIndex = self.xDoc.createInstance( + "com.sun.star.text.ContentIndex") + self.xBodyText = self.xDoc.getText() + self.xCursor = self.xBodyText.createTextCursor() + self.xIndex.setPropertyValue("CreateFromOutline", True) + self.xBodyText.insertTextContent(self.xCursor, self.xIndex, True) + # Create Refresh Listener and bind it to the Index + self.listener = RefreshListener() + self.xIndex.addRefreshListener(self.listener) + + def tearDown(self): + """ + Dispose Index and Document and check if the index was + deleted while the tests + """ + self.assertFalse(self.listener.m_disposed, + "Unexpected disporue of the Refresh Listener!") + self.xIndex.dispose() + self.assertTrue(self.listener.m_disposed, + "Could not dispose Refresh Listener") + self.xDoc.dispose() + + def insert_heading(self, text): + """ + Insert a Heading at the end of the document + """ + self.xCursor.gotoEnd(False) + self.xBodyText.insertControlCharacter(self.xCursor, + PARAGRAPH_BREAK, False) + self.xCursor.gotoEnd(False) + self.xCursor.setString(text) + self.xCursor.gotoStartOfParagraph(True) + self.xCursor.setPropertyValue("ParaStyleName", "Heading 1") + + def test_index_refresh(self): + """ + Try to insert a heading at the index, refresh the index and + retrive the heading again + """ + heading = "The best test heading you have seen in your entire life" + self.insert_heading(heading) + self.xIndex.refresh() + self.assertTrue(self.listener.m_refreshed, "Failed to refresh index!") + self.listener.m_refreshed = False + self.xCursor.gotoRange(self.xIndex.getAnchor().getEnd(), False) + self.xCursor.gotoStartOfParagraph(True) + # Get String at current position and search for the heading + text = self.xCursor.getString() + self.assertGreaterEqual(text.find(heading), 0, + "Failed to insert heading at index " + "and retrive it again!") + + def test_index_update(self): + """ + Try to insert a heading at the index, update the index + and retrive the heading again + """ + heading = "Heading to test the index update" + self.insert_heading(heading) + self.xIndex.update() + self.assertTrue(self.listener.m_refreshed, "Failed to update index!") + self.listener.m_refreshed = False + self.xCursor.gotoRange(self.xIndex.getAnchor().getEnd(), False) + self.xCursor.gotoStartOfParagraph(True) + # Get String at current position and search for the heading + text = self.xCursor.getString() + self.assertGreaterEqual(text.find(heading), 0, + "Failed to insert a heading at Index and " + "retrive it again!") if __name__ == "__main__": |