| 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 | 
 |         self.assertEqual(sorted(self.stdcompleter.global_matches('di')), | 
 |                          [x+'(' for x in dir(builtins) if x.startswith('di')]) | 
 |         self.assertEqual(sorted(self.stdcompleter.global_matches('st')), | 
 |                          [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() |