blob: 6e85453d9987677a32fb61b8f63372a1b82cf73e [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
Guido van Rossum85f18201992-11-27 22:53:50 +000063print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000064if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
65if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
66if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000067# verify that circular objects are handled
68a = []; a.append(a)
69b = []; b.append(b)
70from UserList import UserList
71c = UserList(); c.append(c)
72if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
73if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
74if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
75if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000076# okay, now break the cycles
77a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000078
79print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000080if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +000081if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000082if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000083
Guido van Rossume23b62f1994-11-10 22:25:26 +000084print 'compile'
85compile('print 1\n', '', 'exec')
86
Guido van Rossumdddf7a61997-03-31 17:13:17 +000087print 'complex'
Fred Drake132dce22000-12-12 23:11:42 +000088if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
89if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
90if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
91if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
92if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
93if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
94if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
95if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
96if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
97if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
98if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
99if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
100if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
101if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
102if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
103if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
104if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
105if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
106if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
107if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
108if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
109if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
110if complex(u" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(u" 3.14+J )"'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000111class Z:
112 def __complex__(self): return 3.14j
113z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000114if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000115
Guido van Rossume23b62f1994-11-10 22:25:26 +0000116print 'delattr'
117import sys
118sys.spam = 1
119delattr(sys, 'spam')
120
Guido van Rossum3bead091992-01-27 17:00:37 +0000121print 'dir'
122x = 1
123if 'x' not in dir(): raise TestFailed, 'dir()'
124import sys
125if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
126
127print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000128if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
129if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
130if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
131if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000132#
Fred Drake132dce22000-12-12 23:11:42 +0000133if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
134if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
135if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
136if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000137#
Fred Drake132dce22000-12-12 23:11:42 +0000138if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
139if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
140if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
141if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000142#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000143if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000144 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000145if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000146 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000147if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000148 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000149if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000150 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000151
152print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000153if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
154if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000155globals = {'a': 1, 'b': 2}
156locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000157if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000158 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000159if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000160 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000161if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000162 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000163if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000164 raise TestFailed, "eval(4)"
Fred Drake132dce22000-12-12 23:11:42 +0000165if eval(u'1+1') != 2: raise TestFailed, 'eval(u\'1+1\')'
166if eval(u' 1+1\n') != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000167globals = {'a': 1, 'b': 2}
168locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000169if eval(u'a', globals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000170 raise TestFailed, "eval(1) == %s" % eval(u'a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000171if eval(u'a', globals, locals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000172 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000173if eval(u'b', globals, locals) != 200:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000174 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000175if eval(u'c', globals, locals) != 300:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000176 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000177
Guido van Rossum85f18201992-11-27 22:53:50 +0000178print 'execfile'
179z = 0
180f = open(TESTFN, 'w')
181f.write('z = z+1\n')
182f.write('z = z*2\n')
183f.close()
184execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000185if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000186globals['z'] = 0
187execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000188if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000189locals['z'] = 0
190execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000191if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000192unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000193
Guido van Rossume65cce51993-11-08 15:05:21 +0000194print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000195if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000196 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000197if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000198 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000199if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000200 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000201class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000202 def __init__(self, max):
203 self.max = max
204 self.sofar = []
205 def __len__(self): return len(self.sofar)
206 def __getitem__(self, i):
207 if not 0 <= i < self.max: raise IndexError
208 n = len(self.sofar)
209 while n <= i:
210 self.sofar.append(n*n)
211 n = n+1
212 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000213if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000214 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000215if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000216 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000217class StrSquares:
218 def __init__(self, max):
219 self.max = max
220 self.sofar = []
221 def __len__(self):
222 return len(self.sofar)
223 def __getitem__(self, i):
224 if not 0 <= i < self.max:
225 raise IndexError
226 n = len(self.sofar)
227 while n <= i:
228 self.sofar.append(str(n*n))
229 n = n+1
230 return self.sofar[i]
231def identity(item):
232 return 1
233filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000234
Guido van Rossum3bead091992-01-27 17:00:37 +0000235print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000236if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
237if float(314) != 314.0: raise TestFailed, 'float(314)'
238if float(314L) != 314.0: raise TestFailed, 'float(314L)'
239if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
240if float(u" 3.14 ") != 3.14: raise TestFailed, 'float(u" 3.14 ")'
241if float(u" \u0663.\u0661\u0664 ") != 3.14:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000242 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000243
244print 'getattr'
245import sys
246if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
247
Guido van Rossume23b62f1994-11-10 22:25:26 +0000248print 'hasattr'
249import sys
250if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
251
252print 'hash'
253hash(None)
254if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
255hash('spam')
256hash((0,1,2,3))
257def f(): pass
258
Guido van Rossum3bead091992-01-27 17:00:37 +0000259print 'hex'
260if hex(16) != '0x10': raise TestFailed, 'hex(16)'
261if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000262if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
263if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
264 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000265if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
266
Guido van Rossume23b62f1994-11-10 22:25:26 +0000267print 'id'
268id(None)
269id(1)
270id(1L)
271id(1.0)
272id('spam')
273id((0,1,2,3))
274id([0,1,2,3])
275id({'spam': 1, 'eggs': 2, 'ham': 3})
276
Guido van Rossum3bead091992-01-27 17:00:37 +0000277# Test input() later, together with raw_input
278
279print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000280if int(314) != 314: raise TestFailed, 'int(314)'
281if int(3.14) != 3: raise TestFailed, 'int(3.14)'
282if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000283# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000284if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
285if int(3.9) != 3: raise TestFailed, 'int(3.9)'
286if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
287if int(3.5) != 3: raise TestFailed, 'int(3.5)'
288if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000289# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000290if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
291if int(u"10",16) != 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000292# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000293L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000294 ('0', 0),
295 ('1', 1),
296 ('9', 9),
297 ('10', 10),
298 ('99', 99),
299 ('100', 100),
300 ('314', 314),
301 (' 314', 314),
302 ('314 ', 314),
303 (' \t\t 314 \t\t ', 314),
304 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000305 (' 1x', ValueError),
306 (' 1 ', 1),
307 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000308 ('', ValueError),
309 (' ', ValueError),
310 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000311 (u'0', 0),
312 (u'1', 1),
313 (u'9', 9),
314 (u'10', 10),
315 (u'99', 99),
316 (u'100', 100),
317 (u'314', 314),
318 (u' 314', 314),
319 (u'\u0663\u0661\u0664 ', 314),
320 (u' \t\t 314 \t\t ', 314),
321 (u' 1x', ValueError),
322 (u' 1 ', 1),
323 (u' 1\02 ', ValueError),
324 (u'', ValueError),
325 (u' ', ValueError),
326 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000327]
328for s, v in L:
329 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000330 for prefix in "", " ", "\t", " \t\t ":
331 ss = prefix + sign + s
332 vv = v
333 if sign == "-" and v is not ValueError:
334 vv = -v
335 try:
336 if int(ss) != vv:
337 raise TestFailed, "int(%s)" % `ss`
338 except v:
339 pass
340 except ValueError, e:
341 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000342s = `-1-sys.maxint`
343if int(s)+1 != -sys.maxint:
344 raise TestFailed, "int(%s)" % `s`
345try:
346 int(s[1:])
347except ValueError:
348 pass
349else:
350 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000351
Barry Warsawd5430771997-08-22 21:27:03 +0000352print 'isinstance'
353class C:
354 pass
355class D(C):
356 pass
357class E:
358 pass
359c = C()
360d = D()
361e = E()
362if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
363if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
364if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
365if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
366if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
367try:
368 isinstance(E, 'foo')
369 raise TestFailed, 'isinstance(E, "foo")'
370except TypeError:
371 pass
372
373print 'issubclass'
374if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
375if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
376if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
377try:
378 issubclass('foo', E)
379 raise TestFailed, 'issubclass("foo", E)'
380except TypeError:
381 pass
382try:
383 issubclass(E, 'foo')
384 raise TestFailed, 'issubclass(E, "foo")'
385except TypeError:
386 pass
387
Guido van Rossum3bead091992-01-27 17:00:37 +0000388print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000389if len('123') != 3: raise TestFailed, 'len(\'123\')'
390if len(()) != 0: raise TestFailed, 'len(())'
391if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
392if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
393if len({}) != 0: raise TestFailed, 'len({})'
394if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000395
396print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000397if long(314) != 314L: raise TestFailed, 'long(314)'
398if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
399if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000400# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000401if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
402if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
403if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
404if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
405if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
406if long("-3") != -3L: raise TestFailed, 'long("-3")'
407if long(u"-3") != -3L: raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000408# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000409if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
410if long(u"10",16) != 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000411# Check conversions from string (same test set as for int(), and then some)
412LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000413 ('1' + '0'*20, 10L**20),
414 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000415 (u'1' + u'0'*20, 10L**20),
416 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000417]
418for s, v in L + LL:
419 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000420 for prefix in "", " ", "\t", " \t\t ":
421 ss = prefix + sign + s
422 vv = v
423 if sign == "-" and v is not ValueError:
424 vv = -v
425 try:
426 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000427 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000428 except v:
429 pass
430 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000431 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000432
Guido van Rossume65cce51993-11-08 15:05:21 +0000433print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000434if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000435 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000436if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000437 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
438 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000439if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000440 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000441if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000442 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000443try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000444 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000445except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000446 def sqrt(x):
447 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000448if 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 +0000449 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000450if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000451 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000452def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000453 accu = 0
454 for i in v: accu = accu + i
455 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000456if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000457 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000458if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000459 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000460if 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 +0000461 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000462if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000463 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000464if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000465 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000466if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000467 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum69256611998-06-11 22:25:59 +0000468if map(max, Squares(3), Squares(2)) != [0, 1, None]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000469 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000470
Guido van Rossum3bead091992-01-27 17:00:37 +0000471print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000472if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
473if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
474if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
475if 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 +0000476#
Fred Drake132dce22000-12-12 23:11:42 +0000477if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
478if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
479if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000480
481print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000482if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
483if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
484if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
485if 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 +0000486#
Fred Drake132dce22000-12-12 23:11:42 +0000487if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
488if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
489if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'