blob: 8adcbefa95132da600f591cfc7b26518c2a0cd3a [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
Guido van Rossume23b62f1994-11-10 22:25:26 +000042print 'callable'
43if not callable(len):raise TestFailed, 'callable(len)'
44def f(): pass
45if not callable(f): raise TestFailed, 'callable(f)'
46class C:
Guido van Rossum27d445f1998-08-10 20:12:34 +000047 def meth(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000048if not callable(C): raise TestFailed, 'callable(C)'
49x = C()
50if not callable(x.meth): raise TestFailed, 'callable(x.meth)'
51if callable(x): raise TestFailed, 'callable(x)'
52class D(C):
Guido van Rossum27d445f1998-08-10 20:12:34 +000053 def __call__(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000054y = D()
55if not callable(y): raise TestFailed, 'callable(y)'
56
Guido van Rossum3bead091992-01-27 17:00:37 +000057print 'chr'
Fred Drake132dce22000-12-12 23:11:42 +000058if chr(32) != ' ': raise TestFailed, 'chr(32)'
59if chr(65) != 'A': raise TestFailed, 'chr(65)'
60if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum3bead091992-01-27 17:00:37 +000061
Guido van Rossum85f18201992-11-27 22:53:50 +000062print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000063if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
64if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
65if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000066# verify that circular objects are handled
67a = []; a.append(a)
68b = []; b.append(b)
69from UserList import UserList
70c = UserList(); c.append(c)
71if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
72if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
73if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
74if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000075# okay, now break the cycles
76a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000077
78print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000079if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +000080if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000081if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000082
Guido van Rossume23b62f1994-11-10 22:25:26 +000083print 'compile'
84compile('print 1\n', '', 'exec')
85
Guido van Rossumdddf7a61997-03-31 17:13:17 +000086print 'complex'
Fred Drake132dce22000-12-12 23:11:42 +000087if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
88if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
89if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
90if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
91if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
92if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
93if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
94if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
95if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
96if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
97if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
98if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
99if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
100if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
101if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
102if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
103if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
104if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
105if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
106if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
107if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
108if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
109if complex(u" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(u" 3.14+J )"'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000110class Z:
111 def __complex__(self): return 3.14j
112z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000113if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000114
Guido van Rossume23b62f1994-11-10 22:25:26 +0000115print 'delattr'
116import sys
117sys.spam = 1
118delattr(sys, 'spam')
119
Guido van Rossum3bead091992-01-27 17:00:37 +0000120print 'dir'
121x = 1
122if 'x' not in dir(): raise TestFailed, 'dir()'
123import sys
124if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
125
126print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000127if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
128if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
129if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
130if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000131#
Fred Drake132dce22000-12-12 23:11:42 +0000132if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
133if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
134if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
135if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000136#
Fred Drake132dce22000-12-12 23:11:42 +0000137if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
138if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
139if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
140if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000141#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000142if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000143 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000144if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000145 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000146if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000147 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000148if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000149 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000150
151print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000152if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
153if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000154globals = {'a': 1, 'b': 2}
155locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000156if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000157 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000158if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000159 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000160if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000161 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000162if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000163 raise TestFailed, "eval(4)"
Fred Drake132dce22000-12-12 23:11:42 +0000164if eval(u'1+1') != 2: raise TestFailed, 'eval(u\'1+1\')'
165if eval(u' 1+1\n') != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000166globals = {'a': 1, 'b': 2}
167locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000168if eval(u'a', globals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000169 raise TestFailed, "eval(1) == %s" % eval(u'a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000170if eval(u'a', globals, locals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000171 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000172if eval(u'b', globals, locals) != 200:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000173 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000174if eval(u'c', globals, locals) != 300:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000175 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000176
Guido van Rossum85f18201992-11-27 22:53:50 +0000177print 'execfile'
178z = 0
179f = open(TESTFN, 'w')
180f.write('z = z+1\n')
181f.write('z = z*2\n')
182f.close()
183execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000184if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000185globals['z'] = 0
186execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000187if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000188locals['z'] = 0
189execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000190if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000191unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000192
Guido van Rossume65cce51993-11-08 15:05:21 +0000193print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000194if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000195 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000196if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000197 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000198if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000199 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000200class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000201 def __init__(self, max):
202 self.max = max
203 self.sofar = []
204 def __len__(self): return len(self.sofar)
205 def __getitem__(self, i):
206 if not 0 <= i < self.max: raise IndexError
207 n = len(self.sofar)
208 while n <= i:
209 self.sofar.append(n*n)
210 n = n+1
211 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000212if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000213 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000214if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000215 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000216class StrSquares:
217 def __init__(self, max):
218 self.max = max
219 self.sofar = []
220 def __len__(self):
221 return len(self.sofar)
222 def __getitem__(self, i):
223 if not 0 <= i < self.max:
224 raise IndexError
225 n = len(self.sofar)
226 while n <= i:
227 self.sofar.append(str(n*n))
228 n = n+1
229 return self.sofar[i]
230def identity(item):
231 return 1
232filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000233
Guido van Rossum3bead091992-01-27 17:00:37 +0000234print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000235if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
236if float(314) != 314.0: raise TestFailed, 'float(314)'
237if float(314L) != 314.0: raise TestFailed, 'float(314L)'
238if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
239if float(u" 3.14 ") != 3.14: raise TestFailed, 'float(u" 3.14 ")'
240if float(u" \u0663.\u0661\u0664 ") != 3.14:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000241 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000242
243print 'getattr'
244import sys
245if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
246
Guido van Rossume23b62f1994-11-10 22:25:26 +0000247print 'hasattr'
248import sys
249if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
250
251print 'hash'
252hash(None)
253if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
254hash('spam')
255hash((0,1,2,3))
256def f(): pass
257
Guido van Rossum3bead091992-01-27 17:00:37 +0000258print 'hex'
259if hex(16) != '0x10': raise TestFailed, 'hex(16)'
260if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000261if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
262if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
263 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000264if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
265
Guido van Rossume23b62f1994-11-10 22:25:26 +0000266print 'id'
267id(None)
268id(1)
269id(1L)
270id(1.0)
271id('spam')
272id((0,1,2,3))
273id([0,1,2,3])
274id({'spam': 1, 'eggs': 2, 'ham': 3})
275
Guido van Rossum3bead091992-01-27 17:00:37 +0000276# Test input() later, together with raw_input
277
278print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000279if int(314) != 314: raise TestFailed, 'int(314)'
280if int(3.14) != 3: raise TestFailed, 'int(3.14)'
281if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000282# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000283if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
284if int(3.9) != 3: raise TestFailed, 'int(3.9)'
285if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
286if int(3.5) != 3: raise TestFailed, 'int(3.5)'
287if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000288# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000289if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
290if int(u"10",16) != 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000291# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000292L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000293 ('0', 0),
294 ('1', 1),
295 ('9', 9),
296 ('10', 10),
297 ('99', 99),
298 ('100', 100),
299 ('314', 314),
300 (' 314', 314),
301 ('314 ', 314),
302 (' \t\t 314 \t\t ', 314),
303 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000304 (' 1x', ValueError),
305 (' 1 ', 1),
306 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000307 ('', ValueError),
308 (' ', ValueError),
309 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000310 (u'0', 0),
311 (u'1', 1),
312 (u'9', 9),
313 (u'10', 10),
314 (u'99', 99),
315 (u'100', 100),
316 (u'314', 314),
317 (u' 314', 314),
318 (u'\u0663\u0661\u0664 ', 314),
319 (u' \t\t 314 \t\t ', 314),
320 (u' 1x', ValueError),
321 (u' 1 ', 1),
322 (u' 1\02 ', ValueError),
323 (u'', ValueError),
324 (u' ', ValueError),
325 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000326]
327for s, v in L:
328 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000329 for prefix in "", " ", "\t", " \t\t ":
330 ss = prefix + sign + s
331 vv = v
332 if sign == "-" and v is not ValueError:
333 vv = -v
334 try:
335 if int(ss) != vv:
336 raise TestFailed, "int(%s)" % `ss`
337 except v:
338 pass
339 except ValueError, e:
340 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000341s = `-1-sys.maxint`
342if int(s)+1 != -sys.maxint:
343 raise TestFailed, "int(%s)" % `s`
344try:
345 int(s[1:])
346except ValueError:
347 pass
348else:
349 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000350
Barry Warsawd5430771997-08-22 21:27:03 +0000351print 'isinstance'
352class C:
353 pass
354class D(C):
355 pass
356class E:
357 pass
358c = C()
359d = D()
360e = E()
361if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
362if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
363if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
364if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
365if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
366try:
367 isinstance(E, 'foo')
368 raise TestFailed, 'isinstance(E, "foo")'
369except TypeError:
370 pass
371
372print 'issubclass'
373if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
374if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
375if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
376try:
377 issubclass('foo', E)
378 raise TestFailed, 'issubclass("foo", E)'
379except TypeError:
380 pass
381try:
382 issubclass(E, 'foo')
383 raise TestFailed, 'issubclass(E, "foo")'
384except TypeError:
385 pass
386
Guido van Rossum3bead091992-01-27 17:00:37 +0000387print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000388if len('123') != 3: raise TestFailed, 'len(\'123\')'
389if len(()) != 0: raise TestFailed, 'len(())'
390if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
391if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
392if len({}) != 0: raise TestFailed, 'len({})'
393if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000394
395print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000396if long(314) != 314L: raise TestFailed, 'long(314)'
397if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
398if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000399# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000400if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
401if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
402if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
403if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
404if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
405if long("-3") != -3L: raise TestFailed, 'long("-3")'
406if long(u"-3") != -3L: raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000407# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000408if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
409if long(u"10",16) != 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000410# Check conversions from string (same test set as for int(), and then some)
411LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000412 ('1' + '0'*20, 10L**20),
413 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000414 (u'1' + u'0'*20, 10L**20),
415 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000416]
417for s, v in L + LL:
418 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000419 for prefix in "", " ", "\t", " \t\t ":
420 ss = prefix + sign + s
421 vv = v
422 if sign == "-" and v is not ValueError:
423 vv = -v
424 try:
425 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000426 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000427 except v:
428 pass
429 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000430 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000431
Guido van Rossume65cce51993-11-08 15:05:21 +0000432print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000433if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000434 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000435if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000436 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
437 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000438if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000439 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000440if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000441 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000442try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000443 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000444except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000445 def sqrt(x):
446 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000447if 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 +0000448 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000449if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000450 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000451def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000452 accu = 0
453 for i in v: accu = accu + i
454 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000455if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000456 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000457if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000458 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000459if 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 +0000460 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000461if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000462 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000463if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000464 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000465if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000466 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum69256611998-06-11 22:25:59 +0000467if map(max, Squares(3), Squares(2)) != [0, 1, None]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000468 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000469
Guido van Rossum3bead091992-01-27 17:00:37 +0000470print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000471if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
472if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
473if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
474if 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 +0000475#
Fred Drake132dce22000-12-12 23:11:42 +0000476if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
477if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
478if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000479
480print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000481if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
482if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
483if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
484if 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 +0000485#
Fred Drake132dce22000-12-12 23:11:42 +0000486if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
487if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
488if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'