| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | """Test idlelib.query.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | Non-gui tests for Query, SectionName, ModuleName, and HelpSource use | 
					
						
							|  |  |  | dummy versions that extract the non-gui methods and add other needed | 
					
						
							|  |  |  | attributes.  GUI tests create an instance of each class and simulate | 
					
						
							|  |  |  | entries and button clicks.  Subclass tests only target the new code in | 
					
						
							|  |  |  | the subclass definition. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The appearance of the widgets is checked by the Query and | 
					
						
							|  |  |  | HelpSource htests.  These are run by running query.py. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Coverage: 94% (100% for Query and SectionName). | 
					
						
							|  |  |  | 6 of 8 missing are ModuleName exceptions I don't know how to trigger. | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | """
 | 
					
						
							|  |  |  | from test.support import requires | 
					
						
							| 
									
										
										
										
											2016-08-10 13:16:26 -04:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | from tkinter import Tk | 
					
						
							|  |  |  | import unittest | 
					
						
							|  |  |  | from unittest import mock | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  | from idlelib.idle_test.mock_tk import Var | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | from idlelib import query | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | # NON-GUI TESTS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | class QueryTest(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |     "Test Query base class." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class Dummy_Query: | 
					
						
							|  |  |  |         # Test the following Query methods. | 
					
						
							|  |  |  |         entry_ok = query.Query.entry_ok | 
					
						
							|  |  |  |         ok = query.Query.ok | 
					
						
							|  |  |  |         cancel = query.Query.cancel | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         # Add attributes and initialization needed for tests. | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         entry = Var() | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         entry_error = {} | 
					
						
							|  |  |  |         def __init__(self, dummy_entry): | 
					
						
							|  |  |  |             self.entry.set(dummy_entry) | 
					
						
							|  |  |  |             self.entry_error['text'] = '' | 
					
						
							|  |  |  |             self.result = None | 
					
						
							|  |  |  |             self.destroyed = False | 
					
						
							|  |  |  |         def showerror(self, message): | 
					
						
							|  |  |  |             self.entry_error['text'] = message | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         def destroy(self): | 
					
						
							|  |  |  |             self.destroyed = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_entry_ok_blank(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_Query(' ') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), None) | 
					
						
							|  |  |  |         self.assertEqual((dialog.result, dialog.destroyed), (None, False)) | 
					
						
							|  |  |  |         self.assertIn('blank line', dialog.entry_error['text']) | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |     def test_entry_ok_good(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_Query('  good ') | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  |         Equal = self.assertEqual | 
					
						
							|  |  |  |         Equal(dialog.entry_ok(), 'good') | 
					
						
							|  |  |  |         Equal((dialog.result, dialog.destroyed), (None, False)) | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         Equal(dialog.entry_error['text'], '') | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |     def test_ok_blank(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_Query('') | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         dialog.entry.focus_set = mock.Mock() | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         self.assertEqual(dialog.ok(), None) | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         self.assertTrue(dialog.entry.focus_set.called) | 
					
						
							|  |  |  |         del dialog.entry.focus_set | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         self.assertEqual((dialog.result, dialog.destroyed), (None, False)) | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_ok_good(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_Query('good') | 
					
						
							|  |  |  |         self.assertEqual(dialog.ok(), None) | 
					
						
							|  |  |  |         self.assertEqual((dialog.result, dialog.destroyed), ('good', True)) | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_cancel(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_Query('does not matter') | 
					
						
							|  |  |  |         self.assertEqual(dialog.cancel(), None) | 
					
						
							|  |  |  |         self.assertEqual((dialog.result, dialog.destroyed), (None, True)) | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SectionNameTest(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |     "Test SectionName subclass of Query." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class Dummy_SectionName: | 
					
						
							|  |  |  |         entry_ok = query.SectionName.entry_ok  # Function being tested. | 
					
						
							|  |  |  |         used_names = ['used'] | 
					
						
							|  |  |  |         entry = Var() | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         entry_error = {} | 
					
						
							|  |  |  |         def __init__(self, dummy_entry): | 
					
						
							|  |  |  |             self.entry.set(dummy_entry) | 
					
						
							|  |  |  |             self.entry_error['text'] = '' | 
					
						
							|  |  |  |         def showerror(self, message): | 
					
						
							|  |  |  |             self.entry_error['text'] = message | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |     def test_blank_section_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_SectionName(' ') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('no name', dialog.entry_error['text']) | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |     def test_used_section_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_SectionName('used') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('use', dialog.entry_error['text']) | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |     def test_long_section_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_SectionName('good'*8) | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('longer than 30', dialog.entry_error['text']) | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |     def test_good_section_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_SectionName('  good ') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), 'good') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_error['text'], '') | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  | class ModuleNameTest(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |     "Test ModuleName subclass of Query." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class Dummy_ModuleName: | 
					
						
							| 
									
										
										
										
											2016-07-28 01:25:31 +00:00
										 |  |  |         entry_ok = query.ModuleName.entry_ok  # Function being tested. | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         text0 = '' | 
					
						
							|  |  |  |         entry = Var() | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         entry_error = {} | 
					
						
							|  |  |  |         def __init__(self, dummy_entry): | 
					
						
							|  |  |  |             self.entry.set(dummy_entry) | 
					
						
							|  |  |  |             self.entry_error['text'] = '' | 
					
						
							|  |  |  |         def showerror(self, message): | 
					
						
							|  |  |  |             self.entry_error['text'] = message | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_blank_module_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_ModuleName(' ') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('no name', dialog.entry_error['text']) | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_bogus_module_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_ModuleName('__name_xyz123_should_not_exist__') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('not found', dialog.entry_error['text']) | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_c_source_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_ModuleName('itertools') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('source-based', dialog.entry_error['text']) | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_good_module_name(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_ModuleName('idlelib') | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |         self.assertTrue(dialog.entry_ok().endswith('__init__.py')) | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         self.assertEqual(dialog.entry_error['text'], '') | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | # 3 HelpSource test classes each test one function. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | orig_platform = query.platform | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HelpsourceBrowsefileTest(unittest.TestCase): | 
					
						
							|  |  |  |     "Test browse_file method of ModuleName subclass of Query." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class Dummy_HelpSource: | 
					
						
							|  |  |  |         browse_file = query.HelpSource.browse_file | 
					
						
							| 
									
										
										
										
											2016-07-08 00:26:20 -04:00
										 |  |  |         pathvar = Var() | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_file_replaces_path(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_HelpSource() | 
					
						
							|  |  |  |         # Path is widget entry, either '' or something. | 
					
						
							|  |  |  |         # Func return is file dialog return, either '' or something. | 
					
						
							|  |  |  |         # Func return should override widget entry. | 
					
						
							|  |  |  |         # We need all 4 combination to test all (most) code paths. | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         for path, func, result in ( | 
					
						
							|  |  |  |                 ('', lambda a,b,c:'', ''), | 
					
						
							|  |  |  |                 ('', lambda a,b,c: __file__, __file__), | 
					
						
							|  |  |  |                 ('htest', lambda a,b,c:'', 'htest'), | 
					
						
							|  |  |  |                 ('htest', lambda a,b,c: __file__, __file__)): | 
					
						
							|  |  |  |             with self.subTest(): | 
					
						
							|  |  |  |                 dialog.pathvar.set(path) | 
					
						
							|  |  |  |                 dialog.askfilename = func | 
					
						
							|  |  |  |                 dialog.browse_file() | 
					
						
							|  |  |  |                 self.assertEqual(dialog.pathvar.get(), result) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HelpsourcePathokTest(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |     "Test path_ok method of HelpSource subclass of Query." | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     class Dummy_HelpSource: | 
					
						
							|  |  |  |         path_ok = query.HelpSource.path_ok | 
					
						
							|  |  |  |         path = Var() | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         path_error = {} | 
					
						
							|  |  |  |         def __init__(self, dummy_path): | 
					
						
							|  |  |  |             self.path.set(dummy_path) | 
					
						
							|  |  |  |             self.path_error['text'] = '' | 
					
						
							|  |  |  |         def showerror(self, message, widget=None): | 
					
						
							|  |  |  |             self.path_error['text'] = message | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def tearDownClass(cls): | 
					
						
							|  |  |  |         query.platform = orig_platform | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_path_ok_blank(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_HelpSource(' ') | 
					
						
							|  |  |  |         self.assertEqual(dialog.path_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('no help file', dialog.path_error['text']) | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_path_ok_bad(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_HelpSource(__file__ + 'bad-bad-bad') | 
					
						
							|  |  |  |         self.assertEqual(dialog.path_ok(), None) | 
					
						
							|  |  |  |         self.assertIn('not exist', dialog.path_error['text']) | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_path_ok_web(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_HelpSource('') | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         Equal = self.assertEqual | 
					
						
							|  |  |  |         for url in 'www.py.org', 'http://py.org': | 
					
						
							|  |  |  |             with self.subTest(): | 
					
						
							|  |  |  |                 dialog.path.set(url) | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |                 self.assertEqual(dialog.path_ok(), url) | 
					
						
							|  |  |  |                 self.assertEqual(dialog.path_error['text'], '') | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_path_ok_file(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_HelpSource('') | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         for platform, prefix in ('darwin', 'file://'), ('other', ''): | 
					
						
							|  |  |  |             with self.subTest(): | 
					
						
							|  |  |  |                 query.platform = platform | 
					
						
							|  |  |  |                 dialog.path.set(__file__) | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |                 self.assertEqual(dialog.path_ok(), prefix + __file__) | 
					
						
							|  |  |  |                 self.assertEqual(dialog.path_error['text'], '') | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HelpsourceEntryokTest(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |     "Test entry_ok method of HelpSource subclass of Query." | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     class Dummy_HelpSource: | 
					
						
							|  |  |  |         entry_ok = query.HelpSource.entry_ok | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         entry_error = {} | 
					
						
							|  |  |  |         path_error = {} | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         def item_ok(self): | 
					
						
							|  |  |  |             return self.name | 
					
						
							|  |  |  |         def path_ok(self): | 
					
						
							|  |  |  |             return self.path | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_entry_ok_helpsource(self): | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         dialog = self.Dummy_HelpSource() | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         for name, path, result in ((None, None, None), | 
					
						
							|  |  |  |                                    (None, 'doc.txt', None), | 
					
						
							|  |  |  |                                    ('doc', None, None), | 
					
						
							|  |  |  |                                    ('doc', 'doc.txt', ('doc', 'doc.txt'))): | 
					
						
							|  |  |  |             with self.subTest(): | 
					
						
							|  |  |  |                 dialog.name, dialog.path = name, path | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |                 self.assertEqual(dialog.entry_ok(), result) | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # GUI TESTS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | class QueryGuiTest(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUpClass(cls): | 
					
						
							|  |  |  |         requires('gui') | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |         cls.root = root = Tk() | 
					
						
							| 
									
										
										
										
											2016-08-31 21:09:02 -04:00
										 |  |  |         cls.root.withdraw() | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         cls.dialog = query.Query(root, 'TEST', 'test', _utest=True) | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  |         cls.dialog.destroy = mock.Mock() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def tearDownClass(cls): | 
					
						
							|  |  |  |         del cls.dialog | 
					
						
							|  |  |  |         cls.root.destroy() | 
					
						
							|  |  |  |         del cls.root | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							|  |  |  |         self.dialog.entry.delete(0, 'end') | 
					
						
							|  |  |  |         self.dialog.result = None | 
					
						
							|  |  |  |         self.dialog.destroy.reset_mock() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_click_ok(self): | 
					
						
							|  |  |  |         dialog = self.dialog | 
					
						
							|  |  |  |         dialog.entry.insert(0, 'abc') | 
					
						
							|  |  |  |         dialog.button_ok.invoke() | 
					
						
							|  |  |  |         self.assertEqual(dialog.result, 'abc') | 
					
						
							|  |  |  |         self.assertTrue(dialog.destroy.called) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_click_blank(self): | 
					
						
							|  |  |  |         dialog = self.dialog | 
					
						
							|  |  |  |         dialog.button_ok.invoke() | 
					
						
							|  |  |  |         self.assertEqual(dialog.result, None) | 
					
						
							|  |  |  |         self.assertFalse(dialog.destroy.called) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_click_cancel(self): | 
					
						
							|  |  |  |         dialog = self.dialog | 
					
						
							|  |  |  |         dialog.entry.insert(0, 'abc') | 
					
						
							|  |  |  |         dialog.button_cancel.invoke() | 
					
						
							|  |  |  |         self.assertEqual(dialog.result, None) | 
					
						
							|  |  |  |         self.assertTrue(dialog.destroy.called) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  | class SectionnameGuiTest(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUpClass(cls): | 
					
						
							|  |  |  |         requires('gui') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_click_section_name(self): | 
					
						
							|  |  |  |         root = Tk() | 
					
						
							| 
									
										
										
										
											2016-08-31 21:09:02 -04:00
										 |  |  |         root.withdraw() | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |         dialog =  query.SectionName(root, 'T', 't', {'abc'}, _utest=True) | 
					
						
							|  |  |  |         Equal = self.assertEqual | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         self.assertEqual(dialog.used_names, {'abc'}) | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |         dialog.entry.insert(0, 'okay') | 
					
						
							|  |  |  |         dialog.button_ok.invoke() | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         self.assertEqual(dialog.result, 'okay') | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |         del dialog | 
					
						
							|  |  |  |         root.destroy() | 
					
						
							|  |  |  |         del root | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ModulenameGuiTest(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUpClass(cls): | 
					
						
							|  |  |  |         requires('gui') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_click_module_name(self): | 
					
						
							|  |  |  |         root = Tk() | 
					
						
							| 
									
										
										
										
											2016-08-31 21:09:02 -04:00
										 |  |  |         root.withdraw() | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |         dialog =  query.ModuleName(root, 'T', 't', 'idlelib', _utest=True) | 
					
						
							| 
									
										
										
										
											2016-08-10 12:50:16 -04:00
										 |  |  |         self.assertEqual(dialog.text0, 'idlelib') | 
					
						
							|  |  |  |         self.assertEqual(dialog.entry.get(), 'idlelib') | 
					
						
							| 
									
										
										
										
											2016-07-03 19:11:13 -04:00
										 |  |  |         dialog.button_ok.invoke() | 
					
						
							|  |  |  |         self.assertTrue(dialog.result.endswith('__init__.py')) | 
					
						
							|  |  |  |         del dialog | 
					
						
							|  |  |  |         root.destroy() | 
					
						
							|  |  |  |         del root | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  | class HelpsourceGuiTest(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUpClass(cls): | 
					
						
							|  |  |  |         requires('gui') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_click_help_source(self): | 
					
						
							|  |  |  |         root = Tk() | 
					
						
							| 
									
										
										
										
											2016-08-31 21:09:02 -04:00
										 |  |  |         root.withdraw() | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         dialog =  query.HelpSource(root, 'T', menuitem='__test__', | 
					
						
							|  |  |  |                                    filepath=__file__, _utest=True) | 
					
						
							|  |  |  |         Equal = self.assertEqual | 
					
						
							|  |  |  |         Equal(dialog.entry.get(), '__test__') | 
					
						
							|  |  |  |         Equal(dialog.path.get(), __file__) | 
					
						
							|  |  |  |         dialog.button_ok.invoke() | 
					
						
							| 
									
										
										
										
											2016-08-10 13:16:26 -04:00
										 |  |  |         prefix = "file://" if sys.platform == 'darwin' else '' | 
					
						
							|  |  |  |         Equal(dialog.result, ('__test__', prefix + __file__)) | 
					
						
							| 
									
										
										
										
											2016-07-08 00:22:50 -04:00
										 |  |  |         del dialog | 
					
						
							|  |  |  |         root.destroy() | 
					
						
							|  |  |  |         del root | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-26 22:05:10 -04:00
										 |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     unittest.main(verbosity=2, exit=False) |