cpython/Lib/idlelib/idle_test/test_search.py
Terry Jan Reedy 6fa5bdc6e8 Issue #24225: Within idlelib files, update idlelib module names.
This follows the previous patch that changed idlelib file names.
Class names that matched old module names are not changed.
Change idlelib imports in turtledemo.__main__.

Exception: config-extensions.def.  Previously, extension section
names, file names, and class names had to match.  Changing section
names would create cross-version conflicts in config-extensions.cfg
(user customizations).  Instead map old names to new file names
at point of import in editor.EditorWindow.load_extension.

Patch extensively tested with test_idle, idle_test.htest.py, a custom
import-all test, running IDLE in a console to catch messages,
and testing each menu item.  Based on a patch by Al Sweigart.
2016-05-28 13:22:31 -04:00

80 lines
2.3 KiB
Python

"""Test SearchDialog class in idlelib.search.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.search 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.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.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)