blob: 37e7cdf19692dda82450da296f23080336886a11 [file] [log] [blame]
Guido van Rossum3bead091992-01-27 17:00:37 +00001# Python test set -- part 4a, built-in functions a-m
2
Barry Warsaw408b6d32002-07-30 23:27:12 +00003from test.test_support import TestFailed, fcmp, have_unicode, TESTFN, unlink
Guido van Rossum3bead091992-01-27 17:00:37 +00004
Guido van Rossumeecf0351994-12-30 17:17:46 +00005print '__import__'
6__import__('sys')
Barry Warsaw3a9d0612000-09-01 06:53:52 +00007__import__('time')
Guido van Rossumeecf0351994-12-30 17:17:46 +00008__import__('string')
9try: __import__('spamspam')
10except ImportError: pass
11else: raise TestFailed, "__import__('spamspam') should fail"
12
Guido van Rossum3bead091992-01-27 17:00:37 +000013print 'abs'
Fred Drake132dce22000-12-12 23:11:42 +000014if abs(0) != 0: raise TestFailed, 'abs(0)'
15if abs(1234) != 1234: raise TestFailed, 'abs(1234)'
16if abs(-1234) != 1234: raise TestFailed, 'abs(-1234)'
Guido van Rossum3bead091992-01-27 17:00:37 +000017#
Fred Drake132dce22000-12-12 23:11:42 +000018if abs(0.0) != 0.0: raise TestFailed, 'abs(0.0)'
19if abs(3.14) != 3.14: raise TestFailed, 'abs(3.14)'
20if abs(-3.14) != 3.14: raise TestFailed, 'abs(-3.14)'
Guido van Rossum3bead091992-01-27 17:00:37 +000021#
Fred Drake132dce22000-12-12 23:11:42 +000022if abs(0L) != 0L: raise TestFailed, 'abs(0L)'
23if abs(1234L) != 1234L: raise TestFailed, 'abs(1234L)'
24if abs(-1234L) != 1234L: raise TestFailed, 'abs(-1234L)'
Guido van Rossum3bead091992-01-27 17:00:37 +000025
Guido van Rossum29d26062001-12-11 04:37:34 +000026try: abs('a')
27except TypeError: pass
28else: raise TestFailed, 'abs("a")'
29
Guido van Rossum3bead091992-01-27 17:00:37 +000030print 'apply'
31def f0(*args):
Guido van Rossum27d445f1998-08-10 20:12:34 +000032 if args != (): raise TestFailed, 'f0 called with ' + `args`
Guido van Rossum3bead091992-01-27 17:00:37 +000033def f1(a1):
Guido van Rossum27d445f1998-08-10 20:12:34 +000034 if a1 != 1: raise TestFailed, 'f1 called with ' + `a1`
Guido van Rossum3bead091992-01-27 17:00:37 +000035def f2(a1, a2):
Guido van Rossum27d445f1998-08-10 20:12:34 +000036 if a1 != 1 or a2 != 2:
37 raise TestFailed, 'f2 called with ' + `a1, a2`
Guido van Rossum3bead091992-01-27 17:00:37 +000038def f3(a1, a2, a3):
Guido van Rossum27d445f1998-08-10 20:12:34 +000039 if a1 != 1 or a2 != 2 or a3 != 3:
40 raise TestFailed, 'f3 called with ' + `a1, a2, a3`
Guido van Rossum3bead091992-01-27 17:00:37 +000041apply(f0, ())
42apply(f1, (1,))
43apply(f2, (1, 2))
44apply(f3, (1, 2, 3))
45
Fred Drake1a7aab72001-01-04 22:33:02 +000046# A PyCFunction that takes only positional parameters should allow an
47# empty keyword dictionary to pass without a complaint, but raise a
48# TypeError if the dictionary is non-empty.
49apply(id, (1,), {})
50try:
51 apply(id, (1,), {"foo": 1})
52except TypeError:
53 pass
54else:
55 raise TestFailed, 'expected TypeError; no exception raised'
56
Guido van Rossume23b62f1994-11-10 22:25:26 +000057print 'callable'
58if not callable(len):raise TestFailed, 'callable(len)'
59def f(): pass
60if not callable(f): raise TestFailed, 'callable(f)'
61class C:
Guido van Rossum27d445f1998-08-10 20:12:34 +000062 def meth(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000063if not callable(C): raise TestFailed, 'callable(C)'
64x = C()
65if not callable(x.meth): raise TestFailed, 'callable(x.meth)'
66if callable(x): raise TestFailed, 'callable(x)'
67class D(C):
Guido van Rossum27d445f1998-08-10 20:12:34 +000068 def __call__(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000069y = D()
70if not callable(y): raise TestFailed, 'callable(y)'
Jeremy Hylton5ab36612001-01-03 23:53:31 +000071y()
Guido van Rossume23b62f1994-11-10 22:25:26 +000072
Guido van Rossum3bead091992-01-27 17:00:37 +000073print 'chr'
Fred Drake132dce22000-12-12 23:11:42 +000074if chr(32) != ' ': raise TestFailed, 'chr(32)'
75if chr(65) != 'A': raise TestFailed, 'chr(65)'
76if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum3bead091992-01-27 17:00:37 +000077
Neil Schemenauer38f02232001-01-04 01:33:41 +000078# cmp
Guido van Rossum85f18201992-11-27 22:53:50 +000079print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000080if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
81if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
82if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000083# verify that circular objects are handled
84a = []; a.append(a)
85b = []; b.append(b)
86from UserList import UserList
87c = UserList(); c.append(c)
88if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
89if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
90if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
91if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000092# okay, now break the cycles
93a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000094
95print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000096if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +000097if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000098if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000099
Guido van Rossume23b62f1994-11-10 22:25:26 +0000100print 'compile'
101compile('print 1\n', '', 'exec')
102
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000103print 'complex'
Raymond Hettinger478d47a2002-06-06 15:45:38 +0000104class OS:
Tim Petersc411dba2002-07-16 21:35:23 +0000105 def __complex__(self): return 1+10j
Raymond Hettinger478d47a2002-06-06 15:45:38 +0000106class NS(object):
Tim Petersc411dba2002-07-16 21:35:23 +0000107 def __complex__(self): return 1+10j
Raymond Hettinger478d47a2002-06-06 15:45:38 +0000108if complex(OS()) != 1+10j: raise TestFailed, '__complex__ in old style class'
109if complex(NS()) != 1+10j: raise TestFailed, '__complex__ in new style class'
110if complex("1+10j") != 1+10j: raise TestFailed, 'complex("1+10j")'
111if complex(10) != 10+0j: raise TestFailed, 'complex(10)'
112if complex(10.0) != 10+0j: raise TestFailed, 'complex(10.0)'
113if complex(10L) != 10+0j: raise TestFailed, 'complex(10L)'
114if complex(10+0j) != 10+0j: raise TestFailed, 'complex(10+0j)'
Fred Drake132dce22000-12-12 23:11:42 +0000115if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
116if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
117if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
118if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
119if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
120if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
121if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
122if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
123if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
124if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
125if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
126if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
127if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
128if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
129if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
130if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
131if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
132if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
133if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
134if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
135if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
Fred Drake526c7a02001-12-13 19:52:22 +0000136if complex("1") != 1+0j: raise TestFailed, 'complex("1")'
137if complex("1j") != 1j: raise TestFailed, 'complex("1j")'
Tim Peters077f2712002-04-14 22:04:03 +0000138
Fred Drake526c7a02001-12-13 19:52:22 +0000139try: complex("1", "1")
140except TypeError: pass
141else: raise TestFailed, 'complex("1", "1")'
Tim Peters077f2712002-04-14 22:04:03 +0000142
Fred Drake526c7a02001-12-13 19:52:22 +0000143try: complex(1, "1")
144except TypeError: pass
145else: raise TestFailed, 'complex(1, "1")'
Tim Peters077f2712002-04-14 22:04:03 +0000146
Fred Drake132dce22000-12-12 23:11:42 +0000147if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000148if have_unicode:
149 if complex(unicode(" 3.14+J ")) != 3.14+1j:
150 raise TestFailed, 'complex(u" 3.14+J )"'
Tim Peters077f2712002-04-14 22:04:03 +0000151
152# SF bug 543840: complex(string) accepts strings with \0
153# Fixed in 2.3.
154try:
155 complex('1+1j\0j')
156except ValueError:
157 pass
158else:
159 raise TestFailed("complex('1+1j\0j') should have raised ValueError")
160
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000161class Z:
162 def __complex__(self): return 3.14j
163z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000164if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000165
Guido van Rossume23b62f1994-11-10 22:25:26 +0000166print 'delattr'
167import sys
168sys.spam = 1
169delattr(sys, 'spam')
170
Guido van Rossum3bead091992-01-27 17:00:37 +0000171print 'dir'
172x = 1
173if 'x' not in dir(): raise TestFailed, 'dir()'
174import sys
175if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
176
177print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000178if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
179if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
180if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
181if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000182#
Fred Drake132dce22000-12-12 23:11:42 +0000183if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
184if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
185if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
186if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000187#
Fred Drake132dce22000-12-12 23:11:42 +0000188if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
189if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
190if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
191if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000192#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000193if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000194 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000195if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000196 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000197if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000198 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000199if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000200 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000201
202print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000203if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
204if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000205globals = {'a': 1, 'b': 2}
206locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000207if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000208 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000209if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000210 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000211if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000212 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000213if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000214 raise TestFailed, "eval(4)"
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000215if have_unicode:
216 if eval(unicode('1+1')) != 2: raise TestFailed, 'eval(u\'1+1\')'
217 if eval(unicode(' 1+1\n')) != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000218globals = {'a': 1, 'b': 2}
219locals = {'b': 200, 'c': 300}
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000220if have_unicode:
221 if eval(unicode('a'), globals) != 1:
222 raise TestFailed, "eval(1) == %s" % eval(unicode('a'), globals)
223 if eval(unicode('a'), globals, locals) != 1:
224 raise TestFailed, "eval(2)"
225 if eval(unicode('b'), globals, locals) != 200:
226 raise TestFailed, "eval(3)"
227 if eval(unicode('c'), globals, locals) != 300:
228 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000229
Guido van Rossum85f18201992-11-27 22:53:50 +0000230print 'execfile'
231z = 0
232f = open(TESTFN, 'w')
233f.write('z = z+1\n')
234f.write('z = z*2\n')
235f.close()
236execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000237if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000238globals['z'] = 0
239execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000240if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000241locals['z'] = 0
242execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000243if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000244unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000245
Guido van Rossume65cce51993-11-08 15:05:21 +0000246print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000247if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000248 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000249if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000250 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000251if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000252 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000253class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000254 def __init__(self, max):
255 self.max = max
256 self.sofar = []
257 def __len__(self): return len(self.sofar)
258 def __getitem__(self, i):
259 if not 0 <= i < self.max: raise IndexError
260 n = len(self.sofar)
261 while n <= i:
262 self.sofar.append(n*n)
263 n = n+1
264 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000265if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000266 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000267if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000268 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000269class StrSquares:
270 def __init__(self, max):
271 self.max = max
272 self.sofar = []
273 def __len__(self):
274 return len(self.sofar)
275 def __getitem__(self, i):
276 if not 0 <= i < self.max:
277 raise IndexError
278 n = len(self.sofar)
279 while n <= i:
280 self.sofar.append(str(n*n))
281 n = n+1
282 return self.sofar[i]
283def identity(item):
284 return 1
285filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000286
Guido van Rossum3bead091992-01-27 17:00:37 +0000287print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000288if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
289if float(314) != 314.0: raise TestFailed, 'float(314)'
290if float(314L) != 314.0: raise TestFailed, 'float(314L)'
291if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000292if have_unicode:
293 if float(unicode(" 3.14 ")) != 3.14:
294 raise TestFailed, 'float(u" 3.14 ")'
Martin v. Löwis10d72552001-08-17 22:08:34 +0000295 if float(unicode(" \u0663.\u0661\u0664 ",'raw-unicode-escape')) != 3.14:
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000296 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000297
298print 'getattr'
299import sys
300if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000301try:
302 getattr(sys, 1)
303except TypeError:
304 pass
305else:
306 raise TestFailed, "getattr(sys, 1) should raise an exception"
307try:
308 getattr(sys, 1, "foo")
309except TypeError:
310 pass
311else:
312 raise TestFailed, 'getattr(sys, 1, "foo") should raise an exception'
Guido van Rossum3bead091992-01-27 17:00:37 +0000313
Guido van Rossume23b62f1994-11-10 22:25:26 +0000314print 'hasattr'
315import sys
316if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000317try:
318 hasattr(sys, 1)
319except TypeError:
320 pass
321else:
322 raise TestFailed, "hasattr(sys, 1) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000323
324print 'hash'
325hash(None)
326if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
327hash('spam')
328hash((0,1,2,3))
329def f(): pass
Guido van Rossum0c6614c2001-01-18 23:36:14 +0000330try: hash([])
331except TypeError: pass
332else: raise TestFailed, "hash([]) should raise an exception"
333try: hash({})
334except TypeError: pass
335else: raise TestFailed, "hash({}) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000336
Guido van Rossum3bead091992-01-27 17:00:37 +0000337print 'hex'
338if hex(16) != '0x10': raise TestFailed, 'hex(16)'
339if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000340if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
341if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
342 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000343if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
344
Guido van Rossume23b62f1994-11-10 22:25:26 +0000345print 'id'
346id(None)
347id(1)
348id(1L)
349id(1.0)
350id('spam')
351id((0,1,2,3))
352id([0,1,2,3])
353id({'spam': 1, 'eggs': 2, 'ham': 3})
354
Guido van Rossum3bead091992-01-27 17:00:37 +0000355# Test input() later, together with raw_input
356
357print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000358if int(314) != 314: raise TestFailed, 'int(314)'
359if int(3.14) != 3: raise TestFailed, 'int(3.14)'
360if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000361# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000362if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
363if int(3.9) != 3: raise TestFailed, 'int(3.9)'
364if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
365if int(3.5) != 3: raise TestFailed, 'int(3.5)'
366if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000367# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000368if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000369if have_unicode:
370 if int(unicode("10"),16) != 16L:
371 raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000372# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000373L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000374 ('0', 0),
375 ('1', 1),
376 ('9', 9),
377 ('10', 10),
378 ('99', 99),
379 ('100', 100),
380 ('314', 314),
381 (' 314', 314),
382 ('314 ', 314),
383 (' \t\t 314 \t\t ', 314),
384 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000385 (' 1x', ValueError),
386 (' 1 ', 1),
387 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000388 ('', ValueError),
389 (' ', ValueError),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000390 (' \t\t ', ValueError)
391]
392if have_unicode:
393 L += [
394 (unicode('0'), 0),
395 (unicode('1'), 1),
396 (unicode('9'), 9),
397 (unicode('10'), 10),
398 (unicode('99'), 99),
399 (unicode('100'), 100),
400 (unicode('314'), 314),
401 (unicode(' 314'), 314),
Martin v. Löwis10d72552001-08-17 22:08:34 +0000402 (unicode('\u0663\u0661\u0664 ','raw-unicode-escape'), 314),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000403 (unicode(' \t\t 314 \t\t '), 314),
404 (unicode(' 1x'), ValueError),
405 (unicode(' 1 '), 1),
406 (unicode(' 1\02 '), ValueError),
407 (unicode(''), ValueError),
408 (unicode(' '), ValueError),
409 (unicode(' \t\t '), ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000410]
411for s, v in L:
412 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000413 for prefix in "", " ", "\t", " \t\t ":
414 ss = prefix + sign + s
415 vv = v
416 if sign == "-" and v is not ValueError:
417 vv = -v
418 try:
419 if int(ss) != vv:
420 raise TestFailed, "int(%s)" % `ss`
421 except v:
422 pass
423 except ValueError, e:
424 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000425s = `-1-sys.maxint`
426if int(s)+1 != -sys.maxint:
427 raise TestFailed, "int(%s)" % `s`
428try:
429 int(s[1:])
430except ValueError:
431 pass
432else:
433 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Tim Peters7321ec42001-07-26 20:02:17 +0000434try:
435 int(1e100)
436except OverflowError:
437 pass
438else:
439 raise TestFailed("int(1e100) expected OverflowError")
440try:
441 int(-1e100)
442except OverflowError:
443 pass
444else:
445 raise TestFailed("int(-1e100) expected OverflowError")
446
Guido van Rossum3bead091992-01-27 17:00:37 +0000447
Tim Peters1dad6a82001-06-18 19:21:11 +0000448# SF bug 434186: 0x80000000/2 != 0x80000000>>1.
449# Worked by accident in Windows release build, but failed in debug build.
450# Failed in all Linux builds.
451x = -1-sys.maxint
Guido van Rossum54e54c62001-09-04 19:14:14 +0000452if x >> 1 != x//2:
Tim Peters1dad6a82001-06-18 19:21:11 +0000453 raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")
454
Guido van Rossum29d26062001-12-11 04:37:34 +0000455try: int('123\0')
456except ValueError: pass
457else: raise TestFailed("int('123\0') didn't raise exception")
458
Neal Norwitz32f41532001-12-29 00:35:20 +0000459try: int('53', 40)
460except ValueError: pass
461else: raise TestFailed("int('53', 40) didn't raise ValueError")
462
463try: int('1' * 512)
464except ValueError: pass
465else: raise TestFailed("int('1' * 512) didn't raise ValueError")
466
467try: int(1, 12)
468except TypeError: pass
469else: raise TestFailed("int(1, 12) didn't raise TypeError")
470
471if int('0123', 0) != 83:
472 raise TestFailed("int('0123', 0) != 83")
473
Barry Warsawd5430771997-08-22 21:27:03 +0000474print 'isinstance'
475class C:
476 pass
477class D(C):
478 pass
479class E:
480 pass
481c = C()
482d = D()
483e = E()
484if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
485if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
486if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
487if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
488if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
489try:
490 isinstance(E, 'foo')
491 raise TestFailed, 'isinstance(E, "foo")'
492except TypeError:
493 pass
494
495print 'issubclass'
496if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
497if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
498if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
499try:
500 issubclass('foo', E)
501 raise TestFailed, 'issubclass("foo", E)'
502except TypeError:
503 pass
504try:
505 issubclass(E, 'foo')
506 raise TestFailed, 'issubclass(E, "foo")'
507except TypeError:
508 pass
509
Guido van Rossum3bead091992-01-27 17:00:37 +0000510print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000511if len('123') != 3: raise TestFailed, 'len(\'123\')'
512if len(()) != 0: raise TestFailed, 'len(())'
513if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
514if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
515if len({}) != 0: raise TestFailed, 'len({})'
516if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000517
Guido van Rossum06ee2532002-02-26 22:39:23 +0000518print 'list'
519if list([]) != []: raise TestFailed, 'list([])'
520l0_3 = [0, 1, 2, 3]
521l0_3_bis = list(l0_3)
522if l0_3 != l0_3_bis or l0_3 is l0_3_bis: raise TestFailed, 'list([0, 1, 2, 3])'
523if list(()) != []: raise TestFailed, 'list(())'
524if list((0, 1, 2, 3)) != [0, 1, 2, 3]: raise TestFailed, 'list((0, 1, 2, 3))'
525if list('') != []: raise TestFailed, 'list('')'
526if list('spam') != ['s', 'p', 'a', 'm']: raise TestFailed, "list('spam')"
527
Neal Norwitzd4e5be52002-05-22 23:19:17 +0000528try:
529 # Verify clearing of bug #556025
530 # this assumes that the max data size (sys.maxint) == max address size
531 # this also assumes that the address size is at least 4 bytes
532 # with 8 byte addresses, the bug is not well tested
533 list(xrange(sys.maxint / 4))
534except MemoryError:
535 pass
536else:
537 raise TestFailed, 'list(xrange(sys.maxint / 4))'
538
Guido van Rossum3bead091992-01-27 17:00:37 +0000539print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000540if long(314) != 314L: raise TestFailed, 'long(314)'
541if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
542if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000543# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000544if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
545if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
546if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
547if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
548if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
549if long("-3") != -3L: raise TestFailed, 'long("-3")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000550if have_unicode:
551 if long(unicode("-3")) != -3L:
552 raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000553# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000554if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000555if have_unicode:
556 if long(unicode("10"),16) != 16L:
557 raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000558# Check conversions from string (same test set as for int(), and then some)
559LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000560 ('1' + '0'*20, 10L**20),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000561 ('1' + '0'*100, 10L**100)
562]
563if have_unicode:
564 L+=[
565 (unicode('1') + unicode('0')*20, 10L**20),
566 (unicode('1') + unicode('0')*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000567]
568for s, v in L + LL:
569 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000570 for prefix in "", " ", "\t", " \t\t ":
571 ss = prefix + sign + s
572 vv = v
573 if sign == "-" and v is not ValueError:
574 vv = -v
575 try:
576 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000577 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000578 except v:
579 pass
580 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000581 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000582
Guido van Rossum29d26062001-12-11 04:37:34 +0000583try: long('123\0')
584except ValueError: pass
585else: raise TestFailed("long('123\0') didn't raise exception")
586
Neal Norwitz32f41532001-12-29 00:35:20 +0000587try: long('53', 40)
588except ValueError: pass
589else: raise TestFailed("long('53', 40) didn't raise ValueError")
590
591try: long(1, 12)
592except TypeError: pass
593else: raise TestFailed("long(1, 12) didn't raise TypeError")
594
Guido van Rossume65cce51993-11-08 15:05:21 +0000595print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000596if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000597 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000598if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000599 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
600 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000601if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000602 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000603if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000604 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000605try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000606 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000607except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000608 def sqrt(x):
609 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000610if map(lambda x: map(sqrt,x), [[16, 4], [81, 9]]) != [[4.0, 2.0], [9.0, 3.0]]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000611 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000612if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000613 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000614def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000615 accu = 0
616 for i in v: accu = accu + i
617 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000618if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000619 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000620if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000621 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000622if map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0]) != [1+4+1, 3+9+1, 7+2+0]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000623 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000624if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000625 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000626if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000627 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000628if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000629 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum7f9b5e02001-01-22 19:30:07 +0000630if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000631 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000632
Guido van Rossum3bead091992-01-27 17:00:37 +0000633print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000634if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
635if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
636if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
637if max([1, 2, 3, 1, 2, 3]) != 3: raise TestFailed, 'max([1, 2, 3, 1, 2, 3])'
Guido van Rossum3bead091992-01-27 17:00:37 +0000638#
Fred Drake132dce22000-12-12 23:11:42 +0000639if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
640if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
641if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000642
643print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000644if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
645if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
646if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
647if min([1, 2, 3, 1, 2, 3]) != 1: raise TestFailed, 'min([1, 2, 3, 1, 2, 3])'
Guido van Rossum3bead091992-01-27 17:00:37 +0000648#
Fred Drake132dce22000-12-12 23:11:42 +0000649if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
650if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
651if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'