"Test autoexpand, coverage 100%." from idlelib.autoexpand import AutoExpand import unittest from test.support import requires from tkinter import Text, Tk class Dummy_Editwin: # AutoExpand.__init__ only needs .text def __init__(self, text): self.text = text class AutoExpandTest(unittest.TestCase): @classmethod def setUpClass(cls): requires('gui') cls.tk = Tk() cls.text = Text(cls.tk) cls.auto_expand = AutoExpand(Dummy_Editwin(cls.text)) cls.auto_expand.bell = lambda: None # If mock_tk.Text._decode understood indexes 'insert' with suffixed 'linestart', # 'wordstart', and 'lineend', used by autoexpand, we could use the following # to run these test on non-gui machines (but check bell). ## try: ## requires('gui') ## #raise ResourceDenied() # Uncomment to test mock. ## except ResourceDenied: ## from idlelib.idle_test.mock_tk import Text ## cls.text = Text() ## cls.text.bell = lambda: None ## else: ## from tkinter import Tk, Text ## cls.tk = Tk() ## cls.text = Text(cls.tk) @classmethod def tearDownClass(cls): del cls.text, cls.auto_expand if hasattr(cls, 'tk'): cls.tk.destroy() del cls.tk def tearDown(self): self.text.delete('1.0', 'end') def test_get_prevword(self): text = self.text previous = self.auto_expand.getprevword equal = self.assertEqual equal(previous(), '') text.insert('insert', 't') equal(previous(), 't') text.insert('insert', 'his') equal(previous(), 'this') text.insert('insert', ' ') equal(previous(), '') text.insert('insert', 'is') equal(previous(), 'is') text.insert('insert', '\nsample\nstring') equal(previous(), 'string') text.delete('3.0', 'insert') equal(previous(), '') text.delete('1.0', 'end') equal(previous(), '') def test_before_only(self): previous = self.auto_expand.getprevword expand = self.auto_expand.expand_word_event equal = self.assertEqual self.text.insert('insert', 'ab ac bx ad ab a') equal(self.auto_expand.getwords(), ['ab', 'ad', 'ac', 'a']) expand('event') equal(previous(), 'ab') expand('event') equal(previous(), 'ad') expand('event') equal(previous(), 'ac') expand('event') equal(previous(), 'a') def test_after_only(self): # Also add punctuation 'noise' that should be ignored. text = self.text previous = self.auto_expand.getprevword expand = self.auto_expand.expand_word_event equal = self.assertEqual text.insert('insert', 'a, [ab] ac: () bx"" cd ac= ad ya') text.mark_set('insert', '1.1') equal(self.auto_expand.getwords(), ['ab', 'ac', 'ad', 'a']) expand('event') equal(previous(), 'ab') expand('event') equal(previous(), 'ac') expand('event') equal(previous(), 'ad') expand('event') equal(previous(), 'a') def test_both_before_after(self): text = self.text previous = self.auto_expand.getprevword expand = self.auto_expand.expand_word_event equal = self.assertEqual text.insert('insert', 'ab xy yz\n') text.insert('insert', 'a ac by ac') text.mark_set('insert', '2.1') equal(self.auto_expand.getwords(), ['ab', 'ac', 'a']) expand('event') equal(previous(), 'ab') expand('event') equal(previous(), 'ac') expand('event') equal(previous(), 'a') def test_other_expand_cases(self): text = self.text expand = self.auto_expand.expand_word_event equal = self.assertEqual # no expansion candidate found equal(self.auto_expand.getwords(), []) equal(expand('event'), 'break') text.insert('insert', 'bx cy dz a') equal(self.auto_expand.getwords(), []) # reset state by successfully expanding once # move cursor to another position and expand again text.insert('insert', 'ac xy a ac ad a') text.mark_set('insert', '1.7') expand('event') initial_state = self.auto_expand.state text.mark_set('insert', '1.end') expand('event') new_state = self.auto_expand.state self.assertNotEqual(initial_state, new_state) if __name__ == '__main__': unittest.main(verbosity=2)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
README.txt | File | 8.52 KB | 0644 |
|
__init__.py | File | 712 B | 0644 |
|
htest.py | File | 13.67 KB | 0644 |
|
mock_idle.py | File | 1.83 KB | 0644 |
|
mock_tk.py | File | 11.35 KB | 0644 |
|
template.py | File | 642 B | 0644 |
|
test_autocomplete.py | File | 4.99 KB | 0644 |
|
test_autocomplete_w.py | File | 709 B | 0644 |
|
test_autoexpand.py | File | 4.53 KB | 0644 |
|
test_browser.py | File | 7.8 KB | 0644 |
|
test_calltip.py | File | 7.6 KB | 0644 |
|
test_calltip_w.py | File | 686 B | 0644 |
|
test_codecontext.py | File | 14.15 KB | 0644 |
|
test_colorizer.py | File | 1.03 KB | 0644 |
|
test_config.py | File | 32.04 KB | 0644 |
|
test_config_key.py | File | 3.61 KB | 0644 |
|
test_configdialog.py | File | 48.6 KB | 0644 |
|
test_debugger.py | File | 571 B | 0644 |
|
test_debugger_r.py | File | 631 B | 0644 |
|
test_debugobj.py | File | 1.52 KB | 0644 |
|
test_debugobj_r.py | File | 545 B | 0644 |
|
test_delegator.py | File | 1.53 KB | 0644 |
|
test_editmenu.py | File | 2.5 KB | 0644 |
|
test_editor.py | File | 1.11 KB | 0644 |
|
test_filelist.py | File | 795 B | 0644 |
|
test_grep.py | File | 2.6 KB | 0644 |
|
test_help.py | File | 849 B | 0644 |
|
test_help_about.py | File | 5.68 KB | 0644 |
|
test_history.py | File | 5.39 KB | 0644 |
|
test_hyperparser.py | File | 8.87 KB | 0644 |
|
test_iomenu.py | File | 870 B | 0644 |
|
test_macosx.py | File | 3.23 KB | 0644 |
|
test_mainmenu.py | File | 594 B | 0644 |
|
test_multicall.py | File | 1.02 KB | 0644 |
|
test_outwin.py | File | 5.42 KB | 0644 |
|
test_paragraph.py | File | 14.02 KB | 0644 |
|
test_parenmatch.py | File | 3.43 KB | 0644 |
|
test_pathbrowser.py | File | 2.37 KB | 0644 |
|
test_percolator.py | File | 3.97 KB | 0644 |
|
test_pyparse.py | File | 18.15 KB | 0644 |
|
test_pyshell.py | File | 1.28 KB | 0644 |
|
test_query.py | File | 11.49 KB | 0644 |
|
test_redirector.py | File | 4.08 KB | 0644 |
|
test_replace.py | File | 8.11 KB | 0644 |
|
test_rpc.py | File | 805 B | 0644 |
|
test_rstrip.py | File | 1.57 KB | 0644 |
|
test_run.py | File | 9.19 KB | 0644 |
|
test_runscript.py | File | 777 B | 0644 |
|
test_scrolledlist.py | File | 496 B | 0644 |
|
test_search.py | File | 2.4 KB | 0644 |
|
test_searchbase.py | File | 5.35 KB | 0644 |
|
test_searchengine.py | File | 11.27 KB | 0644 |
|
test_squeezer.py | File | 21.35 KB | 0644 |
|
test_stackviewer.py | File | 1.18 KB | 0644 |
|
test_statusbar.py | File | 1.11 KB | 0644 |
|
test_text.py | File | 6.81 KB | 0644 |
|
test_textview.py | File | 5.5 KB | 0644 |
|
test_tooltip.py | File | 5.01 KB | 0644 |
|
test_tree.py | File | 792 B | 0644 |
|
test_undo.py | File | 4.13 KB | 0644 |
|
test_warning.py | File | 2.68 KB | 0644 |
|
test_window.py | File | 1.05 KB | 0644 |
|
test_zoomheight.py | File | 999 B | 0644 |
|