| from test import test_support as support | |
| import unittest | |
| import __builtin__ as builtins | |
| import rlcompleter | |
| class CompleteMe(object): | |
| """ 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() |