blob: 95110790f0a9f3cf84bb9efa2160a5030f239d9c [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
Fred Drake1a7aab72001-01-04 22:33:02 +000042# A PyCFunction that takes only positional parameters should allow an
43# empty keyword dictionary to pass without a complaint, but raise a
44# TypeError if the dictionary is non-empty.
45apply(id, (1,), {})
46try:
47 apply(id, (1,), {"foo": 1})
48except TypeError:
49 pass
50else:
51 raise TestFailed, 'expected TypeError; no exception raised'
52
Guido van Rossume23b62f1994-11-10 22:25:26 +000053print 'callable'
54if not callable(len):raise TestFailed, 'callable(len)'
55def f(): pass
56if not callable(f): raise TestFailed, 'callable(f)'
57class C:
Guido van Rossum27d445f1998-08-10 20:12:34 +000058 def meth(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000059if not callable(C): raise TestFailed, 'callable(C)'
60x = C()
61if not callable(x.meth): raise TestFailed, 'callable(x.meth)'
62if callable(x): raise TestFailed, 'callable(x)'
63class D(C):
Guido van Rossum27d445f1998-08-10 20:12:34 +000064 def __call__(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000065y = D()
66if not callable(y): raise TestFailed, 'callable(y)'
Jeremy Hylton5ab36612001-01-03 23:53:31 +000067y()
Guido van Rossume23b62f1994-11-10 22:25:26 +000068
Guido van Rossum3bead091992-01-27 17:00:37 +000069print 'chr'
Fred Drake132dce22000-12-12 23:11:42 +000070if chr(32) != ' ': raise TestFailed, 'chr(32)'
71if chr(65) != 'A': raise TestFailed, 'chr(65)'
72if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum3bead091992-01-27 17:00:37 +000073
Neil Schemenauer38f02232001-01-04 01:33:41 +000074# cmp
Guido van Rossum85f18201992-11-27 22:53:50 +000075print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000076if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
77if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
78if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000079# verify that circular objects are handled
80a = []; a.append(a)
81b = []; b.append(b)
82from UserList import UserList
83c = UserList(); c.append(c)
84if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
85if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
86if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
87if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000088# okay, now break the cycles
89a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000090
91print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000092if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +000093if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000094if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000095
Guido van Rossume23b62f1994-11-10 22:25:26 +000096print 'compile'
97compile('print 1\n', '', 'exec')
98
Guido van Rossumdddf7a61997-03-31 17:13:17 +000099print 'complex'
Fred Drake132dce22000-12-12 23:11:42 +0000100if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
101if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
102if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
103if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
104if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
105if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
106if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
107if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
108if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
109if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
110if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
111if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
112if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
113if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
114if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
115if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
116if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
117if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
118if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
119if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
120if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
121if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
122if complex(u" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(u" 3.14+J )"'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000123class Z:
124 def __complex__(self): return 3.14j
125z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000126if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000127
Guido van Rossume23b62f1994-11-10 22:25:26 +0000128print 'delattr'
129import sys
130sys.spam = 1
131delattr(sys, 'spam')
132
Guido van Rossum3bead091992-01-27 17:00:37 +0000133print 'dir'
134x = 1
135if 'x' not in dir(): raise TestFailed, 'dir()'
136import sys
137if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
138
139print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000140if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
141if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
142if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
143if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000144#
Fred Drake132dce22000-12-12 23:11:42 +0000145if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
146if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
147if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
148if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000149#
Fred Drake132dce22000-12-12 23:11:42 +0000150if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
151if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
152if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
153if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000154#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000155if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000156 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000157if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000158 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000159if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000160 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000161if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000162 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000163
164print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000165if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
166if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000167globals = {'a': 1, 'b': 2}
168locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000169if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000170 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000171if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000172 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000173if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000174 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000175if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000176 raise TestFailed, "eval(4)"
Fred Drake132dce22000-12-12 23:11:42 +0000177if eval(u'1+1') != 2: raise TestFailed, 'eval(u\'1+1\')'
178if eval(u' 1+1\n') != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000179globals = {'a': 1, 'b': 2}
180locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000181if eval(u'a', globals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000182 raise TestFailed, "eval(1) == %s" % eval(u'a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000183if eval(u'a', globals, locals) != 1:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000184 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000185if eval(u'b', globals, locals) != 200:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000186 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000187if eval(u'c', globals, locals) != 300:
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000188 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000189
Guido van Rossum85f18201992-11-27 22:53:50 +0000190print 'execfile'
191z = 0
192f = open(TESTFN, 'w')
193f.write('z = z+1\n')
194f.write('z = z*2\n')
195f.close()
196execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000197if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000198globals['z'] = 0
199execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000200if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000201locals['z'] = 0
202execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000203if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000204unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000205
Guido van Rossume65cce51993-11-08 15:05:21 +0000206print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000207if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000208 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000209if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000210 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000211if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000212 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000213class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000214 def __init__(self, max):
215 self.max = max
216 self.sofar = []
217 def __len__(self): return len(self.sofar)
218 def __getitem__(self, i):
219 if not 0 <= i < self.max: raise IndexError
220 n = len(self.sofar)
221 while n <= i:
222 self.sofar.append(n*n)
223 n = n+1
224 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000225if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000226 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000227if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000228 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000229class StrSquares:
230 def __init__(self, max):
231 self.max = max
232 self.sofar = []
233 def __len__(self):
234 return len(self.sofar)
235 def __getitem__(self, i):
236 if not 0 <= i < self.max:
237 raise IndexError
238 n = len(self.sofar)
239 while n <= i:
240 self.sofar.append(str(n*n))
241 n = n+1
242 return self.sofar[i]
243def identity(item):
244 return 1
245filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000246
Guido van Rossum3bead091992-01-27 17:00:37 +0000247print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000248if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
249if float(314) != 314.0: raise TestFailed, 'float(314)'
250if float(314L) != 314.0: raise TestFailed, 'float(314L)'
251if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
252if float(u" 3.14 ") != 3.14: raise TestFailed, 'float(u" 3.14 ")'
253if float(u" \u0663.\u0661\u0664 ") != 3.14:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000254 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000255
256print 'getattr'
257import sys
258if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
259
Guido van Rossume23b62f1994-11-10 22:25:26 +0000260print 'hasattr'
261import sys
262if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
263
264print 'hash'
265hash(None)
266if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
267hash('spam')
268hash((0,1,2,3))
269def f(): pass
270
Guido van Rossum3bead091992-01-27 17:00:37 +0000271print 'hex'
272if hex(16) != '0x10': raise TestFailed, 'hex(16)'
273if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000274if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
275if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
276 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000277if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
278
Guido van Rossume23b62f1994-11-10 22:25:26 +0000279print 'id'
280id(None)
281id(1)
282id(1L)
283id(1.0)
284id('spam')
285id((0,1,2,3))
286id([0,1,2,3])
287id({'spam': 1, 'eggs': 2, 'ham': 3})
288
Guido van Rossum3bead091992-01-27 17:00:37 +0000289# Test input() later, together with raw_input
290
291print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000292if int(314) != 314: raise TestFailed, 'int(314)'
293if int(3.14) != 3: raise TestFailed, 'int(3.14)'
294if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000295# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000296if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
297if int(3.9) != 3: raise TestFailed, 'int(3.9)'
298if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
299if int(3.5) != 3: raise TestFailed, 'int(3.5)'
300if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000301# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000302if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
303if int(u"10",16) != 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000304# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000305L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000306 ('0', 0),
307 ('1', 1),
308 ('9', 9),
309 ('10', 10),
310 ('99', 99),
311 ('100', 100),
312 ('314', 314),
313 (' 314', 314),
314 ('314 ', 314),
315 (' \t\t 314 \t\t ', 314),
316 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000317 (' 1x', ValueError),
318 (' 1 ', 1),
319 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000320 ('', ValueError),
321 (' ', ValueError),
322 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000323 (u'0', 0),
324 (u'1', 1),
325 (u'9', 9),
326 (u'10', 10),
327 (u'99', 99),
328 (u'100', 100),
329 (u'314', 314),
330 (u' 314', 314),
331 (u'\u0663\u0661\u0664 ', 314),
332 (u' \t\t 314 \t\t ', 314),
333 (u' 1x', ValueError),
334 (u' 1 ', 1),
335 (u' 1\02 ', ValueError),
336 (u'', ValueError),
337 (u' ', ValueError),
338 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000339]
340for s, v in L:
341 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000342 for prefix in "", " ", "\t", " \t\t ":
343 ss = prefix + sign + s
344 vv = v
345 if sign == "-" and v is not ValueError:
346 vv = -v
347 try:
348 if int(ss) != vv:
349 raise TestFailed, "int(%s)" % `ss`
350 except v:
351 pass
352 except ValueError, e:
353 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000354s = `-1-sys.maxint`
355if int(s)+1 != -sys.maxint:
356 raise TestFailed, "int(%s)" % `s`
357try:
358 int(s[1:])
359except ValueError:
360 pass
361else:
362 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Guido van Rossum3bead091992-01-27 17:00:37 +0000363
Barry Warsawd5430771997-08-22 21:27:03 +0000364print 'isinstance'
365class C:
366 pass
367class D(C):
368 pass
369class E:
370 pass
371c = C()
372d = D()
373e = E()
374if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
375if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
376if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
377if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
378if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
379try:
380 isinstance(E, 'foo')
381 raise TestFailed, 'isinstance(E, "foo")'
382except TypeError:
383 pass
384
385print 'issubclass'
386if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
387if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
388if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
389try:
390 issubclass('foo', E)
391 raise TestFailed, 'issubclass("foo", E)'
392except TypeError:
393 pass
394try:
395 issubclass(E, 'foo')
396 raise TestFailed, 'issubclass(E, "foo")'
397except TypeError:
398 pass
399
Guido van Rossum3bead091992-01-27 17:00:37 +0000400print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000401if len('123') != 3: raise TestFailed, 'len(\'123\')'
402if len(()) != 0: raise TestFailed, 'len(())'
403if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
404if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
405if len({}) != 0: raise TestFailed, 'len({})'
406if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000407
408print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000409if long(314) != 314L: raise TestFailed, 'long(314)'
410if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
411if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000412# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000413if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
414if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
415if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
416if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
417if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
418if long("-3") != -3L: raise TestFailed, 'long("-3")'
419if long(u"-3") != -3L: raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000420# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000421if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
422if long(u"10",16) != 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000423# Check conversions from string (same test set as for int(), and then some)
424LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000425 ('1' + '0'*20, 10L**20),
426 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000427 (u'1' + u'0'*20, 10L**20),
428 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000429]
430for s, v in L + LL:
431 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000432 for prefix in "", " ", "\t", " \t\t ":
433 ss = prefix + sign + s
434 vv = v
435 if sign == "-" and v is not ValueError:
436 vv = -v
437 try:
438 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000439 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000440 except v:
441 pass
442 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000443 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000444
Guido van Rossume65cce51993-11-08 15:05:21 +0000445print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000446if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000447 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000448if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000449 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
450 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000451if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000452 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000453if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000454 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000455try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000456 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000457except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000458 def sqrt(x):
459 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000460if 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 +0000461 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000462if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000463 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000464def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000465 accu = 0
466 for i in v: accu = accu + i
467 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000468if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000469 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000470if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000471 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000472if 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 +0000473 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000474if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000475 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000476if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000477 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000478if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000479 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Neil Schemenauer38f02232001-01-04 01:33:41 +0000480if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000481 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000482
Guido van Rossum3bead091992-01-27 17:00:37 +0000483print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000484if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
485if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
486if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
487if 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 +0000488#
Fred Drake132dce22000-12-12 23:11:42 +0000489if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
490if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
491if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000492
493print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000494if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
495if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
496if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
497if 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 +0000498#
Fred Drake132dce22000-12-12 23:11:42 +0000499if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
500if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
501if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'