Browse Source
Issue #18410: Test IDLE's search dialog; original patch by Westley Martínez.
pull/40/head
Issue #18410: Test IDLE's search dialog; original patch by Westley Martínez.
pull/40/head
2 changed files with 98 additions and 10 deletions
@ -0,0 +1,80 @@ |
|||
"""Test SearchDialog class in SearchDialogue.py""" |
|||
|
|||
# Does not currently test the event handler wrappers. |
|||
# A usage test should simulate clicks and check hilighting. |
|||
# Tests need to be coordinated with SearchDialogBase tests |
|||
# to avoid duplication. |
|||
|
|||
from test.support import requires |
|||
requires('gui') |
|||
|
|||
import unittest |
|||
import tkinter as tk |
|||
from tkinter import BooleanVar |
|||
import idlelib.SearchEngine as se |
|||
import idlelib.SearchDialog as sd |
|||
|
|||
|
|||
class SearchDialogTest(unittest.TestCase): |
|||
|
|||
@classmethod |
|||
def setUpClass(cls): |
|||
cls.root = tk.Tk() |
|||
|
|||
@classmethod |
|||
def tearDownClass(cls): |
|||
cls.root.destroy() |
|||
del cls.root |
|||
|
|||
def setUp(self): |
|||
self.engine = se.SearchEngine(self.root) |
|||
self.dialog = sd.SearchDialog(self.root, self.engine) |
|||
self.text = tk.Text() |
|||
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.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) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue