14adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom test import test_support as support 24adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport unittest 34adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport __builtin__ as builtins 44adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport rlcompleter 54adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 64adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass CompleteMe(object): 74adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao """ Trivial class used in testing rlcompleter.Completer. """ 84adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao spam = 1 94adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass TestRlcompleter(unittest.TestCase): 124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def setUp(self): 134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.stdcompleter = rlcompleter.Completer() 144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.completer = rlcompleter.Completer(dict(spam=int, 154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao egg=str, 164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao CompleteMe=CompleteMe)) 174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # forces stdcompleter to bind builtins namespace 194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.stdcompleter.complete('', 0) 204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_namespace(self): 224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class A(dict): 234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class B(list): 254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(self.stdcompleter.use_main_ns) 284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(self.completer.use_main_ns) 294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(rlcompleter.Completer(A()).use_main_ns) 304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, rlcompleter.Completer, B((1,))) 314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_global_matches(self): 334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # test with builtins namespace 344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(sorted(self.stdcompleter.global_matches('di')), 354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao [x+'(' for x in dir(builtins) if x.startswith('di')]) 364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(sorted(self.stdcompleter.global_matches('st')), 374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao [x+'(' for x in dir(builtins) if x.startswith('st')]) 384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.stdcompleter.global_matches('akaksajadhak'), []) 394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # test with a customized namespace 414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.completer.global_matches('CompleteM'), 424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['CompleteMe(']) 434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.completer.global_matches('eg'), 444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['egg(']) 454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # XXX: see issue5256 464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.completer.global_matches('CompleteM'), 474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['CompleteMe(']) 484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_attr_matches(self): 504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # test with builtins namespace 514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.stdcompleter.attr_matches('str.s'), 524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['str.{}('.format(x) for x in dir(str) 534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if x.startswith('s')]) 544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) 554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # test with a customized namespace 574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.completer.attr_matches('CompleteMe.sp'), 584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['CompleteMe.spam']) 594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.completer.attr_matches('Completeme.egg'), []) 604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao CompleteMe.me = CompleteMe 624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'), 634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['CompleteMe.me.me.spam']) 644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(self.completer.attr_matches('egg.s'), 654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ['egg.{}('.format(x) for x in dir(str) 664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if x.startswith('s')]) 674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaodef test_main(): 694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao support.run_unittest(TestRlcompleter) 704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoif __name__ == '__main__': 734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test_main() 74