mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 11:14:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			128 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Test idlelib.configdialog.
 | |
| 
 | |
| Half the class creates dialog, half works with user customizations.
 | |
| Coverage: 46% just by creating dialog, 56% with current tests.
 | |
| """
 | |
| from idlelib.configdialog import ConfigDialog, idleConf  # test import
 | |
| from test.support import requires
 | |
| requires('gui')
 | |
| from tkinter import Tk
 | |
| import unittest
 | |
| import idlelib.config as config
 | |
| 
 | |
| # Tests should not depend on fortuitous user configurations.
 | |
| # They must not affect actual user .cfg files.
 | |
| # Use solution from test_config: empty parsers with no filename.
 | |
| usercfg = idleConf.userCfg
 | |
| testcfg = {
 | |
|     'main': config.IdleUserConfParser(''),
 | |
|     'highlight': config.IdleUserConfParser(''),
 | |
|     'keys': config.IdleUserConfParser(''),
 | |
|     'extensions': config.IdleUserConfParser(''),
 | |
| }
 | |
| 
 | |
| # ConfigDialog.changedItems is a 3-level hierarchical dictionary of
 | |
| # pending changes that mirrors the multilevel user config dict.
 | |
| # For testing, record args in a list for comparison with expected.
 | |
| changes = []
 | |
| class TestDialog(ConfigDialog):
 | |
|     def AddChangedItem(self, *args):
 | |
|         changes.append(args)
 | |
| 
 | |
| def setUpModule():
 | |
|     global root, configure
 | |
|     idleConf.userCfg = testcfg
 | |
|     root = Tk()
 | |
|     root.withdraw()
 | |
|     configure = TestDialog(root, 'Test', _utest=True)
 | |
| 
 | |
| 
 | |
| def tearDownModule():
 | |
|     global root, configure
 | |
|     idleConf.userCfg = testcfg
 | |
|     configure.remove_var_callbacks()
 | |
|     del configure
 | |
|     root.update_idletasks()
 | |
|     root.destroy()
 | |
|     del root
 | |
| 
 | |
| 
 | |
| class FontTabTest(unittest.TestCase):
 | |
| 
 | |
| 
 | |
|     def setUp(self):
 | |
|         changes.clear()
 | |
| 
 | |
|     def test_font(self):
 | |
|         # Set values guaranteed not to be defaults.
 | |
|         dfont = idleConf.GetFont(root, 'main', 'EditorWindow')
 | |
|         dsize = str(dfont[1])
 | |
|         dbold = dfont[2] == 'bold'
 | |
|         configure.fontName.set('Test Font')
 | |
|         expected = [
 | |
|             ('main', 'EditorWindow', 'font', 'Test Font'),
 | |
|             ('main', 'EditorWindow', 'font-size', dsize),
 | |
|             ('main', 'EditorWindow', 'font-bold', dbold)]
 | |
|         self.assertEqual(changes, expected)
 | |
|         changes.clear()
 | |
|         configure.fontSize.set(20)
 | |
|         expected = [
 | |
|             ('main', 'EditorWindow', 'font', 'Test Font'),
 | |
|             ('main', 'EditorWindow', 'font-size', '20'),
 | |
|             ('main', 'EditorWindow', 'font-bold', dbold)]
 | |
|         self.assertEqual(changes, expected)
 | |
|         changes.clear()
 | |
|         configure.fontBold.set(not dbold)
 | |
|         expected = [
 | |
|             ('main', 'EditorWindow', 'font', 'Test Font'),
 | |
|             ('main', 'EditorWindow', 'font-size', '20'),
 | |
|             ('main', 'EditorWindow', 'font-bold', not dbold)]
 | |
|         self.assertEqual(changes, expected)
 | |
| 
 | |
|     #def test_sample(self): pass  # TODO
 | |
| 
 | |
|     def test_tabspace(self):
 | |
|         configure.spaceNum.set(6)
 | |
|         self.assertEqual(changes, [('main', 'Indent', 'num-spaces', 6)])
 | |
| 
 | |
| 
 | |
| class HighlightTest(unittest.TestCase):
 | |
| 
 | |
|     def setUp(self):
 | |
|         changes.clear()
 | |
| 
 | |
|     #def test_colorchoose(self): pass  # TODO
 | |
| 
 | |
| 
 | |
| class KeysTest(unittest.TestCase):
 | |
| 
 | |
|     def setUp(self):
 | |
|         changes.clear()
 | |
| 
 | |
| 
 | |
| class GeneralTest(unittest.TestCase):
 | |
| 
 | |
|     def setUp(self):
 | |
|         changes.clear()
 | |
| 
 | |
|     def test_startup(self):
 | |
|         configure.radioStartupEdit.invoke()
 | |
|         self.assertEqual(changes,
 | |
|                          [('main', 'General', 'editor-on-startup', 1)])
 | |
| 
 | |
|     def test_autosave(self):
 | |
|         configure.radioSaveAuto.invoke()
 | |
|         self.assertEqual(changes, [('main', 'General', 'autosave', 1)])
 | |
| 
 | |
|     def test_editor_size(self):
 | |
|         configure.entryWinHeight.insert(0, '1')
 | |
|         self.assertEqual(changes, [('main', 'EditorWindow', 'height', '140')])
 | |
|         changes.clear()
 | |
|         configure.entryWinWidth.insert(0, '1')
 | |
|         self.assertEqual(changes, [('main', 'EditorWindow', 'width', '180')])
 | |
| 
 | |
|     #def test_help_sources(self): pass  # TODO
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main(verbosity=2)
 | 
