blob: ea09d0be8ce04c124ab392f418fd1106fae0c84f [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"
Guido van Rossum3bead091992-01-27 17:00:37 +0000369
Barry Warsawd5430771997-08-22 21:27:03 +0000370print 'isinstance'
371class C:
372 pass
373class D(C):
374 pass
375class E:
376 pass
377c = C()
378d = D()
379e = E()
380if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
381if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
382if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
383if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
384if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
385try:
386 isinstance(E, 'foo')
387 raise TestFailed, 'isinstance(E, "foo")'
388except TypeError:
389 pass
390
391print 'issubclass'
392if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
393if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
394if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
395try:
396 issubclass('foo', E)
397 raise TestFailed, 'issubclass("foo", E)'
398except TypeError:
399 pass
400try:
401 issubclass(E, 'foo')
402 raise TestFailed, 'issubclass(E, "foo")'
403except TypeError:
404 pass
405
Guido van Rossum3bead091992-01-27 17:00:37 +0000406print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000407if len('123') != 3: raise TestFailed, 'len(\'123\')'
408if len(()) != 0: raise TestFailed, 'len(())'
409if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
410if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
411if len({}) != 0: raise TestFailed, 'len({})'
412if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000413
414print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000415if long(314) != 314L: raise TestFailed, 'long(314)'
416if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
417if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000418# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000419if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
420if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
421if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
422if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
423if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
424if long("-3") != -3L: raise TestFailed, 'long("-3")'
425if long(u"-3") != -3L: raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000426# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000427if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
428if long(u"10",16) != 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000429# Check conversions from string (same test set as for int(), and then some)
430LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000431 ('1' + '0'*20, 10L**20),
432 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000433 (u'1' + u'0'*20, 10L**20),
434 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000435]
436for s, v in L + LL:
437 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000438 for prefix in "", " ", "\t", " \t\t ":
439 ss = prefix + sign + s
440 vv = v
441 if sign == "-" and v is not ValueError:
442 vv = -v
443 try:
444 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000445 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000446 except v:
447 pass
448 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000449 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000450
Guido van Rossume65cce51993-11-08 15:05:21 +0000451print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000452if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000453 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000454if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000455 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
456 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000457if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000458 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000459if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000460 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000461try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000462 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000463except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000464 def sqrt(x):
465 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000466if 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 +0000467 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000468if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000469 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000470def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000471 accu = 0
472 for i in v: accu = accu + i
473 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000474if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000475 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000476if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000477 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000478if 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 +0000479 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000480if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000481 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000482if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000483 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000484if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000485 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum7f9b5e02001-01-22 19:30:07 +0000486if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000487 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000488
Guido van Rossum3bead091992-01-27 17:00:37 +0000489print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000490if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
491if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
492if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
493if 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 +0000494#
Fred Drake132dce22000-12-12 23:11:42 +0000495if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
496if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
497if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000498
499print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000500if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
501if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
502if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
503if 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 +0000504#
Fred Drake132dce22000-12-12 23:11:42 +0000505if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
506if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
507if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'