blob: f8dfe4725378588a8fcec3102895bc33d4991f9d [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'
14if abs(0) <> 0: raise TestFailed, 'abs(0)'
15if abs(1234) <> 1234: raise TestFailed, 'abs(1234)'
16if abs(-1234) <> 1234: raise TestFailed, 'abs(-1234)'
17#
18if 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)'
21#
22if abs(0L) <> 0L: raise TestFailed, 'abs(0L)'
23if abs(1234L) <> 1234L: raise TestFailed, 'abs(1234L)'
24if abs(-1234L) <> 1234L: raise TestFailed, 'abs(-1234L)'
25
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'
58if chr(32) <> ' ': raise TestFailed, 'chr(32)'
59if chr(65) <> 'A': raise TestFailed, 'chr(65)'
60if chr(97) <> 'a': raise TestFailed, 'chr(97)'
61
Guido van Rossum85f18201992-11-27 22:53:50 +000062print 'cmp'
63if 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)'
Guido van Rossum85f18201992-11-27 22:53:50 +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'
87if 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)'
Guido van Rossum52a0d7d1999-03-25 21:25:01 +0000108if complex(" 3.14+J ") <> 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000109if 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()
113if complex(z) <> 3.14j: raise TestFailed, 'complex(classinstance)'
114
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'
127if 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)'
131#
132if 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)'
136#
137if 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)'
141#
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'
152if eval('1+1') <> 2: raise TestFailed, 'eval(\'1+1\')'
Guido van Rossum85f18201992-11-27 22:53:50 +0000153if 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}
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000156if eval('a', globals) <> 1:
157 raise TestFailed, "eval(1) == %s" % eval('a', globals)
158if eval('a', globals, locals) <> 1:
159 raise TestFailed, "eval(2)"
160if eval('b', globals, locals) <> 200:
161 raise TestFailed, "eval(3)"
162if eval('c', globals, locals) <> 300:
163 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000164
Guido van Rossum85f18201992-11-27 22:53:50 +0000165print 'execfile'
166z = 0
167f = open(TESTFN, 'w')
168f.write('z = z+1\n')
169f.write('z = z*2\n')
170f.close()
171execfile(TESTFN)
Guido van Rossum824de251995-01-02 18:38:42 +0000172if z <> 2: raise TestFailed, "execfile(1)"
173globals['z'] = 0
174execfile(TESTFN, globals)
175if globals['z'] <> 2: raise TestFailed, "execfile(1)"
176locals['z'] = 0
177execfile(TESTFN, globals, locals)
178if locals['z'] <> 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000179unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000180
Guido van Rossume65cce51993-11-08 15:05:21 +0000181print 'filter'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000182if filter(lambda c: 'a' <= c <= 'z', 'Hello World') <> 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000183 raise TestFailed, 'filter (filter a string)'
Guido van Rossume65cce51993-11-08 15:05:21 +0000184if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) <> [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000185 raise TestFailed, 'filter (remove false values)'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000186if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) <> [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000187 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000188class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000189 def __init__(self, max):
190 self.max = max
191 self.sofar = []
192 def __len__(self): return len(self.sofar)
193 def __getitem__(self, i):
194 if not 0 <= i < self.max: raise IndexError
195 n = len(self.sofar)
196 while n <= i:
197 self.sofar.append(n*n)
198 n = n+1
199 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000200if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000201 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000202if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000203 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000204class StrSquares:
205 def __init__(self, max):
206 self.max = max
207 self.sofar = []
208 def __len__(self):
209 return len(self.sofar)
210 def __getitem__(self, i):
211 if not 0 <= i < self.max:
212 raise IndexError
213 n = len(self.sofar)
214 while n <= i:
215 self.sofar.append(str(n*n))
216 n = n+1
217 return self.sofar[i]
218def identity(item):
219 return 1
220filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000221
Guido van Rossum3bead091992-01-27 17:00:37 +0000222print 'float'
223if float(3.14) <> 3.14: raise TestFailed, 'float(3.14)'
224if float(314) <> 314.0: raise TestFailed, 'float(314)'
225if float(314L) <> 314.0: raise TestFailed, 'float(314L)'
Guido van Rossum52a0d7d1999-03-25 21:25:01 +0000226if float(" 3.14 ") <> 3.14: raise TestFailed, 'float(" 3.14 ")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000227if float(u" 3.14 ") <> 3.14: raise TestFailed, 'float(u" 3.14 ")'
228if float(u" \u0663.\u0661\u0664 ") <> 3.14:
229 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000230
231print 'getattr'
232import sys
233if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
234
Guido van Rossume23b62f1994-11-10 22:25:26 +0000235print 'hasattr'
236import sys
237if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
238
239print 'hash'
240hash(None)
241if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
242hash('spam')
243hash((0,1,2,3))
244def f(): pass
245
Guido van Rossum3bead091992-01-27 17:00:37 +0000246print 'hex'
247if hex(16) != '0x10': raise TestFailed, 'hex(16)'
248if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000249if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
250if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
251 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000252if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
253
Guido van Rossume23b62f1994-11-10 22:25:26 +0000254print 'id'
255id(None)
256id(1)
257id(1L)
258id(1.0)
259id('spam')
260id((0,1,2,3))
261id([0,1,2,3])
262id({'spam': 1, 'eggs': 2, 'ham': 3})
263
Guido van Rossum3bead091992-01-27 17:00:37 +0000264# Test input() later, together with raw_input
265
266print 'int'
267if int(314) <> 314: raise TestFailed, 'int(314)'
268if int(3.14) <> 3: raise TestFailed, 'int(3.14)'
269if int(314L) <> 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000270# Check that conversion from float truncates towards zero
271if int(-3.14) <> -3: raise TestFailed, 'int(-3.14)'
272if int(3.9) <> 3: raise TestFailed, 'int(3.9)'
273if int(-3.9) <> -3: raise TestFailed, 'int(-3.9)'
274if int(3.5) <> 3: raise TestFailed, 'int(3.5)'
275if int(-3.5) <> -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000276# Different base:
277if int("10",16) <> 16L: raise TestFailed, 'int("10",16)'
278if int(u"10",16) <> 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000279# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000280L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000281 ('0', 0),
282 ('1', 1),
283 ('9', 9),
284 ('10', 10),
285 ('99', 99),
286 ('100', 100),
287 ('314', 314),
288 (' 314', 314),
289 ('314 ', 314),
290 (' \t\t 314 \t\t ', 314),
291 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000292 (' 1x', ValueError),
293 (' 1 ', 1),
294 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000295 ('', ValueError),
296 (' ', ValueError),
297 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000298 (u'0', 0),
299 (u'1', 1),
300 (u'9', 9),
301 (u'10', 10),
302 (u'99', 99),
303 (u'100', 100),
304 (u'314', 314),
305 (u' 314', 314),
306 (u'\u0663\u0661\u0664 ', 314),
307 (u' \t\t 314 \t\t ', 314),
308 (u' 1x', ValueError),
309 (u' 1 ', 1),
310 (u' 1\02 ', ValueError),
311 (u'', ValueError),
312 (u' ', ValueError),
313 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000314]
315for s, v in L:
316 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000317 for prefix in "", " ", "\t", " \t\t ":
318 ss = prefix + sign + s
319 vv = v
320 if sign == "-" and v is not ValueError:
321 vv = -v
322 try:
323 if int(ss) != vv:
324 raise TestFailed, "int(%s)" % `ss`
325 except v:
326 pass
327 except ValueError, e:
328 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000329s = `-1-sys.maxint`
330if int(s)+1 != -sys.maxint:
331 raise TestFailed, "int(%s)" % `s`
332try:
333 int(s[1:])
334except ValueError:
335 pass
336else:
337 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000338
Barry Warsawd5430771997-08-22 21:27:03 +0000339print 'isinstance'
340class C:
341 pass
342class D(C):
343 pass
344class E:
345 pass
346c = C()
347d = D()
348e = E()
349if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
350if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
351if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
352if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
353if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
354try:
355 isinstance(E, 'foo')
356 raise TestFailed, 'isinstance(E, "foo")'
357except TypeError:
358 pass
359
360print 'issubclass'
361if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
362if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
363if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
364try:
365 issubclass('foo', E)
366 raise TestFailed, 'issubclass("foo", E)'
367except TypeError:
368 pass
369try:
370 issubclass(E, 'foo')
371 raise TestFailed, 'issubclass(E, "foo")'
372except TypeError:
373 pass
374
Guido van Rossum3bead091992-01-27 17:00:37 +0000375print 'len'
376if len('123') <> 3: raise TestFailed, 'len(\'123\')'
377if len(()) <> 0: raise TestFailed, 'len(())'
378if len((1, 2, 3, 4)) <> 4: raise TestFailed, 'len((1, 2, 3, 4))'
379if len([1, 2, 3, 4]) <> 4: raise TestFailed, 'len([1, 2, 3, 4])'
380if len({}) <> 0: raise TestFailed, 'len({})'
381if len({'a':1, 'b': 2}) <> 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
382
383print 'long'
384if long(314) <> 314L: raise TestFailed, 'long(314)'
385if long(3.14) <> 3L: raise TestFailed, 'long(3.14)'
386if long(314L) <> 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000387# Check that conversion from float truncates towards zero
388if long(-3.14) <> -3L: raise TestFailed, 'long(-3.14)'
389if long(3.9) <> 3L: raise TestFailed, 'long(3.9)'
390if long(-3.9) <> -3L: raise TestFailed, 'long(-3.9)'
391if long(3.5) <> 3L: raise TestFailed, 'long(3.5)'
392if long(-3.5) <> -3L: raise TestFailed, 'long(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000393if long("-3") <> -3L: raise TestFailed, 'long("-3")'
394if long(u"-3") <> -3L: raise TestFailed, 'long(u"-3")'
395# Different base:
396if long("10",16) <> 16L: raise TestFailed, 'long("10",16)'
397if long(u"10",16) <> 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000398# Check conversions from string (same test set as for int(), and then some)
399LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000400 ('1' + '0'*20, 10L**20),
401 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000402 (u'1' + u'0'*20, 10L**20),
403 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000404]
405for s, v in L + LL:
406 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000407 for prefix in "", " ", "\t", " \t\t ":
408 ss = prefix + sign + s
409 vv = v
410 if sign == "-" and v is not ValueError:
411 vv = -v
412 try:
413 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000414 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000415 except v:
416 pass
417 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000418 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000419
Guido van Rossume65cce51993-11-08 15:05:21 +0000420print 'map'
421if map(None, 'hello world') <> ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000422 raise TestFailed, 'map(None, \'hello world\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000423if map(None, 'abcd', 'efg') <> \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000424 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
425 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000426if map(None, range(10)) <> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000427 raise TestFailed, 'map(None, range(10))'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000428if map(lambda x: x*x, range(1,4)) <> [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000429 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000430try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000431 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000432except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000433 def sqrt(x):
434 return pow(x, 0.5)
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000435if 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 +0000436 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000437if map(lambda x, y: x+y, [1,3,2], [9,1,4]) <> [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000438 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000439def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000440 accu = 0
441 for i in v: accu = accu + i
442 return accu
Guido van Rossume65cce51993-11-08 15:05:21 +0000443if map(plus, [1, 3, 7]) <> [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000444 raise TestFailed, 'map(plus, [1, 3, 7])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000445if map(plus, [1, 3, 7], [4, 9, 2]) <> [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000446 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000447if 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 +0000448 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000449if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000450 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000451if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000452 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000453if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000454 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum69256611998-06-11 22:25:59 +0000455if map(max, Squares(3), Squares(2)) != [0, 1, None]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000456 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000457
Guido van Rossum3bead091992-01-27 17:00:37 +0000458print 'max'
459if max('123123') <> '3': raise TestFailed, 'max(\'123123\')'
460if max(1, 2, 3) <> 3: raise TestFailed, 'max(1, 2, 3)'
461if max((1, 2, 3, 1, 2, 3)) <> 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
462if max([1, 2, 3, 1, 2, 3]) <> 3: raise TestFailed, 'max([1, 2, 3, 1, 2, 3])'
463#
464if max(1, 2L, 3.0) <> 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
465if max(1L, 2.0, 3) <> 3: raise TestFailed, 'max(1L, 2.0, 3)'
466if max(1.0, 2, 3L) <> 3L: raise TestFailed, 'max(1.0, 2, 3L)'
467
468print 'min'
469if min('123123') <> '1': raise TestFailed, 'min(\'123123\')'
470if min(1, 2, 3) <> 1: raise TestFailed, 'min(1, 2, 3)'
471if min((1, 2, 3, 1, 2, 3)) <> 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
472if min([1, 2, 3, 1, 2, 3]) <> 1: raise TestFailed, 'min([1, 2, 3, 1, 2, 3])'
473#
474if min(1, 2L, 3.0) <> 1: raise TestFailed, 'min(1, 2L, 3.0)'
475if min(1L, 2.0, 3) <> 1L: raise TestFailed, 'min(1L, 2.0, 3)'
476if min(1.0, 2, 3L) <> 1.0: raise TestFailed, 'min(1.0, 2, 3L)'