"""Unit tests for idlelib.AutoExpand""" import unittest from test.support import requires from tkinter import Text, Tk #from idlelib.idle_test.mock_tk import Text from idlelib.AutoExpand import AutoExpand class Dummy_Editwin: # AutoExpand.__init__ only needs .text def __init__(self, text): self.text = text class AutoExpandTest(unittest.TestCase): @classmethod def setUpClass(cls): if 'tkinter' in str(Text): requires('gui') cls.tk = Tk() cls.text = Text(cls.tk) else: cls.text = Text() cls.auto_expand = AutoExpand(Dummy_Editwin(cls.text)) @classmethod def tearDownClass(cls): if hasattr(cls, 'tk'): cls.tk.destroy() del cls.tk del cls.text, cls.auto_expand 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 | 5.05 KB | 0644 |
|
__init__.py | File | 356 B | 0644 |
|
htest.py | File | 13.33 KB | 0644 |
|
mock_idle.py | File | 1.54 KB | 0644 |
|
mock_tk.py | File | 11.27 KB | 0644 |
|
test_autocomplete.py | File | 4.88 KB | 0644 |
|
test_autoexpand.py | File | 4.02 KB | 0644 |
|
test_calltips.py | File | 6.49 KB | 0644 |
|
test_config_name.py | File | 2.34 KB | 0644 |
|
test_configdialog.py | File | 734 B | 0644 |
|
test_delegator.py | File | 1.26 KB | 0644 |
|
test_editor.py | File | 586 B | 0644 |
|
test_formatparagraph.py | File | 14 KB | 0644 |
|
test_grep.py | File | 2.61 KB | 0644 |
|
test_hyperparser.py | File | 8.85 KB | 0644 |
|
test_idlehistory.py | File | 5.34 KB | 0644 |
|
test_io.py | File | 8.17 KB | 0644 |
|
test_parenmatch.py | File | 3.46 KB | 0644 |
|
test_pathbrowser.py | File | 882 B | 0644 |
|
test_rstrip.py | File | 1.58 KB | 0644 |
|
test_searchdialogbase.py | File | 5.73 KB | 0644 |
|
test_searchengine.py | File | 11.24 KB | 0644 |
|
test_text.py | File | 6.58 KB | 0644 |
|
test_textview.py | File | 2.8 KB | 0644 |
|
test_warning.py | File | 3.06 KB | 0644 |
|
test_widgetredir.py | File | 4.03 KB | 0644 |
|