summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/idle_test/test_configdialog.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/idlelib/idle_test/test_configdialog.py')
-rw-r--r--Lib/idlelib/idle_test/test_configdialog.py189
1 files changed, 108 insertions, 81 deletions
diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py
index b6d5df3..54b2d78 100644
--- a/Lib/idlelib/idle_test/test_configdialog.py
+++ b/Lib/idlelib/idle_test/test_configdialog.py
@@ -45,82 +45,15 @@ def tearDownModule():
del root
-class FontTabTest(unittest.TestCase):
- "Test that font widget enable users to make font changes."
-
-
- def setUp(self):
- changes.clear()
-
- def test_font_set(self):
- # Test that setting a font Variable results in 3 provisional
- # change entries. Use values sure to not be defaults.
- # Other font tests verify that user actions set Variables.
- default_font = idleConf.GetFont(root, 'main', 'EditorWindow')
- default_size = str(default_font[1])
- default_bold = default_font[2] == 'bold'
- d = dialog
- d.font_name.set('Test Font')
- d.font_size.set(default_size)
- d.font_bold.set(default_bold)
- expected = {'EditorWindow': {'font': 'Test Font',
- 'font-size': default_size,
- 'font-bold': str(default_bold)}}
- self.assertEqual(mainpage, expected)
- changes.clear()
- d.font_size.set(20)
- expected = {'EditorWindow': {'font': 'Test Font',
- 'font-size': '20',
- 'font-bold': str(default_bold)}}
- self.assertEqual(mainpage, expected)
- changes.clear()
- d.font_bold.set(not default_bold)
- expected = {'EditorWindow': {'font': 'Test Font',
- 'font-size': '20',
- 'font-bold': str(not default_bold)}}
- self.assertEqual(mainpage, expected)
-
- def test_bold_toggle_set_samples(self):
- # Set up.
- d = dialog
- d.font_sample, d.highlight_sample = {}, {} # Must undo this.
- d.font_name.set('test')
- d.font_size.set('5')
- d.font_bold.set(1)
- expected0 = {'font': ('test', '5', 'normal')}
- expected1 = {'font': ('test', '5', 'bold')}
-
- # Test set_samples.
- d.set_samples()
- self.assertTrue(d.font_sample == d.highlight_sample == expected1)
-
- # Test bold_toggle. If this fails, problem precedes set_samples.
- d.bold_toggle.invoke()
- self.assertFalse(d.font_bold.get())
- self.assertTrue(d.font_sample == d.highlight_sample == expected0)
- d.bold_toggle.invoke()
- self.assertTrue(d.font_bold.get())
- self.assertTrue(d.font_sample == d.highlight_sample == expected1)
-
- # Clean up.
- del d.font_sample, d.highlight_sample
-
- def test_indent_scale(self):
- dialog.indent_scale.set(26)
- self.assertEqual(dialog.space_num.get(), 16)
- self.assertEqual(mainpage, {'Indent': {'num-spaces': '16'}})
-
-
-class FontSelectTest(unittest.TestCase):
- # These two functions test that selecting a new font in the
- # list of fonts changes font_name and calls set_samples.
- # The fontlist widget and on_fontlist_select event handler
- # are tested here together.
+class FontTest(unittest.TestCase):
+ """Test that font widgets enable users to make font changes.
+ Test that widget actions set vars, that var changes add three
+ options to changes and call set_samples, and that set_samples
+ changes the font of both sample boxes.
+ """
@classmethod
def setUpClass(cls):
- if dialog.fontlist.size() < 2:
- cls.skipTest('need at least 2 fonts')
dialog.set_samples = Func() # Mask instance method.
@classmethod
@@ -128,12 +61,27 @@ class FontSelectTest(unittest.TestCase):
del dialog.set_samples # Unmask instance method.
def setUp(self):
- dialog.set_samples.called = 0
changes.clear()
- def test_select_font_key(self):
+ def test_load_font_cfg(self):
+ # Leave widget load test to human visual check.
+ # TODO Improve checks when add IdleConf.get_font_values.
+ d = dialog
+ d.font_name.set('Fake')
+ d.font_size.set('1')
+ d.font_bold.set(True)
+ d.set_samples.called = 0
+ d.load_font_cfg()
+ self.assertNotEqual(d.font_name.get(), 'Fake')
+ self.assertNotEqual(d.font_size.get(), '1')
+ self.assertFalse(d.font_bold.get())
+ self.assertEqual(d.set_samples.called, 3)
+
+ def test_fontlist_key(self):
# Up and Down keys should select a new font.
+ if dialog.fontlist.size() < 2:
+ cls.skipTest('need at least 2 fonts')
fontlist = dialog.fontlist
fontlist.activate(0)
font = dialog.fontlist.get('active')
@@ -147,7 +95,6 @@ class FontSelectTest(unittest.TestCase):
down_font = fontlist.get('active')
self.assertNotEqual(down_font, font)
self.assertIn(dialog.font_name.get(), down_font.lower())
- self.assertEqual(dialog.set_samples.called, 1)
# Test Up key.
fontlist.focus_force()
@@ -158,11 +105,12 @@ class FontSelectTest(unittest.TestCase):
up_font = fontlist.get('active')
self.assertEqual(up_font, font)
self.assertIn(dialog.font_name.get(), up_font.lower())
- self.assertEqual(dialog.set_samples.called, 2)
- def test_select_font_mouse(self):
+ def test_fontlist_mouse(self):
# Click on item should select that item.
+ if dialog.fontlist.size() < 2:
+ cls.skipTest('need at least 2 fonts')
fontlist = dialog.fontlist
fontlist.activate(0)
@@ -180,7 +128,88 @@ class FontSelectTest(unittest.TestCase):
select_font = fontlist.get('anchor')
self.assertEqual(select_font, font1)
self.assertIn(dialog.font_name.get(), font1.lower())
- self.assertEqual(dialog.set_samples.called, 1)
+
+ def test_sizelist(self):
+ # Click on number shouod select that number
+ d = dialog
+ d.sizelist.variable.set(40)
+ self.assertEqual(d.font_size.get(), '40')
+
+ def test_bold_toggle(self):
+ # Click on checkbutton should invert it.
+ d = dialog
+ d.font_bold.set(False)
+ d.bold_toggle.invoke()
+ self.assertTrue(d.font_bold.get())
+ d.bold_toggle.invoke()
+ self.assertFalse(d.font_bold.get())
+
+ def test_font_set(self):
+ # Test that setting a font Variable results in 3 provisional
+ # change entries and a call to set_samples. Use values sure to
+ # not be defaults.
+
+ default_font = idleConf.GetFont(root, 'main', 'EditorWindow')
+ default_size = str(default_font[1])
+ default_bold = default_font[2] == 'bold'
+ d = dialog
+ d.font_size.set(default_size)
+ d.font_bold.set(default_bold)
+ d.set_samples.called = 0
+
+ d.font_name.set('Test Font')
+ expected = {'EditorWindow': {'font': 'Test Font',
+ 'font-size': default_size,
+ 'font-bold': str(default_bold)}}
+ self.assertEqual(mainpage, expected)
+ self.assertEqual(d.set_samples.called, 1)
+ changes.clear()
+
+ d.font_size.set('20')
+ expected = {'EditorWindow': {'font': 'Test Font',
+ 'font-size': '20',
+ 'font-bold': str(default_bold)}}
+ self.assertEqual(mainpage, expected)
+ self.assertEqual(d.set_samples.called, 2)
+ changes.clear()
+
+ d.font_bold.set(not default_bold)
+ expected = {'EditorWindow': {'font': 'Test Font',
+ 'font-size': '20',
+ 'font-bold': str(not default_bold)}}
+ self.assertEqual(mainpage, expected)
+ self.assertEqual(d.set_samples.called, 3)
+
+ def test_set_samples(self):
+ d = dialog
+ del d.set_samples # Unmask method for test
+ d.font_sample, d.highlight_sample = {}, {}
+ d.font_name.set('test')
+ d.font_size.set('5')
+ d.font_bold.set(1)
+ expected = {'font': ('test', '5', 'bold')}
+
+ # Test set_samples.
+ d.set_samples()
+ self.assertTrue(d.font_sample == d.highlight_sample == expected)
+
+ del d.font_sample, d.highlight_sample
+ d.set_samples = Func() # Re-mask for other tests.
+
+
+class IndentTest(unittest.TestCase):
+
+ def test_load_tab_cfg(self):
+ d = dialog
+ d.space_num.set(16)
+ d.load_tab_cfg()
+ self.assertEqual(d.space_num.get(), 4)
+
+ def test_indent_scale(self):
+ changes.clear()
+ dialog.indent_scale.set(26)
+ self.assertEqual(dialog.space_num.get(), 16)
+ self.assertEqual(mainpage, {'Indent': {'num-spaces': '16'}})
class HighlightTest(unittest.TestCase):
@@ -188,8 +217,6 @@ class HighlightTest(unittest.TestCase):
def setUp(self):
changes.clear()
- #def test_colorchoose(self): pass # TODO
-
class KeysTest(unittest.TestCase):