1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
"Test search, coverage 69%."
from idlelib import search
import unittest
from test.support import requires
requires('gui')
from tkinter import Tk, Text, BooleanVar
from idlelib import searchengine
# Does not currently test the event handler wrappers.
# A usage test should simulate clicks and check highlighting.
# Tests need to be coordinated with SearchDialogBase tests
# to avoid duplication.
class SearchDialogTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.root = Tk()
@classmethod
def tearDownClass(cls):
cls.root.destroy()
del cls.root
def setUp(self):
self.engine = searchengine.SearchEngine(self.root)
self.dialog = search.SearchDialog(self.root, self.engine)
self.dialog.bell = lambda: None
self.text = Text(self.root)
self.text.insert('1.0', 'Hello World!')
def test_find_again(self):
# Search for various expressions
text = self.text
self.engine.setpat('')
self.assertFalse(self.dialog.find_again(text))
self.dialog.bell = lambda: None
self.engine.setpat('Hello')
self.assertTrue(self.dialog.find_again(text))
self.engine.setpat('Goodbye')
self.assertFalse(self.dialog.find_again(text))
self.engine.setpat('World!')
self.assertTrue(self.dialog.find_again(text))
self.engine.setpat('Hello World!')
self.assertTrue(self.dialog.find_again(text))
# Regular expression
self.engine.revar = BooleanVar(self.root, True)
self.engine.setpat('W[aeiouy]r')
self.assertTrue(self.dialog.find_again(text))
def test_find_selection(self):
# Select some text and make sure it's found
text = self.text
# Add additional line to find
self.text.insert('2.0', 'Hello World!')
text.tag_add('sel', '1.0', '1.4') # Select 'Hello'
self.assertTrue(self.dialog.find_selection(text))
text.tag_remove('sel', '1.0', 'end')
text.tag_add('sel', '1.6', '1.11') # Select 'World!'
self.assertTrue(self.dialog.find_selection(text))
text.tag_remove('sel', '1.0', 'end')
text.tag_add('sel', '1.0', '1.11') # Select 'Hello World!'
self.assertTrue(self.dialog.find_selection(text))
# Remove additional line
text.delete('2.0', 'end')
if __name__ == '__main__':
unittest.main(verbosity=2, exit=2)
|