blob: 7155294e8f1d01f57211393625c317d05de531f2 [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)'
66
67print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000068if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000069if coerce(1, 1L) <> (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000070if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000071
Guido van Rossume23b62f1994-11-10 22:25:26 +000072print 'compile'
73compile('print 1\n', '', 'exec')
74
Guido van Rossumdddf7a61997-03-31 17:13:17 +000075print 'complex'
76if complex(1,10) <> 1+10j: raise TestFailed, 'complex(1,10)'
77if complex(1,10L) <> 1+10j: raise TestFailed, 'complex(1,10L)'
78if complex(1,10.0) <> 1+10j: raise TestFailed, 'complex(1,10.0)'
79if complex(1L,10) <> 1+10j: raise TestFailed, 'complex(1L,10)'
80if complex(1L,10L) <> 1+10j: raise TestFailed, 'complex(1L,10L)'
81if complex(1L,10.0) <> 1+10j: raise TestFailed, 'complex(1L,10.0)'
82if complex(1.0,10) <> 1+10j: raise TestFailed, 'complex(1.0,10)'
83if complex(1.0,10L) <> 1+10j: raise TestFailed, 'complex(1.0,10L)'
84if complex(1.0,10.0) <> 1+10j: raise TestFailed, 'complex(1.0,10.0)'
85if complex(3.14+0j) <> 3.14+0j: raise TestFailed, 'complex(3.14)'
86if complex(3.14) <> 3.14+0j: raise TestFailed, 'complex(3.14)'
87if complex(314) <> 314.0+0j: raise TestFailed, 'complex(314)'
88if complex(314L) <> 314.0+0j: raise TestFailed, 'complex(314L)'
89if complex(3.14+0j, 0j) <> 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
90if complex(3.14, 0.0) <> 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
91if complex(314, 0) <> 314.0+0j: raise TestFailed, 'complex(314, 0)'
92if complex(314L, 0L) <> 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
93if complex(0j, 3.14j) <> -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
94if complex(0.0, 3.14j) <> -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
95if complex(0j, 3.14) <> 3.14j: raise TestFailed, 'complex(0j, 3.14)'
96if complex(0.0, 3.14) <> 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
97class Z:
98 def __complex__(self): return 3.14j
99z = Z()
100if complex(z) <> 3.14j: raise TestFailed, 'complex(classinstance)'
101
Guido van Rossume23b62f1994-11-10 22:25:26 +0000102print 'delattr'
103import sys
104sys.spam = 1
105delattr(sys, 'spam')
106
Guido van Rossum3bead091992-01-27 17:00:37 +0000107print 'dir'
108x = 1
109if 'x' not in dir(): raise TestFailed, 'dir()'
110import sys
111if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
112
113print 'divmod'
114if divmod(12, 7) <> (1, 5): raise TestFailed, 'divmod(12, 7)'
115if divmod(-12, 7) <> (-2, 2): raise TestFailed, 'divmod(-12, 7)'
116if divmod(12, -7) <> (-2, -2): raise TestFailed, 'divmod(12, -7)'
117if divmod(-12, -7) <> (1, -5): raise TestFailed, 'divmod(-12, -7)'
118#
119if divmod(12L, 7L) <> (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
120if divmod(-12L, 7L) <> (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
121if divmod(12L, -7L) <> (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
122if divmod(-12L, -7L) <> (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
123#
124if divmod(12, 7L) <> (1, 5L): raise TestFailed, 'divmod(12, 7L)'
125if divmod(-12, 7L) <> (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
126if divmod(12L, -7) <> (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
127if divmod(-12L, -7) <> (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
128#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000129if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000130 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000131if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000132 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000133if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000134 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000135if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000136 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000137
138print 'eval'
139if eval('1+1') <> 2: raise TestFailed, 'eval(\'1+1\')'
Guido van Rossum85f18201992-11-27 22:53:50 +0000140if eval(' 1+1\n') <> 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000141globals = {'a': 1, 'b': 2}
142locals = {'b': 200, 'c': 300}
143if eval('a', globals) <> 1: raise TestFailed, "eval(1)"
144if eval('a', globals, locals) <> 1: raise TestFailed, "eval(2)"
145if eval('b', globals, locals) <> 200: raise TestFailed, "eval(3)"
146if eval('c', globals, locals) <> 300: raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000147
Guido van Rossum85f18201992-11-27 22:53:50 +0000148print 'execfile'
149z = 0
150f = open(TESTFN, 'w')
151f.write('z = z+1\n')
152f.write('z = z*2\n')
153f.close()
154execfile(TESTFN)
Guido van Rossum824de251995-01-02 18:38:42 +0000155if z <> 2: raise TestFailed, "execfile(1)"
156globals['z'] = 0
157execfile(TESTFN, globals)
158if globals['z'] <> 2: raise TestFailed, "execfile(1)"
159locals['z'] = 0
160execfile(TESTFN, globals, locals)
161if locals['z'] <> 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000162unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000163
Guido van Rossume65cce51993-11-08 15:05:21 +0000164print 'filter'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000165if filter(lambda c: 'a' <= c <= 'z', 'Hello World') <> 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000166 raise TestFailed, 'filter (filter a string)'
Guido van Rossume65cce51993-11-08 15:05:21 +0000167if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) <> [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000168 raise TestFailed, 'filter (remove false values)'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000169if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) <> [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000170 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000171class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000172 def __init__(self, max):
173 self.max = max
174 self.sofar = []
175 def __len__(self): return len(self.sofar)
176 def __getitem__(self, i):
177 if not 0 <= i < self.max: raise IndexError
178 n = len(self.sofar)
179 while n <= i:
180 self.sofar.append(n*n)
181 n = n+1
182 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000183if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000184 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000185if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000186 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000187class StrSquares:
188 def __init__(self, max):
189 self.max = max
190 self.sofar = []
191 def __len__(self):
192 return len(self.sofar)
193 def __getitem__(self, i):
194 if not 0 <= i < self.max:
195 raise IndexError
196 n = len(self.sofar)
197 while n <= i:
198 self.sofar.append(str(n*n))
199 n = n+1
200 return self.sofar[i]
201def identity(item):
202 return 1
203filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000204
Guido van Rossum3bead091992-01-27 17:00:37 +0000205print 'float'
206if float(3.14) <> 3.14: raise TestFailed, 'float(3.14)'
207if float(314) <> 314.0: raise TestFailed, 'float(314)'
208if float(314L) <> 314.0: raise TestFailed, 'float(314L)'
209
210print 'getattr'
211import sys
212if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
213
Guido van Rossume23b62f1994-11-10 22:25:26 +0000214print 'hasattr'
215import sys
216if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
217
218print 'hash'
219hash(None)
220if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
221hash('spam')
222hash((0,1,2,3))
223def f(): pass
224
Guido van Rossum3bead091992-01-27 17:00:37 +0000225print 'hex'
226if hex(16) != '0x10': raise TestFailed, 'hex(16)'
227if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000228if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
229if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
230 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000231if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
232
Guido van Rossume23b62f1994-11-10 22:25:26 +0000233print 'id'
234id(None)
235id(1)
236id(1L)
237id(1.0)
238id('spam')
239id((0,1,2,3))
240id([0,1,2,3])
241id({'spam': 1, 'eggs': 2, 'ham': 3})
242
Guido van Rossum3bead091992-01-27 17:00:37 +0000243# Test input() later, together with raw_input
244
245print 'int'
246if int(314) <> 314: raise TestFailed, 'int(314)'
247if int(3.14) <> 3: raise TestFailed, 'int(3.14)'
248if int(314L) <> 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000249# Check that conversion from float truncates towards zero
250if int(-3.14) <> -3: raise TestFailed, 'int(-3.14)'
251if int(3.9) <> 3: raise TestFailed, 'int(3.9)'
252if int(-3.9) <> -3: raise TestFailed, 'int(-3.9)'
253if int(3.5) <> 3: raise TestFailed, 'int(3.5)'
254if int(-3.5) <> -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum70115041998-06-30 17:02:20 +0000255# Test conversion fron strings and various anomalies
256L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000257 ('0', 0),
258 ('1', 1),
259 ('9', 9),
260 ('10', 10),
261 ('99', 99),
262 ('100', 100),
263 ('314', 314),
264 (' 314', 314),
265 ('314 ', 314),
266 (' \t\t 314 \t\t ', 314),
267 (`sys.maxint`, sys.maxint),
268 ('', ValueError),
269 (' ', ValueError),
270 (' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000271]
272for s, v in L:
273 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000274 for prefix in "", " ", "\t", " \t\t ":
275 ss = prefix + sign + s
276 vv = v
277 if sign == "-" and v is not ValueError:
278 vv = -v
279 try:
280 if int(ss) != vv:
281 raise TestFailed, "int(%s)" % `ss`
282 except v:
283 pass
284 except ValueError, e:
285 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000286s = `-1-sys.maxint`
287if int(s)+1 != -sys.maxint:
288 raise TestFailed, "int(%s)" % `s`
289try:
290 int(s[1:])
291except ValueError:
292 pass
293else:
294 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000295
Barry Warsawd5430771997-08-22 21:27:03 +0000296print 'isinstance'
297class C:
298 pass
299class D(C):
300 pass
301class E:
302 pass
303c = C()
304d = D()
305e = E()
306if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
307if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
308if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
309if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
310if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
311try:
312 isinstance(E, 'foo')
313 raise TestFailed, 'isinstance(E, "foo")'
314except TypeError:
315 pass
316
317print 'issubclass'
318if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
319if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
320if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
321try:
322 issubclass('foo', E)
323 raise TestFailed, 'issubclass("foo", E)'
324except TypeError:
325 pass
326try:
327 issubclass(E, 'foo')
328 raise TestFailed, 'issubclass(E, "foo")'
329except TypeError:
330 pass
331
Guido van Rossum3bead091992-01-27 17:00:37 +0000332print 'len'
333if len('123') <> 3: raise TestFailed, 'len(\'123\')'
334if len(()) <> 0: raise TestFailed, 'len(())'
335if len((1, 2, 3, 4)) <> 4: raise TestFailed, 'len((1, 2, 3, 4))'
336if len([1, 2, 3, 4]) <> 4: raise TestFailed, 'len([1, 2, 3, 4])'
337if len({}) <> 0: raise TestFailed, 'len({})'
338if len({'a':1, 'b': 2}) <> 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
339
340print 'long'
341if long(314) <> 314L: raise TestFailed, 'long(314)'
342if long(3.14) <> 3L: raise TestFailed, 'long(3.14)'
343if long(314L) <> 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000344# Check that conversion from float truncates towards zero
345if long(-3.14) <> -3L: raise TestFailed, 'long(-3.14)'
346if long(3.9) <> 3L: raise TestFailed, 'long(3.9)'
347if long(-3.9) <> -3L: raise TestFailed, 'long(-3.9)'
348if long(3.5) <> 3L: raise TestFailed, 'long(3.5)'
349if long(-3.5) <> -3L: raise TestFailed, 'long(-3.5)'
Guido van Rossum70115041998-06-30 17:02:20 +0000350# Check conversions from string (same test set as for int(), and then some)
351LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000352 ('1' + '0'*20, 10L**20),
353 ('1' + '0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000354]
355for s, v in L + LL:
356 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000357 for prefix in "", " ", "\t", " \t\t ":
358 ss = prefix + sign + s
359 vv = v
360 if sign == "-" and v is not ValueError:
361 vv = -v
362 try:
363 if long(ss) != long(vv):
364 raise TestFailed, "int(%s)" % `ss`
365 except v:
366 pass
367 except ValueError, e:
368 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000369
Guido van Rossume65cce51993-11-08 15:05:21 +0000370print 'map'
371if map(None, 'hello world') <> ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000372 raise TestFailed, 'map(None, \'hello world\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000373if map(None, 'abcd', 'efg') <> \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000374 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
375 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Guido van Rossume65cce51993-11-08 15:05:21 +0000376if map(None, range(10)) <> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000377 raise TestFailed, 'map(None, range(10))'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000378if map(lambda x: x*x, range(1,4)) <> [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000379 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000380try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000381 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000382except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000383 def sqrt(x):
384 return pow(x, 0.5)
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000385if 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 +0000386 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Guido van Rossumae3b3a31993-11-30 13:43:54 +0000387if map(lambda x, y: x+y, [1,3,2], [9,1,4]) <> [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000388 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000389def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000390 accu = 0
391 for i in v: accu = accu + i
392 return accu
Guido van Rossume65cce51993-11-08 15:05:21 +0000393if map(plus, [1, 3, 7]) <> [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000394 raise TestFailed, 'map(plus, [1, 3, 7])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000395if map(plus, [1, 3, 7], [4, 9, 2]) <> [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000396 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000397if 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 +0000398 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000399if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000400 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000401if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000402 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000403if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000404 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum69256611998-06-11 22:25:59 +0000405if map(max, Squares(3), Squares(2)) != [0, 1, None]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000406 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000407
Guido van Rossum3bead091992-01-27 17:00:37 +0000408print 'max'
409if max('123123') <> '3': raise TestFailed, 'max(\'123123\')'
410if max(1, 2, 3) <> 3: raise TestFailed, 'max(1, 2, 3)'
411if max((1, 2, 3, 1, 2, 3)) <> 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
412if max([1, 2, 3, 1, 2, 3]) <> 3: raise TestFailed, 'max([1, 2, 3, 1, 2, 3])'
413#
414if max(1, 2L, 3.0) <> 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
415if max(1L, 2.0, 3) <> 3: raise TestFailed, 'max(1L, 2.0, 3)'
416if max(1.0, 2, 3L) <> 3L: raise TestFailed, 'max(1.0, 2, 3L)'
417
418print 'min'
419if min('123123') <> '1': raise TestFailed, 'min(\'123123\')'
420if min(1, 2, 3) <> 1: raise TestFailed, 'min(1, 2, 3)'
421if min((1, 2, 3, 1, 2, 3)) <> 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
422if min([1, 2, 3, 1, 2, 3]) <> 1: raise TestFailed, 'min([1, 2, 3, 1, 2, 3])'
423#
424if min(1, 2L, 3.0) <> 1: raise TestFailed, 'min(1, 2L, 3.0)'
425if min(1L, 2.0, 3) <> 1L: raise TestFailed, 'min(1L, 2.0, 3)'
426if min(1.0, 2, 3L) <> 1.0: raise TestFailed, 'min(1.0, 2, 3L)'