blob: e2b8e0fd1233d9009f05a885f25d33a196b69d7b [file] [log] [blame]
Jeremy Hyltonbea39472001-05-29 16:26:20 +00001import unittest
Jeremy Hyltonbea39472001-05-29 16:26:20 +00002
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):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000011 self.assertRaises(TypeError, {}.__contains__)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000012
13 def test_varargs1(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000014 {}.__contains__(0)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000015
16 def test_varargs2(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000017 self.assertRaises(TypeError, {}.__contains__, 0, 1)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000018
19 def test_varargs0_ext(self):
20 try:
Guido van Rossume2b70bc2006-08-18 22:13:04 +000021 {}.__contains__(*())
Jeremy Hyltonbea39472001-05-29 16:26:20 +000022 except TypeError:
23 pass
24
25 def test_varargs1_ext(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000026 {}.__contains__(*(0,))
Jeremy Hyltonbea39472001-05-29 16:26:20 +000027
28 def test_varargs2_ext(self):
29 try:
Guido van Rossume2b70bc2006-08-18 22:13:04 +000030 {}.__contains__(*(1, 2))
Jeremy Hyltonbea39472001-05-29 16:26:20 +000031 except TypeError:
32 pass
33 else:
34 raise RuntimeError
35
36 def test_varargs0_kw(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000037 self.assertRaises(TypeError, {}.__contains__, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000038
39 def test_varargs1_kw(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000040 self.assertRaises(TypeError, {}.__contains__, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000041
42 def test_varargs2_kw(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000043 self.assertRaises(TypeError, {}.__contains__, x=2, y=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000044
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):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000088 self.assertRaises(TypeError, [].count)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000089
90 def test_oldargs1_1(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000091 [].count(1)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000092
93 def test_oldargs1_2(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000094 self.assertRaises(TypeError, [].count, 1, 2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000095
96 def test_oldargs1_0_ext(self):
97 try:
Raymond Hettinger31017ae2004-03-04 08:25:44 +000098 [].count(*())
Jeremy Hyltonbea39472001-05-29 16:26:20 +000099 except TypeError:
100 pass
101 else:
102 raise RuntimeError
103
104 def test_oldargs1_1_ext(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000105 [].count(*(1,))
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000106
107 def test_oldargs1_2_ext(self):
108 try:
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000109 [].count(*(1, 2))
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000110 except TypeError:
111 pass
112 else:
113 raise RuntimeError
114
115 def test_oldargs1_0_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000116 self.assertRaises(TypeError, [].count, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000117
118 def test_oldargs1_1_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000119 self.assertRaises(TypeError, [].count, {}, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000120
121 def test_oldargs1_2_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000122 self.assertRaises(TypeError, [].count, x=2, y=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000123
Fred Drake2e2be372001-09-20 21:33:42 +0000124
Fred Drake2e2be372001-09-20 21:33:42 +0000125if __name__ == "__main__":
Zachary Ware38c707e2015-04-13 15:00:43 -0500126 unittest.main()