blob: 1103a0397338d8191aef6fb9950bc9618a08ca64 [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'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000259try:
260 getattr(sys, 1)
261except TypeError:
262 pass
263else:
264 raise TestFailed, "getattr(sys, 1) should raise an exception"
265try:
266 getattr(sys, 1, "foo")
267except TypeError:
268 pass
269else:
270 raise TestFailed, 'getattr(sys, 1, "foo") should raise an exception'
Guido van Rossum3bead091992-01-27 17:00:37 +0000271
Guido van Rossume23b62f1994-11-10 22:25:26 +0000272print 'hasattr'
273import sys
274if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000275try:
276 hasattr(sys, 1)
277except TypeError:
278 pass
279else:
280 raise TestFailed, "hasattr(sys, 1) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000281
282print 'hash'
283hash(None)
284if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
285hash('spam')
286hash((0,1,2,3))
287def f(): pass
Guido van Rossum0c6614c2001-01-18 23:36:14 +0000288try: hash([])
289except TypeError: pass
290else: raise TestFailed, "hash([]) should raise an exception"
291try: hash({})
292except TypeError: pass
293else: raise TestFailed, "hash({}) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000294
Guido van Rossum3bead091992-01-27 17:00:37 +0000295print 'hex'
296if hex(16) != '0x10': raise TestFailed, 'hex(16)'
297if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000298if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
299if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
300 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000301if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
302
Guido van Rossume23b62f1994-11-10 22:25:26 +0000303print 'id'
304id(None)
305id(1)
306id(1L)
307id(1.0)
308id('spam')
309id((0,1,2,3))
310id([0,1,2,3])
311id({'spam': 1, 'eggs': 2, 'ham': 3})
312
Guido van Rossum3bead091992-01-27 17:00:37 +0000313# Test input() later, together with raw_input
314
315print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000316if int(314) != 314: raise TestFailed, 'int(314)'
317if int(3.14) != 3: raise TestFailed, 'int(3.14)'
318if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000319# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000320if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
321if int(3.9) != 3: raise TestFailed, 'int(3.9)'
322if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
323if int(3.5) != 3: raise TestFailed, 'int(3.5)'
324if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000325# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000326if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
327if int(u"10",16) != 16L: raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000328# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000329L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000330 ('0', 0),
331 ('1', 1),
332 ('9', 9),
333 ('10', 10),
334 ('99', 99),
335 ('100', 100),
336 ('314', 314),
337 (' 314', 314),
338 ('314 ', 314),
339 (' \t\t 314 \t\t ', 314),
340 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000341 (' 1x', ValueError),
342 (' 1 ', 1),
343 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000344 ('', ValueError),
345 (' ', ValueError),
346 (' \t\t ', ValueError),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000347 (u'0', 0),
348 (u'1', 1),
349 (u'9', 9),
350 (u'10', 10),
351 (u'99', 99),
352 (u'100', 100),
353 (u'314', 314),
354 (u' 314', 314),
355 (u'\u0663\u0661\u0664 ', 314),
356 (u' \t\t 314 \t\t ', 314),
357 (u' 1x', ValueError),
358 (u' 1 ', 1),
359 (u' 1\02 ', ValueError),
360 (u'', ValueError),
361 (u' ', ValueError),
362 (u' \t\t ', ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000363]
364for s, v in L:
365 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000366 for prefix in "", " ", "\t", " \t\t ":
367 ss = prefix + sign + s
368 vv = v
369 if sign == "-" and v is not ValueError:
370 vv = -v
371 try:
372 if int(ss) != vv:
373 raise TestFailed, "int(%s)" % `ss`
374 except v:
375 pass
376 except ValueError, e:
377 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000378s = `-1-sys.maxint`
379if int(s)+1 != -sys.maxint:
380 raise TestFailed, "int(%s)" % `s`
381try:
382 int(s[1:])
383except ValueError:
384 pass
385else:
386 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Tim Peters7321ec42001-07-26 20:02:17 +0000387try:
388 int(1e100)
389except OverflowError:
390 pass
391else:
392 raise TestFailed("int(1e100) expected OverflowError")
393try:
394 int(-1e100)
395except OverflowError:
396 pass
397else:
398 raise TestFailed("int(-1e100) expected OverflowError")
399
Guido van Rossum3bead091992-01-27 17:00:37 +0000400
Tim Peters1dad6a82001-06-18 19:21:11 +0000401# SF bug 434186: 0x80000000/2 != 0x80000000>>1.
402# Worked by accident in Windows release build, but failed in debug build.
403# Failed in all Linux builds.
404x = -1-sys.maxint
405if x >> 1 != x/2:
406 raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")
407
Barry Warsawd5430771997-08-22 21:27:03 +0000408print 'isinstance'
409class C:
410 pass
411class D(C):
412 pass
413class E:
414 pass
415c = C()
416d = D()
417e = E()
418if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
419if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
420if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
421if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
422if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
423try:
424 isinstance(E, 'foo')
425 raise TestFailed, 'isinstance(E, "foo")'
426except TypeError:
427 pass
428
429print 'issubclass'
430if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
431if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
432if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
433try:
434 issubclass('foo', E)
435 raise TestFailed, 'issubclass("foo", E)'
436except TypeError:
437 pass
438try:
439 issubclass(E, 'foo')
440 raise TestFailed, 'issubclass(E, "foo")'
441except TypeError:
442 pass
443
Guido van Rossum3bead091992-01-27 17:00:37 +0000444print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000445if len('123') != 3: raise TestFailed, 'len(\'123\')'
446if len(()) != 0: raise TestFailed, 'len(())'
447if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
448if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
449if len({}) != 0: raise TestFailed, 'len({})'
450if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000451
452print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000453if long(314) != 314L: raise TestFailed, 'long(314)'
454if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
455if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000456# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000457if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
458if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
459if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
460if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
461if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
462if long("-3") != -3L: raise TestFailed, 'long("-3")'
463if long(u"-3") != -3L: raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000464# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000465if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
466if long(u"10",16) != 16L: raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000467# Check conversions from string (same test set as for int(), and then some)
468LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000469 ('1' + '0'*20, 10L**20),
470 ('1' + '0'*100, 10L**100),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000471 (u'1' + u'0'*20, 10L**20),
472 (u'1' + u'0'*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000473]
474for s, v in L + LL:
475 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000476 for prefix in "", " ", "\t", " \t\t ":
477 ss = prefix + sign + s
478 vv = v
479 if sign == "-" and v is not ValueError:
480 vv = -v
481 try:
482 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000483 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000484 except v:
485 pass
486 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000487 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000488
Guido van Rossume65cce51993-11-08 15:05:21 +0000489print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000490if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000491 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000492if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000493 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
494 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000495if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000496 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000497if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000498 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000499try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000500 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000501except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000502 def sqrt(x):
503 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000504if 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 +0000505 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000506if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000507 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000508def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000509 accu = 0
510 for i in v: accu = accu + i
511 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000512if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000513 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000514if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000515 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000516if 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 +0000517 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000518if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000519 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000520if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000521 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000522if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000523 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum7f9b5e02001-01-22 19:30:07 +0000524if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000525 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000526
Guido van Rossum3bead091992-01-27 17:00:37 +0000527print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000528if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
529if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
530if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
531if 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 +0000532#
Fred Drake132dce22000-12-12 23:11:42 +0000533if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
534if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
535if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000536
537print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000538if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
539if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
540if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
541if 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 +0000542#
Fred Drake132dce22000-12-12 23:11:42 +0000543if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
544if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
545if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'