blob: d06c2c94c53b0d9ee05e2457eff80c59db05b396 [file] [log] [blame]
Jeremy Hyltonbea39472001-05-29 16:26:20 +00001import unittest
Walter Dörwald21d3a322003-05-01 17:45:56 +00002from test import test_support
Jeremy Hyltonbea39472001-05-29 16:26:20 +00003
4# The test cases here cover several paths through the function calling
5# code. They depend on the METH_XXX flag that is used to define a C
6# function, which can't be verified from Python. If the METH_XXX decl
7# for a C function changes, these tests may not cover the right paths.
8
9class CFunctionCalls(unittest.TestCase):
10
11 def test_varargs0(self):
12 self.assertRaises(TypeError, {}.has_key)
13
14 def test_varargs1(self):
Florent Xicluna07627882010-03-21 01:14:24 +000015 with test_support.check_py3k_warnings():
16 {}.has_key(0)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000017
18 def test_varargs2(self):
19 self.assertRaises(TypeError, {}.has_key, 0, 1)
20
21 def test_varargs0_ext(self):
22 try:
23 {}.has_key(*())
24 except TypeError:
25 pass
26
27 def test_varargs1_ext(self):
Florent Xicluna07627882010-03-21 01:14:24 +000028 with test_support.check_py3k_warnings():
29 {}.has_key(*(0,))
Jeremy Hyltonbea39472001-05-29 16:26:20 +000030
31 def test_varargs2_ext(self):
32 try:
Florent Xicluna07627882010-03-21 01:14:24 +000033 with test_support.check_py3k_warnings():
34 {}.has_key(*(1, 2))
Jeremy Hyltonbea39472001-05-29 16:26:20 +000035 except TypeError:
36 pass
37 else:
38 raise RuntimeError
39
40 def test_varargs0_kw(self):
41 self.assertRaises(TypeError, {}.has_key, x=2)
42
43 def test_varargs1_kw(self):
44 self.assertRaises(TypeError, {}.has_key, x=2)
45
46 def test_varargs2_kw(self):
47 self.assertRaises(TypeError, {}.has_key, x=2, y=2)
48
49 def test_oldargs0_0(self):
50 {}.keys()
51
52 def test_oldargs0_1(self):
53 self.assertRaises(TypeError, {}.keys, 0)
54
55 def test_oldargs0_2(self):
56 self.assertRaises(TypeError, {}.keys, 0, 1)
57
58 def test_oldargs0_0_ext(self):
59 {}.keys(*())
60
61 def test_oldargs0_1_ext(self):
62 try:
63 {}.keys(*(0,))
64 except TypeError:
65 pass
66 else:
67 raise RuntimeError
68
69 def test_oldargs0_2_ext(self):
70 try:
71 {}.keys(*(1, 2))
72 except TypeError:
73 pass
74 else:
75 raise RuntimeError
76
77 def test_oldargs0_0_kw(self):
78 try:
79 {}.keys(x=2)
80 except TypeError:
81 pass
82 else:
83 raise RuntimeError
84
85 def test_oldargs0_1_kw(self):
86 self.assertRaises(TypeError, {}.keys, x=2)
87
88 def test_oldargs0_2_kw(self):
89 self.assertRaises(TypeError, {}.keys, x=2, y=2)
90
91 def test_oldargs1_0(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000092 self.assertRaises(TypeError, [].count)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000093
94 def test_oldargs1_1(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000095 [].count(1)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000096
97 def test_oldargs1_2(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000098 self.assertRaises(TypeError, [].count, 1, 2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000099
100 def test_oldargs1_0_ext(self):
101 try:
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000102 [].count(*())
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000103 except TypeError:
104 pass
105 else:
106 raise RuntimeError
107
108 def test_oldargs1_1_ext(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000109 [].count(*(1,))
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000110
111 def test_oldargs1_2_ext(self):
112 try:
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000113 [].count(*(1, 2))
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000114 except TypeError:
115 pass
116 else:
117 raise RuntimeError
118
119 def test_oldargs1_0_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000120 self.assertRaises(TypeError, [].count, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000121
122 def test_oldargs1_1_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000123 self.assertRaises(TypeError, [].count, {}, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000124
125 def test_oldargs1_2_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000126 self.assertRaises(TypeError, [].count, x=2, y=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000127
Fred Drake2e2be372001-09-20 21:33:42 +0000128
129def test_main():
Walter Dörwald21d3a322003-05-01 17:45:56 +0000130 test_support.run_unittest(CFunctionCalls)
Fred Drake2e2be372001-09-20 21:33:42 +0000131
132
133if __name__ == "__main__":
134 test_main()