blob: c00ccbac85b2fda8c9e49183c1584569d203e34c [file] [log] [blame]
Jeremy Hyltonbea39472001-05-29 16:26:20 +00001import unittest
Benjamin Petersonee8712c2008-05-20 21:35:26 +00002from test import 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):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000012 self.assertRaises(TypeError, {}.__contains__)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000013
14 def test_varargs1(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000015 {}.__contains__(0)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000016
17 def test_varargs2(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000018 self.assertRaises(TypeError, {}.__contains__, 0, 1)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000019
20 def test_varargs0_ext(self):
21 try:
Guido van Rossume2b70bc2006-08-18 22:13:04 +000022 {}.__contains__(*())
Jeremy Hyltonbea39472001-05-29 16:26:20 +000023 except TypeError:
24 pass
25
26 def test_varargs1_ext(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000027 {}.__contains__(*(0,))
Jeremy Hyltonbea39472001-05-29 16:26:20 +000028
29 def test_varargs2_ext(self):
30 try:
Guido van Rossume2b70bc2006-08-18 22:13:04 +000031 {}.__contains__(*(1, 2))
Jeremy Hyltonbea39472001-05-29 16:26:20 +000032 except TypeError:
33 pass
34 else:
35 raise RuntimeError
36
37 def test_varargs0_kw(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000038 self.assertRaises(TypeError, {}.__contains__, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000039
40 def test_varargs1_kw(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000041 self.assertRaises(TypeError, {}.__contains__, x=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000042
43 def test_varargs2_kw(self):
Guido van Rossume2b70bc2006-08-18 22:13:04 +000044 self.assertRaises(TypeError, {}.__contains__, x=2, y=2)
Jeremy Hyltonbea39472001-05-29 16:26:20 +000045
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():
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000127 support.run_unittest(CFunctionCalls)
Fred Drake2e2be372001-09-20 21:33:42 +0000128
129
130if __name__ == "__main__":
131 test_main()