blob: 6d6aa6fcf1821d8ecbb493b4b1a85783184a9351 [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)'
Jeremy Hylton5ab36612001-01-03 23:53:31 +000056y()
Guido van Rossume23b62f1994-11-10 22:25:26 +000057
Guido van Rossum3bead091992-01-27 17:00:37 +000058print 'chr'
Fred Drake132dce22000-12-12 23:11:42 +000059if chr(32) != ' ': raise TestFailed, 'chr(32)'
60if chr(65) != 'A': raise TestFailed, 'chr(65)'
61if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum3bead091992-01-27 17:00:37 +000062
Neil Schemenauer38f02232001-01-04 01:33:41 +000063# cmp
Guido van Rossum85f18201992-11-27 22:53:50 +000064print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000065if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
66if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
67if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000068# verify that circular objects are handled
69a = []; a.append(a)
70b = []; b.append(b)
71from UserList import UserList
72c = UserList(); c.append(c)
73if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
74if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
75if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
76if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000077# okay, now break the cycles
78a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000079
80print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000081if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +000082if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000083if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000084
Guido van Rossume23b62f1994-11-10 22:25:26 +000085print 'compile'
86compile('print 1\n', '', 'exec')
87
Guido van Rossumdddf7a61997-03-31 17:13:17 +000088print 'complex'
Fred Drake132dce22000-12-12 23:11:42 +000089if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
90if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
91if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
92if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
93if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
94if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
95if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
96if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
97if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
98if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
99if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
100if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
101if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
102if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
103if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
104if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
105if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
106if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
107if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
108if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
109if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
110if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
111if complex(u" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(u" 3.14+J )"'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000112class Z:
113 def __complex__(self): return 3.14j
114z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000115if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000116
Guido van Rossume23b62f1994-11-10 22:25:26 +0000117print 'delattr'
118import sys
119sys.spam = 1
120delattr(sys, 'spam')
121
Guido van Rossum3bead091992-01-27 17:00:37 +0000122print 'dir'
123x = 1
124if 'x' not in dir(): raise TestFailed, 'dir()'
125import sys
126if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
127
128print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000129if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
130if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
131if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
132if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000133#
Fred Drake132dce22000-12-12 23:11:42 +0000134if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
135if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
136if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
137if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000138#
Fred Drake132dce22000-12-12 23:11:42 +0000139if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
140if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
141if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
142if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000143#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000144if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
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), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000149 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000150if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000151 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000152
153print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000154if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
155if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000156globals = {'a': 1, 'b': 2}
157locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000158if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000159 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000160if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000161 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000162if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000163 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000164if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000165 raise TestFailed, "eval(4)"
Fred Drake132dce22000-12-12 23:11:42 +0000166if eval(u'1+1') != 2: raise TestFailed, 'eval(u\'1+1\')'
167if eval(u' 1+1\n') != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000168globals = {'a': 1, 'b': 2}
169locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000170if eval(u'a', globals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000171 raise TestFailed, "eval(1) == %s" % eval(u'a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000172if eval(u'a', globals, locals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000173 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000174if eval(u'b', globals, locals) != 200:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000175 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000176if eval(u'c', globals, locals) != 300:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000177 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000178
Guido van Rossum85f18201992-11-27 22:53:50 +0000179print 'execfile'
180z = 0
181f = open(TESTFN, 'w')
182f.write('z = z+1\n')
183f.write('z = z*2\n')
184f.close()
185execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000186if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000187globals['z'] = 0
188execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000189if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000190locals['z'] = 0
191execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000192if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000193unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000194
Guido van Rossume65cce51993-11-08 15:05:21 +0000195print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000196if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000197 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000198if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000199 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000200if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000201 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000202class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000203 def __init__(self, max):
204 self.max = max
205 self.sofar = []
206 def __len__(self): return len(self.sofar)
207 def __getitem__(self, i):
208 if not 0 <= i < self.max: raise IndexError
209 n = len(self.sofar)
210 while n <= i:
211 self.sofar.append(n*n)
212 n = n+1
213 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000214if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000215 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000216if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000217 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000218class StrSquares:
219 def __init__(self, max):
220 self.max = max
221 self.sofar = []
222 def __len__(self):
223 return len(self.sofar)
224 def __getitem__(self, i):
225 if not 0 <= i < self.max:
226 raise IndexError
227 n = len(self.sofar)
228 while n <= i:
229 self.sofar.append(str(n*n))
230 n = n+1
231 return self.sofar[i]
232def identity(item):
233 return 1
234filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000235
Guido van Rossum3bead091992-01-27 17:00:37 +0000236print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000237if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
238if float(314) != 314.0: raise TestFailed, 'float(314)'
239if float(314L) != 314.0: raise TestFailed, 'float(314L)'
240if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
241if float(u" 3.14 ") != 3.14: raise TestFailed, 'float(u" 3.14 ")'
242if float(u" \u0663.\u0661\u0664 ") != 3.14:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000243 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000244
245print 'getattr'
246import sys
247if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
248
Guido van Rossume23b62f1994-11-10 22:25:26 +0000249print 'hasattr'
250import sys
251if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
252
253print 'hash'
254hash(None)
255if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
256hash('spam')
257hash((0,1,2,3))
258def f(): pass
259
Guido van Rossum3bead091992-01-27 17:00:37 +0000260print 'hex'
261if hex(16) != '0x10': raise TestFailed, 'hex(16)'
262if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000263if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
264if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
265 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000266if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
267
Guido van Rossume23b62f1994-11-10 22:25:26 +0000268print 'id'
269id(None)
270id(1)
271id(1L)
272id(1.0)
273id('spam')
274id((0,1,2,3))
275id([0,1,2,3])
276id({'spam': 1, 'eggs': 2, 'ham': 3})
277
Guido van Rossum3bead091992-01-27 17:00:37 +0000278# Test input() later, together with raw_input
279
280print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000281if int(314) != 314: raise TestFailed, 'int(314)'
282if int(3.14) != 3: raise TestFailed, 'int(3.14)'
283if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000284# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000285if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
286if int(3.9) != 3: raise TestFailed, 'int(3.9)'
287if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
288if int(3.5) != 3: raise TestFailed, 'int(3.5)'
289if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000290# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000291if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
292if int(u"10",16) != 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000293# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000294L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000295 ('0', 0),
296 ('1', 1),
297 ('9', 9),
298 ('10', 10),
299 ('99', 99),
300 ('100', 100),
301 ('314', 314),
302 (' 314', 314),
303 ('314 ', 314),
304 (' \t\t 314 \t\t ', 314),
305 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000306 (' 1x', ValueError),
307 (' 1 ', 1),
308 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000309 ('', ValueError),
310 (' ', ValueError),
311 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000312 (u'0', 0),
313 (u'1', 1),
314 (u'9', 9),
315 (u'10', 10),
316 (u'99', 99),
317 (u'100', 100),
318 (u'314', 314),
319 (u' 314', 314),
320 (u'\u0663\u0661\u0664 ', 314),
321 (u' \t\t 314 \t\t ', 314),
322 (u' 1x', ValueError),
323 (u' 1 ', 1),
324 (u' 1\02 ', ValueError),
325 (u'', ValueError),
326 (u' ', ValueError),
327 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000328]
329for s, v in L:
330 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000331 for prefix in "", " ", "\t", " \t\t ":
332 ss = prefix + sign + s
333 vv = v
334 if sign == "-" and v is not ValueError:
335 vv = -v
336 try:
337 if int(ss) != vv:
338 raise TestFailed, "int(%s)" % `ss`
339 except v:
340 pass
341 except ValueError, e:
342 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000343s = `-1-sys.maxint`
344if int(s)+1 != -sys.maxint:
345 raise TestFailed, "int(%s)" % `s`
346try:
347 int(s[1:])
348except ValueError:
349 pass
350else:
351 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000352
Barry Warsawd5430771997-08-22 21:27:03 +0000353print 'isinstance'
354class C:
355 pass
356class D(C):
357 pass
358class E:
359 pass
360c = C()
361d = D()
362e = E()
363if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
364if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
365if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
366if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
367if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
368try:
369 isinstance(E, 'foo')
370 raise TestFailed, 'isinstance(E, "foo")'
371except TypeError:
372 pass
373
374print 'issubclass'
375if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
376if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
377if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
378try:
379 issubclass('foo', E)
380 raise TestFailed, 'issubclass("foo", E)'
381except TypeError:
382 pass
383try:
384 issubclass(E, 'foo')
385 raise TestFailed, 'issubclass(E, "foo")'
386except TypeError:
387 pass
388
Guido van Rossum3bead091992-01-27 17:00:37 +0000389print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000390if len('123') != 3: raise TestFailed, 'len(\'123\')'
391if len(()) != 0: raise TestFailed, 'len(())'
392if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
393if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
394if len({}) != 0: raise TestFailed, 'len({})'
395if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000396
397print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000398if long(314) != 314L: raise TestFailed, 'long(314)'
399if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
400if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000401# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000402if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
403if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
404if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
405if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
406if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
407if long("-3") != -3L: raise TestFailed, 'long("-3")'
408if long(u"-3") != -3L: raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000409# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000410if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
411if long(u"10",16) != 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000412# Check conversions from string (same test set as for int(), and then some)
413LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000414 ('1' + '0'*20, 10L**20),
415 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000416 (u'1' + u'0'*20, 10L**20),
417 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000418]
419for s, v in L + LL:
420 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000421 for prefix in "", " ", "\t", " \t\t ":
422 ss = prefix + sign + s
423 vv = v
424 if sign == "-" and v is not ValueError:
425 vv = -v
426 try:
427 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000428 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000429 except v:
430 pass
431 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000432 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000433
Guido van Rossume65cce51993-11-08 15:05:21 +0000434print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000435if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000436 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000437if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000438 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
439 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000440if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000441 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000442if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000443 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000444try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000445 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000446except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000447 def sqrt(x):
448 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000449if 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 +0000450 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000451if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000452 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000453def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000454 accu = 0
455 for i in v: accu = accu + i
456 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000457if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000458 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000459if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000460 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000461if 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 +0000462 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000463if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000464 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000465if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000466 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000467if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000468 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Neil Schemenauer38f02232001-01-04 01:33:41 +0000469if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000470 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000471
Guido van Rossum3bead091992-01-27 17:00:37 +0000472print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000473if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
474if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
475if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
476if 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 +0000477#
Fred Drake132dce22000-12-12 23:11:42 +0000478if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
479if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
480if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000481
482print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000483if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
484if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
485if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
486if 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 +0000487#
Fred Drake132dce22000-12-12 23:11:42 +0000488if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
489if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
490if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'