blob: 978f67400c3e206945bcea2a444d1b6e06b2e862 [file] [log] [blame]
Guido van Rossum3bead091992-01-27 17:00:37 +00001# Python test set -- part 4a, built-in functions a-m
2
3from test_support import *
4
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
26print 'apply'
27def f0(*args):
Guido van Rossum27d445f1998-08-10 20:12:34 +000028 if args != (): raise TestFailed, 'f0 called with ' + `args`
Guido van Rossum3bead091992-01-27 17:00:37 +000029def f1(a1):
Guido van Rossum27d445f1998-08-10 20:12:34 +000030 if a1 != 1: raise TestFailed, 'f1 called with ' + `a1`
Guido van Rossum3bead091992-01-27 17:00:37 +000031def f2(a1, a2):
Guido van Rossum27d445f1998-08-10 20:12:34 +000032 if a1 != 1 or a2 != 2:
33 raise TestFailed, 'f2 called with ' + `a1, a2`
Guido van Rossum3bead091992-01-27 17:00:37 +000034def f3(a1, a2, a3):
Guido van Rossum27d445f1998-08-10 20:12:34 +000035 if a1 != 1 or a2 != 2 or a3 != 3:
36 raise TestFailed, 'f3 called with ' + `a1, a2, a3`
Guido van Rossum3bead091992-01-27 17:00:37 +000037apply(f0, ())
38apply(f1, (1,))
39apply(f2, (1, 2))
40apply(f3, (1, 2, 3))
41
Fred Drake1a7aab72001-01-04 22:33:02 +000042# A PyCFunction that takes only positional parameters should allow an
43# empty keyword dictionary to pass without a complaint, but raise a
44# TypeError if the dictionary is non-empty.
45apply(id, (1,), {})
46try:
47 apply(id, (1,), {"foo": 1})
48except TypeError:
49 pass
50else:
51 raise TestFailed, 'expected TypeError; no exception raised'
52
Guido van Rossume23b62f1994-11-10 22:25:26 +000053print 'callable'
54if not callable(len):raise TestFailed, 'callable(len)'
55def f(): pass
56if not callable(f): raise TestFailed, 'callable(f)'
57class C:
Guido van Rossum27d445f1998-08-10 20:12:34 +000058 def meth(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000059if not callable(C): raise TestFailed, 'callable(C)'
60x = C()
61if not callable(x.meth): raise TestFailed, 'callable(x.meth)'
62if callable(x): raise TestFailed, 'callable(x)'
63class D(C):
Guido van Rossum27d445f1998-08-10 20:12:34 +000064 def __call__(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000065y = D()
66if not callable(y): raise TestFailed, 'callable(y)'
Jeremy Hylton5ab36612001-01-03 23:53:31 +000067y()
Guido van Rossume23b62f1994-11-10 22:25:26 +000068
Guido van Rossum3bead091992-01-27 17:00:37 +000069print 'chr'
Fred Drake132dce22000-12-12 23:11:42 +000070if chr(32) != ' ': raise TestFailed, 'chr(32)'
71if chr(65) != 'A': raise TestFailed, 'chr(65)'
72if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum3bead091992-01-27 17:00:37 +000073
Neil Schemenauer38f02232001-01-04 01:33:41 +000074# cmp
Guido van Rossum85f18201992-11-27 22:53:50 +000075print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000076if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
77if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
78if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000079# verify that circular objects are handled
80a = []; a.append(a)
81b = []; b.append(b)
82from UserList import UserList
83c = UserList(); c.append(c)
84if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
85if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
86if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
87if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000088# okay, now break the cycles
89a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000090
91print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000092if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +000093if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000094if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000095
Guido van Rossume23b62f1994-11-10 22:25:26 +000096print 'compile'
97compile('print 1\n', '', 'exec')
98
Guido van Rossumdddf7a61997-03-31 17:13:17 +000099print 'complex'
Fred Drake132dce22000-12-12 23:11:42 +0000100if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
101if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
102if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
103if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
104if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
105if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
106if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
107if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
108if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
109if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
110if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
111if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
112if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
113if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
114if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
115if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
116if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
117if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
118if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
119if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
120if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
121if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000122if have_unicode:
123 if complex(unicode(" 3.14+J ")) != 3.14+1j:
124 raise TestFailed, 'complex(u" 3.14+J )"'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000125class Z:
126 def __complex__(self): return 3.14j
127z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000128if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000129
Guido van Rossume23b62f1994-11-10 22:25:26 +0000130print 'delattr'
131import sys
132sys.spam = 1
133delattr(sys, 'spam')
134
Guido van Rossum3bead091992-01-27 17:00:37 +0000135print 'dir'
136x = 1
137if 'x' not in dir(): raise TestFailed, 'dir()'
138import sys
139if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
140
141print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000142if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
143if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
144if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
145if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000146#
Fred Drake132dce22000-12-12 23:11:42 +0000147if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
148if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
149if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
150if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000151#
Fred Drake132dce22000-12-12 23:11:42 +0000152if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
153if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
154if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
155if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000156#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000157if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000158 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000159if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000160 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000161if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000162 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000163if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000164 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000165
166print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000167if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
168if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000169globals = {'a': 1, 'b': 2}
170locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000171if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000172 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000173if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000174 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000175if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000176 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000177if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000178 raise TestFailed, "eval(4)"
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000179if have_unicode:
180 if eval(unicode('1+1')) != 2: raise TestFailed, 'eval(u\'1+1\')'
181 if eval(unicode(' 1+1\n')) != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000182globals = {'a': 1, 'b': 2}
183locals = {'b': 200, 'c': 300}
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000184if have_unicode:
185 if eval(unicode('a'), globals) != 1:
186 raise TestFailed, "eval(1) == %s" % eval(unicode('a'), globals)
187 if eval(unicode('a'), globals, locals) != 1:
188 raise TestFailed, "eval(2)"
189 if eval(unicode('b'), globals, locals) != 200:
190 raise TestFailed, "eval(3)"
191 if eval(unicode('c'), globals, locals) != 300:
192 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000193
Guido van Rossum85f18201992-11-27 22:53:50 +0000194print 'execfile'
195z = 0
196f = open(TESTFN, 'w')
197f.write('z = z+1\n')
198f.write('z = z*2\n')
199f.close()
200execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000201if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000202globals['z'] = 0
203execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000204if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000205locals['z'] = 0
206execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000207if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000208unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000209
Guido van Rossume65cce51993-11-08 15:05:21 +0000210print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000211if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000212 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000213if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000214 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000215if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000216 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000217class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000218 def __init__(self, max):
219 self.max = max
220 self.sofar = []
221 def __len__(self): return len(self.sofar)
222 def __getitem__(self, i):
223 if not 0 <= i < self.max: raise IndexError
224 n = len(self.sofar)
225 while n <= i:
226 self.sofar.append(n*n)
227 n = n+1
228 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000229if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000230 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000231if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000232 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000233class StrSquares:
234 def __init__(self, max):
235 self.max = max
236 self.sofar = []
237 def __len__(self):
238 return len(self.sofar)
239 def __getitem__(self, i):
240 if not 0 <= i < self.max:
241 raise IndexError
242 n = len(self.sofar)
243 while n <= i:
244 self.sofar.append(str(n*n))
245 n = n+1
246 return self.sofar[i]
247def identity(item):
248 return 1
249filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000250
Guido van Rossum3bead091992-01-27 17:00:37 +0000251print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000252if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
253if float(314) != 314.0: raise TestFailed, 'float(314)'
254if float(314L) != 314.0: raise TestFailed, 'float(314L)'
255if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000256if have_unicode:
257 if float(unicode(" 3.14 ")) != 3.14:
258 raise TestFailed, 'float(u" 3.14 ")'
Martin v. Löwis10d72552001-08-17 22:08:34 +0000259 if float(unicode(" \u0663.\u0661\u0664 ",'raw-unicode-escape')) != 3.14:
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000260 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000261
262print 'getattr'
263import sys
264if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000265try:
266 getattr(sys, 1)
267except TypeError:
268 pass
269else:
270 raise TestFailed, "getattr(sys, 1) should raise an exception"
271try:
272 getattr(sys, 1, "foo")
273except TypeError:
274 pass
275else:
276 raise TestFailed, 'getattr(sys, 1, "foo") should raise an exception'
Guido van Rossum3bead091992-01-27 17:00:37 +0000277
Guido van Rossume23b62f1994-11-10 22:25:26 +0000278print 'hasattr'
279import sys
280if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000281try:
282 hasattr(sys, 1)
283except TypeError:
284 pass
285else:
286 raise TestFailed, "hasattr(sys, 1) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000287
288print 'hash'
289hash(None)
290if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
291hash('spam')
292hash((0,1,2,3))
293def f(): pass
Guido van Rossum0c6614c2001-01-18 23:36:14 +0000294try: hash([])
295except TypeError: pass
296else: raise TestFailed, "hash([]) should raise an exception"
297try: hash({})
298except TypeError: pass
299else: raise TestFailed, "hash({}) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000300
Guido van Rossum3bead091992-01-27 17:00:37 +0000301print 'hex'
302if hex(16) != '0x10': raise TestFailed, 'hex(16)'
303if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000304if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
305if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
306 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000307if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
308
Guido van Rossume23b62f1994-11-10 22:25:26 +0000309print 'id'
310id(None)
311id(1)
312id(1L)
313id(1.0)
314id('spam')
315id((0,1,2,3))
316id([0,1,2,3])
317id({'spam': 1, 'eggs': 2, 'ham': 3})
318
Guido van Rossum3bead091992-01-27 17:00:37 +0000319# Test input() later, together with raw_input
320
321print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000322if int(314) != 314: raise TestFailed, 'int(314)'
323if int(3.14) != 3: raise TestFailed, 'int(3.14)'
324if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000325# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000326if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
327if int(3.9) != 3: raise TestFailed, 'int(3.9)'
328if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
329if int(3.5) != 3: raise TestFailed, 'int(3.5)'
330if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000331# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000332if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000333if have_unicode:
334 if int(unicode("10"),16) != 16L:
335 raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000336# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000337L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000338 ('0', 0),
339 ('1', 1),
340 ('9', 9),
341 ('10', 10),
342 ('99', 99),
343 ('100', 100),
344 ('314', 314),
345 (' 314', 314),
346 ('314 ', 314),
347 (' \t\t 314 \t\t ', 314),
348 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000349 (' 1x', ValueError),
350 (' 1 ', 1),
351 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000352 ('', ValueError),
353 (' ', ValueError),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000354 (' \t\t ', ValueError)
355]
356if have_unicode:
357 L += [
358 (unicode('0'), 0),
359 (unicode('1'), 1),
360 (unicode('9'), 9),
361 (unicode('10'), 10),
362 (unicode('99'), 99),
363 (unicode('100'), 100),
364 (unicode('314'), 314),
365 (unicode(' 314'), 314),
Martin v. Löwis10d72552001-08-17 22:08:34 +0000366 (unicode('\u0663\u0661\u0664 ','raw-unicode-escape'), 314),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000367 (unicode(' \t\t 314 \t\t '), 314),
368 (unicode(' 1x'), ValueError),
369 (unicode(' 1 '), 1),
370 (unicode(' 1\02 '), ValueError),
371 (unicode(''), ValueError),
372 (unicode(' '), ValueError),
373 (unicode(' \t\t '), ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000374]
375for s, v in L:
376 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000377 for prefix in "", " ", "\t", " \t\t ":
378 ss = prefix + sign + s
379 vv = v
380 if sign == "-" and v is not ValueError:
381 vv = -v
382 try:
383 if int(ss) != vv:
384 raise TestFailed, "int(%s)" % `ss`
385 except v:
386 pass
387 except ValueError, e:
388 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000389s = `-1-sys.maxint`
390if int(s)+1 != -sys.maxint:
391 raise TestFailed, "int(%s)" % `s`
392try:
393 int(s[1:])
394except ValueError:
395 pass
396else:
397 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Tim Peters7321ec42001-07-26 20:02:17 +0000398try:
399 int(1e100)
400except OverflowError:
401 pass
402else:
403 raise TestFailed("int(1e100) expected OverflowError")
404try:
405 int(-1e100)
406except OverflowError:
407 pass
408else:
409 raise TestFailed("int(-1e100) expected OverflowError")
410
Guido van Rossum3bead091992-01-27 17:00:37 +0000411
Tim Peters1dad6a82001-06-18 19:21:11 +0000412# SF bug 434186: 0x80000000/2 != 0x80000000>>1.
413# Worked by accident in Windows release build, but failed in debug build.
414# Failed in all Linux builds.
415x = -1-sys.maxint
Guido van Rossum54e54c62001-09-04 19:14:14 +0000416if x >> 1 != x//2:
Tim Peters1dad6a82001-06-18 19:21:11 +0000417 raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")
418
Barry Warsawd5430771997-08-22 21:27:03 +0000419print 'isinstance'
420class C:
421 pass
422class D(C):
423 pass
424class E:
425 pass
426c = C()
427d = D()
428e = E()
429if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
430if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
431if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
432if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
433if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
434try:
435 isinstance(E, 'foo')
436 raise TestFailed, 'isinstance(E, "foo")'
437except TypeError:
438 pass
439
440print 'issubclass'
441if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
442if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
443if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
444try:
445 issubclass('foo', E)
446 raise TestFailed, 'issubclass("foo", E)'
447except TypeError:
448 pass
449try:
450 issubclass(E, 'foo')
451 raise TestFailed, 'issubclass(E, "foo")'
452except TypeError:
453 pass
454
Guido van Rossum3bead091992-01-27 17:00:37 +0000455print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000456if len('123') != 3: raise TestFailed, 'len(\'123\')'
457if len(()) != 0: raise TestFailed, 'len(())'
458if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
459if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
460if len({}) != 0: raise TestFailed, 'len({})'
461if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000462
463print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000464if long(314) != 314L: raise TestFailed, 'long(314)'
465if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
466if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000467# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000468if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
469if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
470if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
471if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
472if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
473if long("-3") != -3L: raise TestFailed, 'long("-3")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000474if have_unicode:
475 if long(unicode("-3")) != -3L:
476 raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000477# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000478if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000479if have_unicode:
480 if long(unicode("10"),16) != 16L:
481 raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000482# Check conversions from string (same test set as for int(), and then some)
483LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000484 ('1' + '0'*20, 10L**20),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000485 ('1' + '0'*100, 10L**100)
486]
487if have_unicode:
488 L+=[
489 (unicode('1') + unicode('0')*20, 10L**20),
490 (unicode('1') + unicode('0')*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000491]
492for s, v in L + LL:
493 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000494 for prefix in "", " ", "\t", " \t\t ":
495 ss = prefix + sign + s
496 vv = v
497 if sign == "-" and v is not ValueError:
498 vv = -v
499 try:
500 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000501 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000502 except v:
503 pass
504 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000505 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000506
Guido van Rossume65cce51993-11-08 15:05:21 +0000507print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000508if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000509 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000510if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000511 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
512 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000513if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000514 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000515if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000516 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000517try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000518 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000519except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000520 def sqrt(x):
521 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000522if 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 +0000523 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000524if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000525 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000526def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000527 accu = 0
528 for i in v: accu = accu + i
529 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000530if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000531 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000532if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000533 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000534if 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 +0000535 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000536if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000537 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000538if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000539 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000540if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000541 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum7f9b5e02001-01-22 19:30:07 +0000542if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000543 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000544
Guido van Rossum3bead091992-01-27 17:00:37 +0000545print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000546if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
547if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
548if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
549if 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 +0000550#
Fred Drake132dce22000-12-12 23:11:42 +0000551if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
552if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
553if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000554
555print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000556if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
557if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
558if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
559if 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 +0000560#
Fred Drake132dce22000-12-12 23:11:42 +0000561if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
562if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
563if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'