• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""Unit tests for idlelib.configSectionNameDialog"""
2import unittest
3from idlelib.idle_test.mock_tk import Var, Mbox
4from idlelib import configSectionNameDialog as name_dialog_module
5
6name_dialog = name_dialog_module.GetCfgSectionNameDialog
7
8class Dummy_name_dialog(object):
9    # Mock for testing the following methods of name_dialog
10    name_ok = name_dialog.name_ok.im_func
11    Ok = name_dialog.Ok.im_func
12    Cancel = name_dialog.Cancel.im_func
13    # Attributes, constant or variable, needed for tests
14    used_names = ['used']
15    name = Var()
16    result = None
17    destroyed = False
18    def grab_release(self):
19        pass
20    def destroy(self):
21        self.destroyed = True
22
23# name_ok calls Mbox.showerror if name is not ok
24orig_mbox = name_dialog_module.tkMessageBox
25showerror = Mbox.showerror
26
27class ConfigNameTest(unittest.TestCase):
28    dialog = Dummy_name_dialog()
29
30    @classmethod
31    def setUpClass(cls):
32        name_dialog_module.tkMessageBox = Mbox
33
34    @classmethod
35    def tearDownClass(cls):
36        name_dialog_module.tkMessageBox = orig_mbox
37
38    def test_blank_name(self):
39        self.dialog.name.set(' ')
40        self.assertEqual(self.dialog.name_ok(), '')
41        self.assertEqual(showerror.title, 'Name Error')
42        self.assertIn('No', showerror.message)
43
44    def test_used_name(self):
45        self.dialog.name.set('used')
46        self.assertEqual(self.dialog.name_ok(), '')
47        self.assertEqual(showerror.title, 'Name Error')
48        self.assertIn('use', showerror.message)
49
50    def test_long_name(self):
51        self.dialog.name.set('good'*8)
52        self.assertEqual(self.dialog.name_ok(), '')
53        self.assertEqual(showerror.title, 'Name Error')
54        self.assertIn('too long', showerror.message)
55
56    def test_good_name(self):
57        self.dialog.name.set('  good ')
58        showerror.title = 'No Error'  # should not be called
59        self.assertEqual(self.dialog.name_ok(), 'good')
60        self.assertEqual(showerror.title, 'No Error')
61
62    def test_ok(self):
63        self.dialog.destroyed = False
64        self.dialog.name.set('good')
65        self.dialog.Ok()
66        self.assertEqual(self.dialog.result, 'good')
67        self.assertTrue(self.dialog.destroyed)
68
69    def test_cancel(self):
70        self.dialog.destroyed = False
71        self.dialog.Cancel()
72        self.assertEqual(self.dialog.result, '')
73        self.assertTrue(self.dialog.destroyed)
74
75
76if __name__ == '__main__':
77    unittest.main(verbosity=2, exit=False)
78