blob: d735bfa5dca60796cdf2e537d43e24a107687979 [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')
7__import__('strop')
8__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}
156if eval('a', globals) <> 1: raise TestFailed, "eval(1)"
157if eval('a', globals, locals) <> 1: raise TestFailed, "eval(2)"
158if eval('b', globals, locals) <> 200: raise TestFailed, "eval(3)"
159if eval('c', globals, locals) <> 300: raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000160
Guido van Rossum85f18201992-11-27 22:53:50 +0000161print 'execfile'
162z = 0
163f = open(TESTFN, 'w')
164f.write('z = z+1\n')
165f.write('z = z*2\n')
166f.close()
167execfile(TESTFN)
Guido van Rossum824de251995-01-02 18:38:42 +0000168if z <> 2: raise TestFailed, "execfile(1)"
169globals['z'] = 0
170execfile(TESTFN, globals)
171if globals['z'] <> 2: raise TestFailed, "execfile(1)"
172locals['z'] = 0
173execfile(TESTFN, globals, locals)
174if locals['z'] <> 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000175unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000176
Guido van Rossume65cce51993-11-08 15:05:21 +0000177print 'filter'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000178if filter(lambda c: 'a' <= c <= 'z', 'Hello World') <> 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000179 raise TestFailed, 'filter (filter a string)'
Guido van Rossume65cce51993-11-08 15:05:21 +0000180if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) <> [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000181 raise TestFailed, 'filter (remove false values)'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000182if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) <> [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000183 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000184class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000185 def __init__(self, max):
186 self.max = max
187 self.sofar = []
188 def __len__(self): return len(self.sofar)
189 def __getitem__(self, i):
190 if not 0 <= i < self.max: raise IndexError
191 n = len(self.sofar)
192 while n <= i:
193 self.sofar.append(n*n)
194 n = n+1
195 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000196if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000197 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000198if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000199 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000200class StrSquares:
201 def __init__(self, max):
202 self.max = max
203 self.sofar = []
204 def __len__(self):
205 return len(self.sofar)
206 def __getitem__(self, i):
207 if not 0 <= i < self.max:
208 raise IndexError
209 n = len(self.sofar)
210 while n <= i:
211 self.sofar.append(str(n*n))
212 n = n+1
213 return self.sofar[i]
214def identity(item):
215 return 1
216filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000217
Guido van Rossum3bead091992-01-27 17:00:37 +0000218print 'float'
219if float(3.14) <> 3.14: raise TestFailed, 'float(3.14)'
220if float(314) <> 314.0: raise TestFailed, 'float(314)'
221if float(314L) <> 314.0: raise TestFailed, 'float(314L)'
Guido van Rossum52a0d7d1999-03-25 21:25:01 +0000222if float(" 3.14 ") <> 3.14: raise TestFailed, 'float(" 3.14 ")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000223if float(u" 3.14 ") <> 3.14: raise TestFailed, 'float(u" 3.14 ")'
224if float(u" \u0663.\u0661\u0664 ") <> 3.14:
225 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000226
227print 'getattr'
228import sys
229if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
230
Guido van Rossume23b62f1994-11-10 22:25:26 +0000231print 'hasattr'
232import sys
233if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
234
235print 'hash'
236hash(None)
237if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
238hash('spam')
239hash((0,1,2,3))
240def f(): pass
241
Guido van Rossum3bead091992-01-27 17:00:37 +0000242print 'hex'
243if hex(16) != '0x10': raise TestFailed, 'hex(16)'
244if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000245if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
246if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
247 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000248if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
249
Guido van Rossume23b62f1994-11-10 22:25:26 +0000250print 'id'
251id(None)
252id(1)
253id(1L)
254id(1.0)
255id('spam')
256id((0,1,2,3))
257id([0,1,2,3])
258id({'spam': 1, 'eggs': 2, 'ham': 3})
259
Guido van Rossum3bead091992-01-27 17:00:37 +0000260# Test input() later, together with raw_input
261
262print 'int'
263if int(314) <> 314: raise TestFailed, 'int(314)'
264if int(3.14) <> 3: raise TestFailed, 'int(3.14)'
265if int(314L) <> 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000266# Check that conversion from float truncates towards zero
267if int(-3.14) <> -3: raise TestFailed, 'int(-3.14)'
268if int(3.9) <> 3: raise TestFailed, 'int(3.9)'
269if int(-3.9) <> -3: raise TestFailed, 'int(-3.9)'
270if int(3.5) <> 3: raise TestFailed, 'int(3.5)'
271if int(-3.5) <> -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000272# Different base:
273if int("10",16) <> 16L: raise TestFailed, 'int("10",16)'
274if int(u"10",16) <> 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000275# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000276L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000277 ('0', 0),
278 ('1', 1),
279 ('9', 9),
280 ('10', 10),
281 ('99', 99),
282 ('100', 100),
283 ('314', 314),
284 (' 314', 314),
285 ('314 ', 314),
286 (' \t\t 314 \t\t ', 314),
287 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000288 (' 1x', ValueError),
289 (' 1 ', 1),
290 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000291 ('', ValueError),
292 (' ', ValueError),
293 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000294 (u'0', 0),
295 (u'1', 1),
296 (u'9', 9),
297 (u'10', 10),
298 (u'99', 99),
299 (u'100', 100),
300 (u'314', 314),
301 (u' 314', 314),
302 (u'\u0663\u0661\u0664 ', 314),
303 (u' \t\t 314 \t\t ', 314),
304 (u' 1x', ValueError),
305 (u' 1 ', 1),
306 (u' 1\02 ', ValueError),
307 (u'', ValueError),
308 (u' ', ValueError),
309 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000310]
311for s, v in L:
312 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000313 for prefix in "", " ", "\t", " \t\t ":
314 ss = prefix + sign + s
315 vv = v
316 if sign == "-" and v is not ValueError:
317 vv = -v
318 try:
319 if int(ss) != vv:
320 raise TestFailed, "int(%s)" % `ss`
321 except v:
322 pass
323 except ValueError, e:
324 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000325s = `-1-sys.maxint`
326if int(s)+1 != -sys.maxint:
327 raise TestFailed, "int(%s)" % `s`
328try:
329 int(s[1:])
330except ValueError:
331 pass
332else:
333 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000334
Barry Warsawd5430771997-08-22 21:27:03 +0000335print 'isinstance'
336class C:
337 pass
338class D(C):
339 pass
340class E:
341 pass
342c = C()
343d = D()
344e = E()
345if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
346if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
347if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
348if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
349if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
350try:
351 isinstance(E, 'foo')
352 raise TestFailed, 'isinstance(E, "foo")'
353except TypeError:
354 pass
355
356print 'issubclass'
357if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
358if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
359if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
360try:
361 issubclass('foo', E)
362 raise TestFailed, 'issubclass("foo", E)'
363except TypeError:
364 pass
365try:
366 issubclass(E, 'foo')
367 raise TestFailed, 'issubclass(E, "foo")'
368except TypeError:
369 pass
370
Guido van Rossum3bead091992-01-27 17:00:37 +0000371print 'len'
372if len('123') <> 3: raise TestFailed, 'len(\'123\')'
373if len(()) <> 0: raise TestFailed, 'len(())'
374if len((1, 2, 3, 4)) <> 4: raise TestFailed, 'len((1, 2, 3, 4))'
375if len([1, 2, 3, 4]) <> 4: raise TestFailed, 'len([1, 2, 3, 4])'
376if len({}) <> 0: raise TestFailed, 'len({})'
377if len({'a':1, 'b': 2}) <> 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
378
379print 'long'
380if long(314) <> 314L: raise TestFailed, 'long(314)'
381if long(3.14) <> 3L: raise TestFailed, 'long(3.14)'
382if long(314L) <> 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000383# Check that conversion from float truncates towards zero
384if long(-3.14) <> -3L: raise TestFailed, 'long(-3.14)'
385if long(3.9) <> 3L: raise TestFailed, 'long(3.9)'
386if long(-3.9) <> -3L: raise TestFailed, 'long(-3.9)'
387if long(3.5) <> 3L: raise TestFailed, 'long(3.5)'
388if long(-3.5) <> -3L: raise TestFailed, 'long(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000389if long("-3") <> -3L: raise TestFailed, 'long("-3")'
390if long(u"-3") <> -3L: raise TestFailed, 'long(u"-3")'
391# Different base:
392if long("10",16) <> 16L: raise TestFailed, 'long("10",16)'
393if long(u"10",16) <> 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000394# Check conversions from string (same test set as for int(), and then some)
395LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000396 ('1' + '0'*20, 10L**20),
397 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000398 (u'1' + u'0'*20, 10L**20),
399 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000400]
401for s, v in L + LL:
402 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000403 for prefix in "", " ", "\t", " \t\t ":
404 ss = prefix + sign + s
405 vv = v
406 if sign == "-" and v is not ValueError:
407 vv = -v
408 try:
409 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000410 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000411 except v:
412 pass
413 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000414 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000415
Guido van Rossume65cce51993-11-08 15:05:21 +0000416print 'map'
417if map(None, 'hello world') <> ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000418 raise TestFailed, 'map(None, \'hello world\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000419if map(None, 'abcd', 'efg') <> \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000420 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
421 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000422if map(None, range(10)) <> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000423 raise TestFailed, 'map(None, range(10))'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000424if map(lambda x: x*x, range(1,4)) <> [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000425 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000426try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000427 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000428except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000429 def sqrt(x):
430 return pow(x, 0.5)
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000431if 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 +0000432 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000433if map(lambda x, y: x+y, [1,3,2], [9,1,4]) <> [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000434 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000435def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000436 accu = 0
437 for i in v: accu = accu + i
438 return accu
Guido van Rossume65cce51993-11-08 15:05:21 +0000439if map(plus, [1, 3, 7]) <> [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000440 raise TestFailed, 'map(plus, [1, 3, 7])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000441if map(plus, [1, 3, 7], [4, 9, 2]) <> [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000442 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000443if 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 +0000444 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000445if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000446 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000447if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000448 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000449if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000450 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum69256611998-06-11 22:25:59 +0000451if map(max, Squares(3), Squares(2)) != [0, 1, None]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000452 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000453
Guido van Rossum3bead091992-01-27 17:00:37 +0000454print 'max'
455if max('123123') <> '3': raise TestFailed, 'max(\'123123\')'
456if max(1, 2, 3) <> 3: raise TestFailed, 'max(1, 2, 3)'
457if max((1, 2, 3, 1, 2, 3)) <> 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
458if max([1, 2, 3, 1, 2, 3]) <> 3: raise TestFailed, 'max([1, 2, 3, 1, 2, 3])'
459#
460if max(1, 2L, 3.0) <> 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
461if max(1L, 2.0, 3) <> 3: raise TestFailed, 'max(1L, 2.0, 3)'
462if max(1.0, 2, 3L) <> 3L: raise TestFailed, 'max(1.0, 2, 3L)'
463
464print 'min'
465if min('123123') <> '1': raise TestFailed, 'min(\'123123\')'
466if min(1, 2, 3) <> 1: raise TestFailed, 'min(1, 2, 3)'
467if min((1, 2, 3, 1, 2, 3)) <> 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
468if min([1, 2, 3, 1, 2, 3]) <> 1: raise TestFailed, 'min([1, 2, 3, 1, 2, 3])'
469#
470if min(1, 2L, 3.0) <> 1: raise TestFailed, 'min(1, 2L, 3.0)'
471if min(1L, 2.0, 3) <> 1L: raise TestFailed, 'min(1L, 2.0, 3)'
472if min(1.0, 2, 3L) <> 1.0: raise TestFailed, 'min(1.0, 2, 3L)'