]>
Commit | Line | Data |
---|---|---|
4710c53d | 1 | from test import test_support as support\r |
2 | import unittest\r | |
3 | import __builtin__ as builtins\r | |
4 | import rlcompleter\r | |
5 | \r | |
6 | class CompleteMe(object):\r | |
7 | """ Trivial class used in testing rlcompleter.Completer. """\r | |
8 | spam = 1\r | |
9 | \r | |
10 | \r | |
11 | class TestRlcompleter(unittest.TestCase):\r | |
12 | def setUp(self):\r | |
13 | self.stdcompleter = rlcompleter.Completer()\r | |
14 | self.completer = rlcompleter.Completer(dict(spam=int,\r | |
15 | egg=str,\r | |
16 | CompleteMe=CompleteMe))\r | |
17 | \r | |
18 | # forces stdcompleter to bind builtins namespace\r | |
19 | self.stdcompleter.complete('', 0)\r | |
20 | \r | |
21 | def test_namespace(self):\r | |
22 | class A(dict):\r | |
23 | pass\r | |
24 | class B(list):\r | |
25 | pass\r | |
26 | \r | |
27 | self.assertTrue(self.stdcompleter.use_main_ns)\r | |
28 | self.assertFalse(self.completer.use_main_ns)\r | |
29 | self.assertFalse(rlcompleter.Completer(A()).use_main_ns)\r | |
30 | self.assertRaises(TypeError, rlcompleter.Completer, B((1,)))\r | |
31 | \r | |
32 | def test_global_matches(self):\r | |
33 | # test with builtins namespace\r | |
34 | self.assertEqual(sorted(self.stdcompleter.global_matches('di')),\r | |
35 | [x+'(' for x in dir(builtins) if x.startswith('di')])\r | |
36 | self.assertEqual(sorted(self.stdcompleter.global_matches('st')),\r | |
37 | [x+'(' for x in dir(builtins) if x.startswith('st')])\r | |
38 | self.assertEqual(self.stdcompleter.global_matches('akaksajadhak'), [])\r | |
39 | \r | |
40 | # test with a customized namespace\r | |
41 | self.assertEqual(self.completer.global_matches('CompleteM'),\r | |
42 | ['CompleteMe('])\r | |
43 | self.assertEqual(self.completer.global_matches('eg'),\r | |
44 | ['egg('])\r | |
45 | # XXX: see issue5256\r | |
46 | self.assertEqual(self.completer.global_matches('CompleteM'),\r | |
47 | ['CompleteMe('])\r | |
48 | \r | |
49 | def test_attr_matches(self):\r | |
50 | # test with builtins namespace\r | |
51 | self.assertEqual(self.stdcompleter.attr_matches('str.s'),\r | |
52 | ['str.{}('.format(x) for x in dir(str)\r | |
53 | if x.startswith('s')])\r | |
54 | self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), [])\r | |
55 | \r | |
56 | # test with a customized namespace\r | |
57 | self.assertEqual(self.completer.attr_matches('CompleteMe.sp'),\r | |
58 | ['CompleteMe.spam'])\r | |
59 | self.assertEqual(self.completer.attr_matches('Completeme.egg'), [])\r | |
60 | \r | |
61 | CompleteMe.me = CompleteMe\r | |
62 | self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'),\r | |
63 | ['CompleteMe.me.me.spam'])\r | |
64 | self.assertEqual(self.completer.attr_matches('egg.s'),\r | |
65 | ['egg.{}('.format(x) for x in dir(str)\r | |
66 | if x.startswith('s')])\r | |
67 | \r | |
68 | def test_main():\r | |
69 | support.run_unittest(TestRlcompleter)\r | |
70 | \r | |
71 | \r | |
72 | if __name__ == '__main__':\r | |
73 | test_main()\r |