| 
									
										
										
										
											2010-08-04 15:43:16 +00:00
										 |  |  | from test import support | 
					
						
							|  |  |  | import unittest | 
					
						
							|  |  |  | import builtins | 
					
						
							|  |  |  | import rlcompleter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CompleteMe: | 
					
						
							|  |  |  |     """ Trivial class used in testing rlcompleter.Completer. """ | 
					
						
							|  |  |  |     spam = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestRlcompleter(unittest.TestCase): | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							|  |  |  |         self.stdcompleter = rlcompleter.Completer() | 
					
						
							|  |  |  |         self.completer = rlcompleter.Completer(dict(spam=int, | 
					
						
							|  |  |  |                                                     egg=str, | 
					
						
							|  |  |  |                                                     CompleteMe=CompleteMe)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # forces stdcompleter to bind builtins namespace | 
					
						
							|  |  |  |         self.stdcompleter.complete('', 0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_namespace(self): | 
					
						
							|  |  |  |         class A(dict): | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         class B(list): | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertTrue(self.stdcompleter.use_main_ns) | 
					
						
							|  |  |  |         self.assertFalse(self.completer.use_main_ns) | 
					
						
							|  |  |  |         self.assertFalse(rlcompleter.Completer(A()).use_main_ns) | 
					
						
							|  |  |  |         self.assertRaises(TypeError, rlcompleter.Completer, B((1,))) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_global_matches(self): | 
					
						
							|  |  |  |         # test with builtins namespace | 
					
						
							| 
									
										
										
										
											2010-10-21 07:40:03 +00:00
										 |  |  |         self.assertEqual(sorted(self.stdcompleter.global_matches('di')), | 
					
						
							| 
									
										
										
										
											2010-08-04 15:43:16 +00:00
										 |  |  |                          [x+'(' for x in dir(builtins) if x.startswith('di')]) | 
					
						
							| 
									
										
										
										
											2010-10-21 07:40:03 +00:00
										 |  |  |         self.assertEqual(sorted(self.stdcompleter.global_matches('st')), | 
					
						
							| 
									
										
										
										
											2010-08-04 15:43:16 +00:00
										 |  |  |                          [x+'(' for x in dir(builtins) if x.startswith('st')]) | 
					
						
							|  |  |  |         self.assertEqual(self.stdcompleter.global_matches('akaksajadhak'), []) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # test with a customized namespace | 
					
						
							|  |  |  |         self.assertEqual(self.completer.global_matches('CompleteM'), | 
					
						
							|  |  |  |                          ['CompleteMe(']) | 
					
						
							|  |  |  |         self.assertEqual(self.completer.global_matches('eg'), | 
					
						
							|  |  |  |                          ['egg(']) | 
					
						
							|  |  |  |         # XXX: see issue5256 | 
					
						
							|  |  |  |         self.assertEqual(self.completer.global_matches('CompleteM'), | 
					
						
							|  |  |  |                          ['CompleteMe(']) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_attr_matches(self): | 
					
						
							|  |  |  |         # test with builtins namespace | 
					
						
							|  |  |  |         self.assertEqual(self.stdcompleter.attr_matches('str.s'), | 
					
						
							|  |  |  |                          ['str.{}('.format(x) for x in dir(str) | 
					
						
							|  |  |  |                           if x.startswith('s')]) | 
					
						
							|  |  |  |         self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # test with a customized namespace | 
					
						
							|  |  |  |         self.assertEqual(self.completer.attr_matches('CompleteMe.sp'), | 
					
						
							|  |  |  |                          ['CompleteMe.spam']) | 
					
						
							|  |  |  |         self.assertEqual(self.completer.attr_matches('Completeme.egg'), []) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         CompleteMe.me = CompleteMe | 
					
						
							|  |  |  |         self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'), | 
					
						
							|  |  |  |                          ['CompleteMe.me.me.spam']) | 
					
						
							|  |  |  |         self.assertEqual(self.completer.attr_matches('egg.s'), | 
					
						
							|  |  |  |                          ['egg.{}('.format(x) for x in dir(str) | 
					
						
							|  |  |  |                           if x.startswith('s')]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							|  |  |  |     support.run_unittest(TestRlcompleter) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     test_main() |