diff options
Diffstat (limited to 'Lib/idlelib/idle_test/test_config_key.py')
| -rw-r--r-- | Lib/idlelib/idle_test/test_config_key.py | 79 |
1 files changed, 71 insertions, 8 deletions
diff --git a/Lib/idlelib/idle_test/test_config_key.py b/Lib/idlelib/idle_test/test_config_key.py index 8a24c9632b..a4227ed055 100644 --- a/Lib/idlelib/idle_test/test_config_key.py +++ b/Lib/idlelib/idle_test/test_config_key.py @@ -4,29 +4,92 @@ Coverage: 56% from creating and closing dialog. ''' from idlelib import config_key from test.support import requires -requires('gui') +import sys import unittest from tkinter import Tk +from idlelib.idle_test.mock_idle import Func +from idlelib.idle_test.mock_tk import Var, Mbox_func -class GetKeysTest(unittest.TestCase): +class ValidationTest(unittest.TestCase): + "Test validation methods: OK, KeysOK, bind_ok." + + class Validator(config_key.GetKeysDialog): + def __init__(self, *args, **kwargs): + config_key.GetKeysDialog.__init__(self, *args, **kwargs) + class listKeysFinal: + get = Func() + self.listKeysFinal = listKeysFinal + GetModifiers = Func() + showerror = Mbox_func() @classmethod def setUpClass(cls): + requires('gui') cls.root = Tk() cls.root.withdraw() + cls.dialog = cls.Validator( + cls.root, 'Title', '<<Test>>', [['<Key-F12>']], _utest=True) @classmethod def tearDownClass(cls): - cls.root.update() # Stop "can't run event command" warning. + cls.dialog.Cancel() + cls.root.update_idletasks() cls.root.destroy() - del cls.root + del cls.dialog, cls.root + + def setUp(self): + self.dialog.showerror.message = '' + # A test that needs a particular final key value should set it. + # A test that sets a non-blank modifier list should reset it to []. + + def test_ok_empty(self): + self.dialog.keyString.set(' ') + self.dialog.OK() + self.assertEqual(self.dialog.result, '') + self.assertEqual(self.dialog.showerror.message, 'No key specified.') + + def test_ok_good(self): + self.dialog.keyString.set('<Key-F11>') + self.dialog.listKeysFinal.get.result = 'F11' + self.dialog.OK() + self.assertEqual(self.dialog.result, '<Key-F11>') + self.assertEqual(self.dialog.showerror.message, '') + + def test_keys_no_ending(self): + self.assertFalse(self.dialog.KeysOK('<Control-Shift')) + self.assertIn('Missing the final', self.dialog.showerror.message) + + def test_keys_no_modifier_bad(self): + self.dialog.listKeysFinal.get.result = 'A' + self.assertFalse(self.dialog.KeysOK('<Key-A>')) + self.assertIn('No modifier', self.dialog.showerror.message) + + def test_keys_no_modifier_ok(self): + self.dialog.listKeysFinal.get.result = 'F11' + self.assertTrue(self.dialog.KeysOK('<Key-F11>')) + self.assertEqual(self.dialog.showerror.message, '') + + def test_keys_shift_bad(self): + self.dialog.listKeysFinal.get.result = 'a' + self.dialog.GetModifiers.result = ['Shift'] + self.assertFalse(self.dialog.KeysOK('<a>')) + self.assertIn('shift modifier', self.dialog.showerror.message) + self.dialog.GetModifiers.result = [] + + def test_keys_dup(self): + self.dialog.listKeysFinal.get.result = 'F12' + self.dialog.GetModifiers.result = [] + self.assertFalse(self.dialog.KeysOK('<Key-F12>')) + self.assertIn('already in use', self.dialog.showerror.message) + def test_bind_ok(self): + self.assertTrue(self.dialog.bind_ok('<Control-Shift-Key-a>')) + self.assertEqual(self.dialog.showerror.message, '') - def test_init(self): - dia = config_key.GetKeysDialog( - self.root, 'test', '<<Test>>', ['<Key-F12>'], _utest=True) - dia.Cancel() + def test_bind_not_ok(self): + self.assertFalse(self.dialog.bind_ok('<Control-Shift>')) + self.assertIn('not accepted', self.dialog.showerror.message) if __name__ == '__main__': |
