summaryrefslogtreecommitdiff
path: root/Lib/idlelib/idle_test/test_config_key.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/idlelib/idle_test/test_config_key.py')
-rw-r--r--Lib/idlelib/idle_test/test_config_key.py79
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__':