/opt/alt/python37/lib64/python3.7/idlelib/idle_test
"Test undo, coverage 77%." # Only test UndoDelegator so far. from idlelib.undo import UndoDelegator import unittest from test.support import requires requires('gui') from unittest.mock import Mock from tkinter import Text, Tk from idlelib.percolator import Percolator class UndoDelegatorTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.root = Tk() cls.text = Text(cls.root) cls.percolator = Percolator(cls.text) @classmethod def tearDownClass(cls): cls.percolator.redir.close() del cls.percolator, cls.text cls.root.destroy() del cls.root def setUp(self): self.delegator = UndoDelegator() self.delegator.bell = Mock() self.percolator.insertfilter(self.delegator) def tearDown(self): self.percolator.removefilter(self.delegator) self.text.delete('1.0', 'end') self.delegator.resetcache() def test_undo_event(self): text = self.text text.insert('insert', 'foobar') text.insert('insert', 'h') text.event_generate('<<undo>>') self.assertEqual(text.get('1.0', 'end'), '\n') text.insert('insert', 'foo') text.insert('insert', 'bar') text.delete('1.2', '1.4') text.insert('insert', 'hello') text.event_generate('<<undo>>') self.assertEqual(text.get('1.0', '1.4'), 'foar') text.event_generate('<<undo>>') self.assertEqual(text.get('1.0', '1.6'), 'foobar') text.event_generate('<<undo>>') self.assertEqual(text.get('1.0', '1.3'), 'foo') text.event_generate('<<undo>>') self.delegator.undo_event('event') self.assertTrue(self.delegator.bell.called) def test_redo_event(self): text = self.text text.insert('insert', 'foo') text.insert('insert', 'bar') text.delete('1.0', '1.3') text.event_generate('<<undo>>') text.event_generate('<<redo>>') self.assertEqual(text.get('1.0', '1.3'), 'bar') text.event_generate('<<redo>>') self.assertTrue(self.delegator.bell.called) def test_dump_event(self): """ Dump_event cannot be tested directly without changing environment variables. So, test statements in dump_event indirectly """ text = self.text d = self.delegator text.insert('insert', 'foo') text.insert('insert', 'bar') text.delete('1.2', '1.4') self.assertTupleEqual((d.pointer, d.can_merge), (3, True)) text.event_generate('<<undo>>') self.assertTupleEqual((d.pointer, d.can_merge), (2, False)) def test_get_set_saved(self): # test the getter method get_saved # test the setter method set_saved # indirectly test check_saved d = self.delegator self.assertTrue(d.get_saved()) self.text.insert('insert', 'a') self.assertFalse(d.get_saved()) d.saved_change_hook = Mock() d.set_saved(True) self.assertEqual(d.pointer, d.saved) self.assertTrue(d.saved_change_hook.called) d.set_saved(False) self.assertEqual(d.saved, -1) self.assertTrue(d.saved_change_hook.called) def test_undo_start_stop(self): # test the undo_block_start and undo_block_stop methods text = self.text text.insert('insert', 'foo') self.delegator.undo_block_start() text.insert('insert', 'bar') text.insert('insert', 'bar') self.delegator.undo_block_stop() self.assertEqual(text.get('1.0', '1.3'), 'foo') # test another code path self.delegator.undo_block_start() text.insert('insert', 'bar') self.delegator.undo_block_stop() self.assertEqual(text.get('1.0', '1.3'), 'foo') def test_addcmd(self): text = self.text # when number of undo operations exceeds max_undo self.delegator.max_undo = max_undo = 10 for i in range(max_undo + 10): text.insert('insert', 'foo') self.assertLessEqual(len(self.delegator.undolist), max_undo) if __name__ == '__main__': unittest.main(verbosity=2, exit=False)
.
Edit
..
Edit
README.txt
Edit
__init__.py
Edit
__pycache__
Edit
htest.py
Edit
mock_idle.py
Edit
mock_tk.py
Edit
template.py
Edit
test_autocomplete.py
Edit
test_autocomplete_w.py
Edit
test_autoexpand.py
Edit
test_browser.py
Edit
test_calltip.py
Edit
test_calltip_w.py
Edit
test_codecontext.py
Edit
test_colorizer.py
Edit
test_config.py
Edit
test_config_key.py
Edit
test_configdialog.py
Edit
test_debugger.py
Edit
test_debugger_r.py
Edit
test_debugobj.py
Edit
test_debugobj_r.py
Edit
test_delegator.py
Edit
test_editmenu.py
Edit
test_editor.py
Edit
test_filelist.py
Edit
test_format.py
Edit
test_grep.py
Edit
test_help.py
Edit
test_help_about.py
Edit
test_history.py
Edit
test_hyperparser.py
Edit
test_iomenu.py
Edit
test_macosx.py
Edit
test_mainmenu.py
Edit
test_multicall.py
Edit
test_outwin.py
Edit
test_parenmatch.py
Edit
test_pathbrowser.py
Edit
test_percolator.py
Edit
test_pyparse.py
Edit
test_pyshell.py
Edit
test_query.py
Edit
test_redirector.py
Edit
test_replace.py
Edit
test_rpc.py
Edit
test_run.py
Edit
test_runscript.py
Edit
test_scrolledlist.py
Edit
test_search.py
Edit
test_searchbase.py
Edit
test_searchengine.py
Edit
test_sidebar.py
Edit
test_squeezer.py
Edit
test_stackviewer.py
Edit
test_statusbar.py
Edit
test_text.py
Edit
test_textview.py
Edit
test_tooltip.py
Edit
test_tree.py
Edit
test_undo.py
Edit
test_warning.py
Edit
test_window.py
Edit
test_zoomheight.py
Edit