1import unittest
2
3# The test cases here cover several paths through the function calling
4# code.  They depend on the METH_XXX flag that is used to define a C
5# function, which can't be verified from Python.  If the METH_XXX decl
6# for a C function changes, these tests may not cover the right paths.
7
8class CFunctionCalls(unittest.TestCase):
9
10    def test_varargs0(self):
11        self.assertRaises(TypeError, {}.__contains__)
12
13    def test_varargs1(self):
14        {}.__contains__(0)
15
16    def test_varargs2(self):
17        self.assertRaises(TypeError, {}.__contains__, 0, 1)
18
19    def test_varargs0_ext(self):
20        try:
21            {}.__contains__(*())
22        except TypeError:
23            pass
24
25    def test_varargs1_ext(self):
26        {}.__contains__(*(0,))
27
28    def test_varargs2_ext(self):
29        try:
30            {}.__contains__(*(1, 2))
31        except TypeError:
32            pass
33        else:
34            raise RuntimeError
35
36    def test_varargs0_kw(self):
37        self.assertRaises(TypeError, {}.__contains__, x=2)
38
39    def test_varargs1_kw(self):
40        self.assertRaises(TypeError, {}.__contains__, x=2)
41
42    def test_varargs2_kw(self):
43        self.assertRaises(TypeError, {}.__contains__, x=2, y=2)
44
45    def test_oldargs0_0(self):
46        {}.keys()
47
48    def test_oldargs0_1(self):
49        self.assertRaises(TypeError, {}.keys, 0)
50
51    def test_oldargs0_2(self):
52        self.assertRaises(TypeError, {}.keys, 0, 1)
53
54    def test_oldargs0_0_ext(self):
55        {}.keys(*())
56
57    def test_oldargs0_1_ext(self):
58        try:
59            {}.keys(*(0,))
60        except TypeError:
61            pass
62        else:
63            raise RuntimeError
64
65    def test_oldargs0_2_ext(self):
66        try:
67            {}.keys(*(1, 2))
68        except TypeError:
69            pass
70        else:
71            raise RuntimeError
72
73    def test_oldargs0_0_kw(self):
74        try:
75            {}.keys(x=2)
76        except TypeError:
77            pass
78        else:
79            raise RuntimeError
80
81    def test_oldargs0_1_kw(self):
82        self.assertRaises(TypeError, {}.keys, x=2)
83
84    def test_oldargs0_2_kw(self):
85        self.assertRaises(TypeError, {}.keys, x=2, y=2)
86
87    def test_oldargs1_0(self):
88        self.assertRaises(TypeError, [].count)
89
90    def test_oldargs1_1(self):
91        [].count(1)
92
93    def test_oldargs1_2(self):
94        self.assertRaises(TypeError, [].count, 1, 2)
95
96    def test_oldargs1_0_ext(self):
97        try:
98            [].count(*())
99        except TypeError:
100            pass
101        else:
102            raise RuntimeError
103
104    def test_oldargs1_1_ext(self):
105        [].count(*(1,))
106
107    def test_oldargs1_2_ext(self):
108        try:
109            [].count(*(1, 2))
110        except TypeError:
111            pass
112        else:
113            raise RuntimeError
114
115    def test_oldargs1_0_kw(self):
116        self.assertRaises(TypeError, [].count, x=2)
117
118    def test_oldargs1_1_kw(self):
119        self.assertRaises(TypeError, [].count, {}, x=2)
120
121    def test_oldargs1_2_kw(self):
122        self.assertRaises(TypeError, [].count, x=2, y=2)
123
124
125if __name__ == "__main__":
126    unittest.main()
127