blob: f3c7c8c394f90573b3fea9fb4b3b43bb3d587600 [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):
15 {}.has_key(0)
16
17 def test_varargs2(self):
18 self.assertRaises(TypeError, {}.has_key, 0, 1)
19
20 def test_varargs0_ext(self):
21 try:
22 {}.has_key(*())
23 except TypeError:
24 pass
25
26 def test_varargs1_ext(self):
27 {}.has_key(*(0,))
28
29 def test_varargs2_ext(self):
30 try:
31 {}.has_key(*(1, 2))
32 except TypeError:
33 pass
34 else:
35 raise RuntimeError
36
37 def test_varargs0_kw(self):
38 self.assertRaises(TypeError, {}.has_key, x=2)
39
40 def test_varargs1_kw(self):
41 self.assertRaises(TypeError, {}.has_key, x=2)
42
43 def test_varargs2_kw(self):
44 self.assertRaises(TypeError, {}.has_key, x=2, y=2)
45
46 def test_oldargs0_0(self):
47 {}.keys()
48
49 def test_oldargs0_1(self):
50 self.assertRaises(TypeError, {}.keys, 0)
51
52 def test_oldargs0_2(self):
53 self.assertRaises(TypeError, {}.keys, 0, 1)
54
55 def test_oldargs0_0_ext(self):
56 {}.keys(*())
57
58 def test_oldargs0_1_ext(self):
59 try:
60 {}.keys(*(0,))
61 except TypeError:
62 pass
63 else:
64 raise RuntimeError
65
66 def test_oldargs0_2_ext(self):
67 try:
68 {}.keys(*(1, 2))
69 except TypeError:
70 pass
71 else:
72 raise RuntimeError
73
74 def test_oldargs0_0_kw(self):
75 try:
76 {}.keys(x=2)
77 except TypeError:
78 pass
79 else:
80 raise RuntimeError
81
82 def test_oldargs0_1_kw(self):
83 self.assertRaises(TypeError, {}.keys, x=2)
84
85 def test_oldargs0_2_kw(self):
86 self.assertRaises(TypeError, {}.keys, x=2, y=2)
87
88 def test_oldargs1_0(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000089 self.assertRaises(TypeError, [].count)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000090
91 def test_oldargs1_1(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000092 [].count(1)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000093
94 def test_oldargs1_2(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +000095 self.assertRaises(TypeError, [].count, 1, 2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000096
97 def test_oldargs1_0_ext(self):
98 try:
Raymond Hettinger31017ae2004-03-04 08:25:44 +000099 [].count(*())
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000100 except TypeError:
101 pass
102 else:
103 raise RuntimeError
104
105 def test_oldargs1_1_ext(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000106 [].count(*(1,))
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000107
108 def test_oldargs1_2_ext(self):
109 try:
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000110 [].count(*(1, 2))
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000111 except TypeError:
112 pass
113 else:
114 raise RuntimeError
115
116 def test_oldargs1_0_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000117 self.assertRaises(TypeError, [].count, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000118
119 def test_oldargs1_1_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_2_kw(self):
Raymond Hettinger31017ae2004-03-04 08:25:44 +0000123 self.assertRaises(TypeError, [].count, x=2, y=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +0000124
Fred Drake2e2be372001-09-20 21:33:42 +0000125
126def test_main():
Walter Dörwald21d3a322003-05-01 17:45:56 +0000127 test_support.run_unittest(CFunctionCalls)
Fred Drake2e2be372001-09-20 21:33:42 +0000128
129
130if __name__ == "__main__":
131 test_main()