| 
									
										
										
										
											2013-06-05 14:22:26 -04:00
										 |  |  | """Unit tests for idlelib.configSectionNameDialog""" | 
					
						
							|  |  |  | import unittest | 
					
						
							|  |  |  | from idlelib.idle_test.mock_tk import Var, Mbox | 
					
						
							|  |  |  | from idlelib import configSectionNameDialog as name_dialog_module | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | name_dialog = name_dialog_module.GetCfgSectionNameDialog | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Dummy_name_dialog: | 
					
						
							|  |  |  |     # Mock for testing the following methods of name_dialog | 
					
						
							|  |  |  |     name_ok = name_dialog.name_ok | 
					
						
							|  |  |  |     Ok = name_dialog.Ok | 
					
						
							|  |  |  |     Cancel = name_dialog.Cancel | 
					
						
							|  |  |  |     # Attributes, constant or variable, needed for tests | 
					
						
							|  |  |  |     used_names = ['used'] | 
					
						
							|  |  |  |     name = Var() | 
					
						
							|  |  |  |     result = None | 
					
						
							|  |  |  |     destroyed = False | 
					
						
							|  |  |  |     def destroy(self): | 
					
						
							|  |  |  |         self.destroyed = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # name_ok calls Mbox.showerror if name is not ok | 
					
						
							|  |  |  | orig_mbox = name_dialog_module.tkMessageBox | 
					
						
							|  |  |  | showerror = Mbox.showerror | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-30 01:36:48 -04:00
										 |  |  | class ConfigNameTest(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2013-06-05 14:22:26 -04:00
										 |  |  |     dialog = Dummy_name_dialog() | 
					
						
							| 
									
										
										
										
											2013-06-05 14:36:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-05 14:22:26 -04:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUpClass(cls): | 
					
						
							|  |  |  |         name_dialog_module.tkMessageBox = Mbox | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def tearDownClass(cls): | 
					
						
							|  |  |  |         name_dialog_module.tkMessageBox = orig_mbox | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_blank_name(self): | 
					
						
							|  |  |  |         self.dialog.name.set(' ') | 
					
						
							|  |  |  |         self.assertEqual(self.dialog.name_ok(), '') | 
					
						
							|  |  |  |         self.assertEqual(showerror.title, 'Name Error') | 
					
						
							|  |  |  |         self.assertIn('No', showerror.message) | 
					
						
							| 
									
										
										
										
											2013-06-05 14:36:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-05 14:22:26 -04:00
										 |  |  |     def test_used_name(self): | 
					
						
							|  |  |  |         self.dialog.name.set('used') | 
					
						
							|  |  |  |         self.assertEqual(self.dialog.name_ok(), '') | 
					
						
							|  |  |  |         self.assertEqual(showerror.title, 'Name Error') | 
					
						
							|  |  |  |         self.assertIn('use', showerror.message) | 
					
						
							| 
									
										
										
										
											2013-06-05 14:36:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-05 14:22:26 -04:00
										 |  |  |     def test_long_name(self): | 
					
						
							|  |  |  |         self.dialog.name.set('good'*8) | 
					
						
							|  |  |  |         self.assertEqual(self.dialog.name_ok(), '') | 
					
						
							|  |  |  |         self.assertEqual(showerror.title, 'Name Error') | 
					
						
							|  |  |  |         self.assertIn('too long', showerror.message) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_good_name(self): | 
					
						
							|  |  |  |         self.dialog.name.set('  good ') | 
					
						
							|  |  |  |         showerror.title = 'No Error'  # should not be called | 
					
						
							|  |  |  |         self.assertEqual(self.dialog.name_ok(), 'good') | 
					
						
							|  |  |  |         self.assertEqual(showerror.title, 'No Error') | 
					
						
							| 
									
										
										
										
											2013-06-05 14:36:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-05 14:22:26 -04:00
										 |  |  |     def test_ok(self): | 
					
						
							|  |  |  |         self.dialog.destroyed = False | 
					
						
							|  |  |  |         self.dialog.name.set('good') | 
					
						
							|  |  |  |         self.dialog.Ok() | 
					
						
							|  |  |  |         self.assertEqual(self.dialog.result, 'good') | 
					
						
							|  |  |  |         self.assertTrue(self.dialog.destroyed) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_cancel(self): | 
					
						
							|  |  |  |         self.dialog.destroyed = False | 
					
						
							|  |  |  |         self.dialog.Cancel() | 
					
						
							|  |  |  |         self.assertEqual(self.dialog.result, '') | 
					
						
							|  |  |  |         self.assertTrue(self.dialog.destroyed) | 
					
						
							| 
									
										
										
										
											2013-06-05 14:36:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-05 14:22:26 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     unittest.main(verbosity=2, exit=False) |