blob: bddd157ad5477189caa37f2d175de98af12bb5fe [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
Guido van Rossum0c6614c2001-01-18 23:36:14 +0000270try: hash([])
271except TypeError: pass
272else: raise TestFailed, "hash([]) should raise an exception"
273try: hash({})
274except TypeError: pass
275else: raise TestFailed, "hash({}) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000276
Guido van Rossum3bead091992-01-27 17:00:37 +0000277print 'hex'
278if hex(16) != '0x10': raise TestFailed, 'hex(16)'
279if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000280if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
281if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
282 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000283if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
284
Guido van Rossume23b62f1994-11-10 22:25:26 +0000285print 'id'
286id(None)
287id(1)
288id(1L)
289id(1.0)
290id('spam')
291id((0,1,2,3))
292id([0,1,2,3])
293id({'spam': 1, 'eggs': 2, 'ham': 3})
294
Guido van Rossum3bead091992-01-27 17:00:37 +0000295# Test input() later, together with raw_input
296
297print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000298if int(314) != 314: raise TestFailed, 'int(314)'
299if int(3.14) != 3: raise TestFailed, 'int(3.14)'
300if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000301# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000302if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
303if int(3.9) != 3: raise TestFailed, 'int(3.9)'
304if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
305if int(3.5) != 3: raise TestFailed, 'int(3.5)'
306if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000307# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000308if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
309if int(u"10",16) != 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000310# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000311L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000312 ('0', 0),
313 ('1', 1),
314 ('9', 9),
315 ('10', 10),
316 ('99', 99),
317 ('100', 100),
318 ('314', 314),
319 (' 314', 314),
320 ('314 ', 314),
321 (' \t\t 314 \t\t ', 314),
322 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000323 (' 1x', ValueError),
324 (' 1 ', 1),
325 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000326 ('', ValueError),
327 (' ', ValueError),
328 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000329 (u'0', 0),
330 (u'1', 1),
331 (u'9', 9),
332 (u'10', 10),
333 (u'99', 99),
334 (u'100', 100),
335 (u'314', 314),
336 (u' 314', 314),
337 (u'\u0663\u0661\u0664 ', 314),
338 (u' \t\t 314 \t\t ', 314),
339 (u' 1x', ValueError),
340 (u' 1 ', 1),
341 (u' 1\02 ', ValueError),
342 (u'', ValueError),
343 (u' ', ValueError),
344 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000345]
346for s, v in L:
347 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000348 for prefix in "", " ", "\t", " \t\t ":
349 ss = prefix + sign + s
350 vv = v
351 if sign == "-" and v is not ValueError:
352 vv = -v
353 try:
354 if int(ss) != vv:
355 raise TestFailed, "int(%s)" % `ss`
356 except v:
357 pass
358 except ValueError, e:
359 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000360s = `-1-sys.maxint`
361if int(s)+1 != -sys.maxint:
362 raise TestFailed, "int(%s)" % `s`
363try:
364 int(s[1:])
365except ValueError:
366 pass
367else:
368 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Tim Peters7321ec42001-07-26 20:02:17 +0000369try:
370 int(1e100)
371except OverflowError:
372 pass
373else:
374 raise TestFailed("int(1e100) expected OverflowError")
375try:
376 int(-1e100)
377except OverflowError:
378 pass
379else:
380 raise TestFailed("int(-1e100) expected OverflowError")
381
Guido van Rossum3bead091992-01-27 17:00:37 +0000382
Tim Peters1dad6a82001-06-18 19:21:11 +0000383# SF bug 434186: 0x80000000/2 != 0x80000000>>1.
384# Worked by accident in Windows release build, but failed in debug build.
385# Failed in all Linux builds.
386x = -1-sys.maxint
387if x >> 1 != x/2:
388 raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")
389
Barry Warsawd5430771997-08-22 21:27:03 +0000390print 'isinstance'
391class C:
392 pass
393class D(C):
394 pass
395class E:
396 pass
397c = C()
398d = D()
399e = E()
400if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
401if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
402if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
403if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
404if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
405try:
406 isinstance(E, 'foo')
407 raise TestFailed, 'isinstance(E, "foo")'
408except TypeError:
409 pass
410
411print 'issubclass'
412if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
413if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
414if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
415try:
416 issubclass('foo', E)
417 raise TestFailed, 'issubclass("foo", E)'
418except TypeError:
419 pass
420try:
421 issubclass(E, 'foo')
422 raise TestFailed, 'issubclass(E, "foo")'
423except TypeError:
424 pass
425
Guido van Rossum3bead091992-01-27 17:00:37 +0000426print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000427if len('123') != 3: raise TestFailed, 'len(\'123\')'
428if len(()) != 0: raise TestFailed, 'len(())'
429if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
430if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
431if len({}) != 0: raise TestFailed, 'len({})'
432if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000433
434print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000435if long(314) != 314L: raise TestFailed, 'long(314)'
436if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
437if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000438# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000439if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
440if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
441if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
442if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
443if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
444if long("-3") != -3L: raise TestFailed, 'long("-3")'
445if long(u"-3") != -3L: raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000446# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000447if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
448if long(u"10",16) != 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000449# Check conversions from string (same test set as for int(), and then some)
450LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000451 ('1' + '0'*20, 10L**20),
452 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000453 (u'1' + u'0'*20, 10L**20),
454 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000455]
456for s, v in L + LL:
457 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000458 for prefix in "", " ", "\t", " \t\t ":
459 ss = prefix + sign + s
460 vv = v
461 if sign == "-" and v is not ValueError:
462 vv = -v
463 try:
464 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000465 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000466 except v:
467 pass
468 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000469 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000470
Guido van Rossume65cce51993-11-08 15:05:21 +0000471print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000472if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000473 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000474if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000475 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
476 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000477if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000478 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000479if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000480 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000481try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000482 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000483except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000484 def sqrt(x):
485 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000486if 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 +0000487 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000488if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000489 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000490def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000491 accu = 0
492 for i in v: accu = accu + i
493 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000494if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000495 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000496if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000497 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000498if 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 +0000499 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000500if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000501 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000502if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000503 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000504if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000505 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum7f9b5e02001-01-22 19:30:07 +0000506if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000507 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000508
Guido van Rossum3bead091992-01-27 17:00:37 +0000509print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000510if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
511if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
512if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
513if 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 +0000514#
Fred Drake132dce22000-12-12 23:11:42 +0000515if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
516if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
517if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000518
519print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000520if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
521if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
522if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
523if 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 +0000524#
Fred Drake132dce22000-12-12 23:11:42 +0000525if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
526if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
527if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'