blob: 639a01776dc4c3113ba38e98f3cf729f5c15a71c [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)
Guido van Rossum85f18201992-11-27 22:53:50 +000075
76print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000077if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000078if coerce(1, 1L) <> (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000079if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000080
Guido van Rossume23b62f1994-11-10 22:25:26 +000081print 'compile'
82compile('print 1\n', '', 'exec')
83
Guido van Rossumdddf7a61997-03-31 17:13:17 +000084print 'complex'
85if complex(1,10) <> 1+10j: raise TestFailed, 'complex(1,10)'
86if complex(1,10L) <> 1+10j: raise TestFailed, 'complex(1,10L)'
87if complex(1,10.0) <> 1+10j: raise TestFailed, 'complex(1,10.0)'
88if complex(1L,10) <> 1+10j: raise TestFailed, 'complex(1L,10)'
89if complex(1L,10L) <> 1+10j: raise TestFailed, 'complex(1L,10L)'
90if complex(1L,10.0) <> 1+10j: raise TestFailed, 'complex(1L,10.0)'
91if complex(1.0,10) <> 1+10j: raise TestFailed, 'complex(1.0,10)'
92if complex(1.0,10L) <> 1+10j: raise TestFailed, 'complex(1.0,10L)'
93if complex(1.0,10.0) <> 1+10j: raise TestFailed, 'complex(1.0,10.0)'
94if complex(3.14+0j) <> 3.14+0j: raise TestFailed, 'complex(3.14)'
95if complex(3.14) <> 3.14+0j: raise TestFailed, 'complex(3.14)'
96if complex(314) <> 314.0+0j: raise TestFailed, 'complex(314)'
97if complex(314L) <> 314.0+0j: raise TestFailed, 'complex(314L)'
98if complex(3.14+0j, 0j) <> 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
99if complex(3.14, 0.0) <> 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
100if complex(314, 0) <> 314.0+0j: raise TestFailed, 'complex(314, 0)'
101if complex(314L, 0L) <> 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
102if complex(0j, 3.14j) <> -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
103if complex(0.0, 3.14j) <> -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
104if complex(0j, 3.14) <> 3.14j: raise TestFailed, 'complex(0j, 3.14)'
105if complex(0.0, 3.14) <> 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
Guido van Rossum52a0d7d1999-03-25 21:25:01 +0000106if complex(" 3.14+J ") <> 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000107if complex(u" 3.14+J ") <> 3.14+1j: raise TestFailed, 'complex(u" 3.14+J )"'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000108class Z:
109 def __complex__(self): return 3.14j
110z = Z()
111if complex(z) <> 3.14j: raise TestFailed, 'complex(classinstance)'
112
Guido van Rossume23b62f1994-11-10 22:25:26 +0000113print 'delattr'
114import sys
115sys.spam = 1
116delattr(sys, 'spam')
117
Guido van Rossum3bead091992-01-27 17:00:37 +0000118print 'dir'
119x = 1
120if 'x' not in dir(): raise TestFailed, 'dir()'
121import sys
122if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
123
124print 'divmod'
125if divmod(12, 7) <> (1, 5): raise TestFailed, 'divmod(12, 7)'
126if divmod(-12, 7) <> (-2, 2): raise TestFailed, 'divmod(-12, 7)'
127if divmod(12, -7) <> (-2, -2): raise TestFailed, 'divmod(12, -7)'
128if divmod(-12, -7) <> (1, -5): raise TestFailed, 'divmod(-12, -7)'
129#
130if divmod(12L, 7L) <> (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
131if divmod(-12L, 7L) <> (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
132if divmod(12L, -7L) <> (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
133if divmod(-12L, -7L) <> (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
134#
135if divmod(12, 7L) <> (1, 5L): raise TestFailed, 'divmod(12, 7L)'
136if divmod(-12, 7L) <> (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
137if divmod(12L, -7) <> (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
138if divmod(-12L, -7) <> (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
139#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000140if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000141 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000142if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
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), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000147 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000148
149print 'eval'
150if eval('1+1') <> 2: raise TestFailed, 'eval(\'1+1\')'
Guido van Rossum85f18201992-11-27 22:53:50 +0000151if eval(' 1+1\n') <> 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000152globals = {'a': 1, 'b': 2}
153locals = {'b': 200, 'c': 300}
154if eval('a', globals) <> 1: raise TestFailed, "eval(1)"
155if eval('a', globals, locals) <> 1: raise TestFailed, "eval(2)"
156if eval('b', globals, locals) <> 200: raise TestFailed, "eval(3)"
157if eval('c', globals, locals) <> 300: raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000158
Guido van Rossum85f18201992-11-27 22:53:50 +0000159print 'execfile'
160z = 0
161f = open(TESTFN, 'w')
162f.write('z = z+1\n')
163f.write('z = z*2\n')
164f.close()
165execfile(TESTFN)
Guido van Rossum824de251995-01-02 18:38:42 +0000166if z <> 2: raise TestFailed, "execfile(1)"
167globals['z'] = 0
168execfile(TESTFN, globals)
169if globals['z'] <> 2: raise TestFailed, "execfile(1)"
170locals['z'] = 0
171execfile(TESTFN, globals, locals)
172if locals['z'] <> 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000173unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000174
Guido van Rossume65cce51993-11-08 15:05:21 +0000175print 'filter'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000176if filter(lambda c: 'a' <= c <= 'z', 'Hello World') <> 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000177 raise TestFailed, 'filter (filter a string)'
Guido van Rossume65cce51993-11-08 15:05:21 +0000178if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) <> [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000179 raise TestFailed, 'filter (remove false values)'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000180if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) <> [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000181 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000182class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000183 def __init__(self, max):
184 self.max = max
185 self.sofar = []
186 def __len__(self): return len(self.sofar)
187 def __getitem__(self, i):
188 if not 0 <= i < self.max: raise IndexError
189 n = len(self.sofar)
190 while n <= i:
191 self.sofar.append(n*n)
192 n = n+1
193 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000194if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000195 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000196if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000197 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000198class StrSquares:
199 def __init__(self, max):
200 self.max = max
201 self.sofar = []
202 def __len__(self):
203 return len(self.sofar)
204 def __getitem__(self, i):
205 if not 0 <= i < self.max:
206 raise IndexError
207 n = len(self.sofar)
208 while n <= i:
209 self.sofar.append(str(n*n))
210 n = n+1
211 return self.sofar[i]
212def identity(item):
213 return 1
214filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000215
Guido van Rossum3bead091992-01-27 17:00:37 +0000216print 'float'
217if float(3.14) <> 3.14: raise TestFailed, 'float(3.14)'
218if float(314) <> 314.0: raise TestFailed, 'float(314)'
219if float(314L) <> 314.0: raise TestFailed, 'float(314L)'
Guido van Rossum52a0d7d1999-03-25 21:25:01 +0000220if float(" 3.14 ") <> 3.14: raise TestFailed, 'float(" 3.14 ")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000221if float(u" 3.14 ") <> 3.14: raise TestFailed, 'float(u" 3.14 ")'
222if float(u" \u0663.\u0661\u0664 ") <> 3.14:
223 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000224
225print 'getattr'
226import sys
227if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
228
Guido van Rossume23b62f1994-11-10 22:25:26 +0000229print 'hasattr'
230import sys
231if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
232
233print 'hash'
234hash(None)
235if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
236hash('spam')
237hash((0,1,2,3))
238def f(): pass
239
Guido van Rossum3bead091992-01-27 17:00:37 +0000240print 'hex'
241if hex(16) != '0x10': raise TestFailed, 'hex(16)'
242if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000243if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
244if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
245 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000246if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
247
Guido van Rossume23b62f1994-11-10 22:25:26 +0000248print 'id'
249id(None)
250id(1)
251id(1L)
252id(1.0)
253id('spam')
254id((0,1,2,3))
255id([0,1,2,3])
256id({'spam': 1, 'eggs': 2, 'ham': 3})
257
Guido van Rossum3bead091992-01-27 17:00:37 +0000258# Test input() later, together with raw_input
259
260print 'int'
261if int(314) <> 314: raise TestFailed, 'int(314)'
262if int(3.14) <> 3: raise TestFailed, 'int(3.14)'
263if int(314L) <> 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000264# Check that conversion from float truncates towards zero
265if int(-3.14) <> -3: raise TestFailed, 'int(-3.14)'
266if int(3.9) <> 3: raise TestFailed, 'int(3.9)'
267if int(-3.9) <> -3: raise TestFailed, 'int(-3.9)'
268if int(3.5) <> 3: raise TestFailed, 'int(3.5)'
269if int(-3.5) <> -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000270# Different base:
271if int("10",16) <> 16L: raise TestFailed, 'int("10",16)'
272if int(u"10",16) <> 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000273# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000274L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000275 ('0', 0),
276 ('1', 1),
277 ('9', 9),
278 ('10', 10),
279 ('99', 99),
280 ('100', 100),
281 ('314', 314),
282 (' 314', 314),
283 ('314 ', 314),
284 (' \t\t 314 \t\t ', 314),
285 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000286 (' 1x', ValueError),
287 (' 1 ', 1),
288 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000289 ('', ValueError),
290 (' ', ValueError),
291 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000292 (u'0', 0),
293 (u'1', 1),
294 (u'9', 9),
295 (u'10', 10),
296 (u'99', 99),
297 (u'100', 100),
298 (u'314', 314),
299 (u' 314', 314),
300 (u'\u0663\u0661\u0664 ', 314),
301 (u' \t\t 314 \t\t ', 314),
302 (u' 1x', ValueError),
303 (u' 1 ', 1),
304 (u' 1\02 ', ValueError),
305 (u'', ValueError),
306 (u' ', ValueError),
307 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000308]
309for s, v in L:
310 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000311 for prefix in "", " ", "\t", " \t\t ":
312 ss = prefix + sign + s
313 vv = v
314 if sign == "-" and v is not ValueError:
315 vv = -v
316 try:
317 if int(ss) != vv:
318 raise TestFailed, "int(%s)" % `ss`
319 except v:
320 pass
321 except ValueError, e:
322 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000323s = `-1-sys.maxint`
324if int(s)+1 != -sys.maxint:
325 raise TestFailed, "int(%s)" % `s`
326try:
327 int(s[1:])
328except ValueError:
329 pass
330else:
331 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000332
Barry Warsawd5430771997-08-22 21:27:03 +0000333print 'isinstance'
334class C:
335 pass
336class D(C):
337 pass
338class E:
339 pass
340c = C()
341d = D()
342e = E()
343if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
344if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
345if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
346if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
347if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
348try:
349 isinstance(E, 'foo')
350 raise TestFailed, 'isinstance(E, "foo")'
351except TypeError:
352 pass
353
354print 'issubclass'
355if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
356if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
357if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
358try:
359 issubclass('foo', E)
360 raise TestFailed, 'issubclass("foo", E)'
361except TypeError:
362 pass
363try:
364 issubclass(E, 'foo')
365 raise TestFailed, 'issubclass(E, "foo")'
366except TypeError:
367 pass
368
Guido van Rossum3bead091992-01-27 17:00:37 +0000369print 'len'
370if len('123') <> 3: raise TestFailed, 'len(\'123\')'
371if len(()) <> 0: raise TestFailed, 'len(())'
372if len((1, 2, 3, 4)) <> 4: raise TestFailed, 'len((1, 2, 3, 4))'
373if len([1, 2, 3, 4]) <> 4: raise TestFailed, 'len([1, 2, 3, 4])'
374if len({}) <> 0: raise TestFailed, 'len({})'
375if len({'a':1, 'b': 2}) <> 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
376
377print 'long'
378if long(314) <> 314L: raise TestFailed, 'long(314)'
379if long(3.14) <> 3L: raise TestFailed, 'long(3.14)'
380if long(314L) <> 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000381# Check that conversion from float truncates towards zero
382if long(-3.14) <> -3L: raise TestFailed, 'long(-3.14)'
383if long(3.9) <> 3L: raise TestFailed, 'long(3.9)'
384if long(-3.9) <> -3L: raise TestFailed, 'long(-3.9)'
385if long(3.5) <> 3L: raise TestFailed, 'long(3.5)'
386if long(-3.5) <> -3L: raise TestFailed, 'long(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000387if long("-3") <> -3L: raise TestFailed, 'long("-3")'
388if long(u"-3") <> -3L: raise TestFailed, 'long(u"-3")'
389# Different base:
390if long("10",16) <> 16L: raise TestFailed, 'long("10",16)'
391if long(u"10",16) <> 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000392# Check conversions from string (same test set as for int(), and then some)
393LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000394 ('1' + '0'*20, 10L**20),
395 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000396 (u'1' + u'0'*20, 10L**20),
397 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000398]
399for s, v in L + LL:
400 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000401 for prefix in "", " ", "\t", " \t\t ":
402 ss = prefix + sign + s
403 vv = v
404 if sign == "-" and v is not ValueError:
405 vv = -v
406 try:
407 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000408 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000409 except v:
410 pass
411 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000412 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000413
Guido van Rossume65cce51993-11-08 15:05:21 +0000414print 'map'
415if map(None, 'hello world') <> ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000416 raise TestFailed, 'map(None, \'hello world\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000417if map(None, 'abcd', 'efg') <> \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000418 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
419 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000420if map(None, range(10)) <> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000421 raise TestFailed, 'map(None, range(10))'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000422if map(lambda x: x*x, range(1,4)) <> [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000423 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000424try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000425 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000426except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000427 def sqrt(x):
428 return pow(x, 0.5)
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000429if 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 +0000430 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000431if map(lambda x, y: x+y, [1,3,2], [9,1,4]) <> [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000432 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000433def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000434 accu = 0
435 for i in v: accu = accu + i
436 return accu
Guido van Rossume65cce51993-11-08 15:05:21 +0000437if map(plus, [1, 3, 7]) <> [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000438 raise TestFailed, 'map(plus, [1, 3, 7])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000439if map(plus, [1, 3, 7], [4, 9, 2]) <> [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000440 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000441if 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 +0000442 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000443if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000444 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000445if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000446 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000447if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000448 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum69256611998-06-11 22:25:59 +0000449if map(max, Squares(3), Squares(2)) != [0, 1, None]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000450 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000451
Guido van Rossum3bead091992-01-27 17:00:37 +0000452print 'max'
453if max('123123') <> '3': raise TestFailed, 'max(\'123123\')'
454if max(1, 2, 3) <> 3: raise TestFailed, 'max(1, 2, 3)'
455if max((1, 2, 3, 1, 2, 3)) <> 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
456if max([1, 2, 3, 1, 2, 3]) <> 3: raise TestFailed, 'max([1, 2, 3, 1, 2, 3])'
457#
458if max(1, 2L, 3.0) <> 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
459if max(1L, 2.0, 3) <> 3: raise TestFailed, 'max(1L, 2.0, 3)'
460if max(1.0, 2, 3L) <> 3L: raise TestFailed, 'max(1.0, 2, 3L)'
461
462print 'min'
463if min('123123') <> '1': raise TestFailed, 'min(\'123123\')'
464if min(1, 2, 3) <> 1: raise TestFailed, 'min(1, 2, 3)'
465if min((1, 2, 3, 1, 2, 3)) <> 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
466if min([1, 2, 3, 1, 2, 3]) <> 1: raise TestFailed, 'min([1, 2, 3, 1, 2, 3])'
467#
468if min(1, 2L, 3.0) <> 1: raise TestFailed, 'min(1, 2L, 3.0)'
469if min(1L, 2.0, 3) <> 1L: raise TestFailed, 'min(1L, 2.0, 3)'
470if min(1.0, 2, 3L) <> 1.0: raise TestFailed, 'min(1.0, 2, 3L)'