blob: b328b38c412508327ea0476f869b55c379ba0b59 [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
Guido van Rossum29d26062001-12-11 04:37:34 +000026try: abs('a')
27except TypeError: pass
28else: raise TestFailed, 'abs("a")'
29
Guido van Rossum3bead091992-01-27 17:00:37 +000030print 'apply'
31def f0(*args):
Guido van Rossum27d445f1998-08-10 20:12:34 +000032 if args != (): raise TestFailed, 'f0 called with ' + `args`
Guido van Rossum3bead091992-01-27 17:00:37 +000033def f1(a1):
Guido van Rossum27d445f1998-08-10 20:12:34 +000034 if a1 != 1: raise TestFailed, 'f1 called with ' + `a1`
Guido van Rossum3bead091992-01-27 17:00:37 +000035def f2(a1, a2):
Guido van Rossum27d445f1998-08-10 20:12:34 +000036 if a1 != 1 or a2 != 2:
37 raise TestFailed, 'f2 called with ' + `a1, a2`
Guido van Rossum3bead091992-01-27 17:00:37 +000038def f3(a1, a2, a3):
Guido van Rossum27d445f1998-08-10 20:12:34 +000039 if a1 != 1 or a2 != 2 or a3 != 3:
40 raise TestFailed, 'f3 called with ' + `a1, a2, a3`
Guido van Rossum3bead091992-01-27 17:00:37 +000041apply(f0, ())
42apply(f1, (1,))
43apply(f2, (1, 2))
44apply(f3, (1, 2, 3))
45
Fred Drake1a7aab72001-01-04 22:33:02 +000046# A PyCFunction that takes only positional parameters should allow an
47# empty keyword dictionary to pass without a complaint, but raise a
48# TypeError if the dictionary is non-empty.
49apply(id, (1,), {})
50try:
51 apply(id, (1,), {"foo": 1})
52except TypeError:
53 pass
54else:
55 raise TestFailed, 'expected TypeError; no exception raised'
56
Guido van Rossume23b62f1994-11-10 22:25:26 +000057print 'callable'
58if not callable(len):raise TestFailed, 'callable(len)'
59def f(): pass
60if not callable(f): raise TestFailed, 'callable(f)'
61class C:
Guido van Rossum27d445f1998-08-10 20:12:34 +000062 def meth(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000063if not callable(C): raise TestFailed, 'callable(C)'
64x = C()
65if not callable(x.meth): raise TestFailed, 'callable(x.meth)'
66if callable(x): raise TestFailed, 'callable(x)'
67class D(C):
Guido van Rossum27d445f1998-08-10 20:12:34 +000068 def __call__(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000069y = D()
70if not callable(y): raise TestFailed, 'callable(y)'
Jeremy Hylton5ab36612001-01-03 23:53:31 +000071y()
Guido van Rossume23b62f1994-11-10 22:25:26 +000072
Guido van Rossum3bead091992-01-27 17:00:37 +000073print 'chr'
Fred Drake132dce22000-12-12 23:11:42 +000074if chr(32) != ' ': raise TestFailed, 'chr(32)'
75if chr(65) != 'A': raise TestFailed, 'chr(65)'
76if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum3bead091992-01-27 17:00:37 +000077
Neil Schemenauer38f02232001-01-04 01:33:41 +000078# cmp
Guido van Rossum85f18201992-11-27 22:53:50 +000079print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000080if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
81if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
82if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000083# verify that circular objects are handled
84a = []; a.append(a)
85b = []; b.append(b)
86from UserList import UserList
87c = UserList(); c.append(c)
88if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
89if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
90if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
91if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000092# okay, now break the cycles
93a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000094
95print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000096if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +000097if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +000098if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +000099
Guido van Rossume23b62f1994-11-10 22:25:26 +0000100print 'compile'
101compile('print 1\n', '', 'exec')
102
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000103print 'complex'
Fred Drake132dce22000-12-12 23:11:42 +0000104if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
105if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
106if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
107if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
108if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
109if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
110if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
111if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
112if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
113if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
114if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
115if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
116if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
117if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
118if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
119if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
120if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
121if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
122if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
123if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
124if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
125if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000126if have_unicode:
127 if complex(unicode(" 3.14+J ")) != 3.14+1j:
128 raise TestFailed, 'complex(u" 3.14+J )"'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000129class Z:
130 def __complex__(self): return 3.14j
131z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000132if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000133
Guido van Rossume23b62f1994-11-10 22:25:26 +0000134print 'delattr'
135import sys
136sys.spam = 1
137delattr(sys, 'spam')
138
Guido van Rossum3bead091992-01-27 17:00:37 +0000139print 'dir'
140x = 1
141if 'x' not in dir(): raise TestFailed, 'dir()'
142import sys
143if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
144
145print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000146if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
147if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
148if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
149if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000150#
Fred Drake132dce22000-12-12 23:11:42 +0000151if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
152if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
153if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
154if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000155#
Fred Drake132dce22000-12-12 23:11:42 +0000156if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
157if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
158if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
159if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000160#
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 Rossum35fb82a1993-01-26 13:04:43 +0000163if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000164 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000165if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000166 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000167if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000168 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000169
170print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000171if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
172if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000173globals = {'a': 1, 'b': 2}
174locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000175if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000176 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000177if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000178 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000179if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000180 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000181if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000182 raise TestFailed, "eval(4)"
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000183if have_unicode:
184 if eval(unicode('1+1')) != 2: raise TestFailed, 'eval(u\'1+1\')'
185 if eval(unicode(' 1+1\n')) != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000186globals = {'a': 1, 'b': 2}
187locals = {'b': 200, 'c': 300}
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000188if have_unicode:
189 if eval(unicode('a'), globals) != 1:
190 raise TestFailed, "eval(1) == %s" % eval(unicode('a'), globals)
191 if eval(unicode('a'), globals, locals) != 1:
192 raise TestFailed, "eval(2)"
193 if eval(unicode('b'), globals, locals) != 200:
194 raise TestFailed, "eval(3)"
195 if eval(unicode('c'), globals, locals) != 300:
196 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000197
Guido van Rossum85f18201992-11-27 22:53:50 +0000198print 'execfile'
199z = 0
200f = open(TESTFN, 'w')
201f.write('z = z+1\n')
202f.write('z = z*2\n')
203f.close()
204execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000205if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000206globals['z'] = 0
207execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000208if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000209locals['z'] = 0
210execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000211if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000212unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000213
Guido van Rossume65cce51993-11-08 15:05:21 +0000214print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000215if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000216 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000217if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000218 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000219if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000220 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000221class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000222 def __init__(self, max):
223 self.max = max
224 self.sofar = []
225 def __len__(self): return len(self.sofar)
226 def __getitem__(self, i):
227 if not 0 <= i < self.max: raise IndexError
228 n = len(self.sofar)
229 while n <= i:
230 self.sofar.append(n*n)
231 n = n+1
232 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000233if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000234 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000235if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000236 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000237class StrSquares:
238 def __init__(self, max):
239 self.max = max
240 self.sofar = []
241 def __len__(self):
242 return len(self.sofar)
243 def __getitem__(self, i):
244 if not 0 <= i < self.max:
245 raise IndexError
246 n = len(self.sofar)
247 while n <= i:
248 self.sofar.append(str(n*n))
249 n = n+1
250 return self.sofar[i]
251def identity(item):
252 return 1
253filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000254
Guido van Rossum3bead091992-01-27 17:00:37 +0000255print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000256if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
257if float(314) != 314.0: raise TestFailed, 'float(314)'
258if float(314L) != 314.0: raise TestFailed, 'float(314L)'
259if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000260if have_unicode:
261 if float(unicode(" 3.14 ")) != 3.14:
262 raise TestFailed, 'float(u" 3.14 ")'
Martin v. Löwis10d72552001-08-17 22:08:34 +0000263 if float(unicode(" \u0663.\u0661\u0664 ",'raw-unicode-escape')) != 3.14:
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000264 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000265
266print 'getattr'
267import sys
268if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000269try:
270 getattr(sys, 1)
271except TypeError:
272 pass
273else:
274 raise TestFailed, "getattr(sys, 1) should raise an exception"
275try:
276 getattr(sys, 1, "foo")
277except TypeError:
278 pass
279else:
280 raise TestFailed, 'getattr(sys, 1, "foo") should raise an exception'
Guido van Rossum3bead091992-01-27 17:00:37 +0000281
Guido van Rossume23b62f1994-11-10 22:25:26 +0000282print 'hasattr'
283import sys
284if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000285try:
286 hasattr(sys, 1)
287except TypeError:
288 pass
289else:
290 raise TestFailed, "hasattr(sys, 1) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000291
292print 'hash'
293hash(None)
294if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
295hash('spam')
296hash((0,1,2,3))
297def f(): pass
Guido van Rossum0c6614c2001-01-18 23:36:14 +0000298try: hash([])
299except TypeError: pass
300else: raise TestFailed, "hash([]) should raise an exception"
301try: hash({})
302except TypeError: pass
303else: raise TestFailed, "hash({}) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000304
Guido van Rossum3bead091992-01-27 17:00:37 +0000305print 'hex'
306if hex(16) != '0x10': raise TestFailed, 'hex(16)'
307if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000308if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
309if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
310 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000311if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
312
Guido van Rossume23b62f1994-11-10 22:25:26 +0000313print 'id'
314id(None)
315id(1)
316id(1L)
317id(1.0)
318id('spam')
319id((0,1,2,3))
320id([0,1,2,3])
321id({'spam': 1, 'eggs': 2, 'ham': 3})
322
Guido van Rossum3bead091992-01-27 17:00:37 +0000323# Test input() later, together with raw_input
324
325print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000326if int(314) != 314: raise TestFailed, 'int(314)'
327if int(3.14) != 3: raise TestFailed, 'int(3.14)'
328if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000329# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000330if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
331if int(3.9) != 3: raise TestFailed, 'int(3.9)'
332if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
333if int(3.5) != 3: raise TestFailed, 'int(3.5)'
334if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000335# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000336if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000337if have_unicode:
338 if int(unicode("10"),16) != 16L:
339 raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000340# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000341L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000342 ('0', 0),
343 ('1', 1),
344 ('9', 9),
345 ('10', 10),
346 ('99', 99),
347 ('100', 100),
348 ('314', 314),
349 (' 314', 314),
350 ('314 ', 314),
351 (' \t\t 314 \t\t ', 314),
352 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000353 (' 1x', ValueError),
354 (' 1 ', 1),
355 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000356 ('', ValueError),
357 (' ', ValueError),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000358 (' \t\t ', ValueError)
359]
360if have_unicode:
361 L += [
362 (unicode('0'), 0),
363 (unicode('1'), 1),
364 (unicode('9'), 9),
365 (unicode('10'), 10),
366 (unicode('99'), 99),
367 (unicode('100'), 100),
368 (unicode('314'), 314),
369 (unicode(' 314'), 314),
Martin v. Löwis10d72552001-08-17 22:08:34 +0000370 (unicode('\u0663\u0661\u0664 ','raw-unicode-escape'), 314),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000371 (unicode(' \t\t 314 \t\t '), 314),
372 (unicode(' 1x'), ValueError),
373 (unicode(' 1 '), 1),
374 (unicode(' 1\02 '), ValueError),
375 (unicode(''), ValueError),
376 (unicode(' '), ValueError),
377 (unicode(' \t\t '), ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000378]
379for s, v in L:
380 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000381 for prefix in "", " ", "\t", " \t\t ":
382 ss = prefix + sign + s
383 vv = v
384 if sign == "-" and v is not ValueError:
385 vv = -v
386 try:
387 if int(ss) != vv:
388 raise TestFailed, "int(%s)" % `ss`
389 except v:
390 pass
391 except ValueError, e:
392 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000393s = `-1-sys.maxint`
394if int(s)+1 != -sys.maxint:
395 raise TestFailed, "int(%s)" % `s`
396try:
397 int(s[1:])
398except ValueError:
399 pass
400else:
401 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Tim Peters7321ec42001-07-26 20:02:17 +0000402try:
403 int(1e100)
404except OverflowError:
405 pass
406else:
407 raise TestFailed("int(1e100) expected OverflowError")
408try:
409 int(-1e100)
410except OverflowError:
411 pass
412else:
413 raise TestFailed("int(-1e100) expected OverflowError")
414
Guido van Rossum3bead091992-01-27 17:00:37 +0000415
Tim Peters1dad6a82001-06-18 19:21:11 +0000416# SF bug 434186: 0x80000000/2 != 0x80000000>>1.
417# Worked by accident in Windows release build, but failed in debug build.
418# Failed in all Linux builds.
419x = -1-sys.maxint
Guido van Rossum54e54c62001-09-04 19:14:14 +0000420if x >> 1 != x//2:
Tim Peters1dad6a82001-06-18 19:21:11 +0000421 raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")
422
Guido van Rossum29d26062001-12-11 04:37:34 +0000423try: int('123\0')
424except ValueError: pass
425else: raise TestFailed("int('123\0') didn't raise exception")
426
Barry Warsawd5430771997-08-22 21:27:03 +0000427print 'isinstance'
428class C:
429 pass
430class D(C):
431 pass
432class E:
433 pass
434c = C()
435d = D()
436e = E()
437if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
438if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
439if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
440if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
441if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
442try:
443 isinstance(E, 'foo')
444 raise TestFailed, 'isinstance(E, "foo")'
445except TypeError:
446 pass
447
448print 'issubclass'
449if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
450if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
451if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
452try:
453 issubclass('foo', E)
454 raise TestFailed, 'issubclass("foo", E)'
455except TypeError:
456 pass
457try:
458 issubclass(E, 'foo')
459 raise TestFailed, 'issubclass(E, "foo")'
460except TypeError:
461 pass
462
Guido van Rossum3bead091992-01-27 17:00:37 +0000463print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000464if len('123') != 3: raise TestFailed, 'len(\'123\')'
465if len(()) != 0: raise TestFailed, 'len(())'
466if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
467if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
468if len({}) != 0: raise TestFailed, 'len({})'
469if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000470
471print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000472if long(314) != 314L: raise TestFailed, 'long(314)'
473if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
474if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000475# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000476if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
477if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
478if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
479if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
480if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
481if long("-3") != -3L: raise TestFailed, 'long("-3")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000482if have_unicode:
483 if long(unicode("-3")) != -3L:
484 raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000485# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000486if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000487if have_unicode:
488 if long(unicode("10"),16) != 16L:
489 raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000490# Check conversions from string (same test set as for int(), and then some)
491LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000492 ('1' + '0'*20, 10L**20),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000493 ('1' + '0'*100, 10L**100)
494]
495if have_unicode:
496 L+=[
497 (unicode('1') + unicode('0')*20, 10L**20),
498 (unicode('1') + unicode('0')*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000499]
500for s, v in L + LL:
501 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000502 for prefix in "", " ", "\t", " \t\t ":
503 ss = prefix + sign + s
504 vv = v
505 if sign == "-" and v is not ValueError:
506 vv = -v
507 try:
508 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000509 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000510 except v:
511 pass
512 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000513 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000514
Guido van Rossum29d26062001-12-11 04:37:34 +0000515try: long('123\0')
516except ValueError: pass
517else: raise TestFailed("long('123\0') didn't raise exception")
518
Guido van Rossume65cce51993-11-08 15:05:21 +0000519print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000520if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000521 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000522if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000523 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
524 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000525if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000526 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000527if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000528 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000529try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000530 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000531except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000532 def sqrt(x):
533 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000534if 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 +0000535 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000536if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000537 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000538def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000539 accu = 0
540 for i in v: accu = accu + i
541 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000542if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000543 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000544if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000545 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000546if 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 +0000547 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000548if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000549 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000550if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000551 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000552if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000553 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum7f9b5e02001-01-22 19:30:07 +0000554if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000555 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000556
Guido van Rossum3bead091992-01-27 17:00:37 +0000557print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000558if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
559if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
560if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
561if 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 +0000562#
Fred Drake132dce22000-12-12 23:11:42 +0000563if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
564if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
565if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000566
567print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000568if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
569if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
570if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
571if 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 +0000572#
Fred Drake132dce22000-12-12 23:11:42 +0000573if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
574if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
575if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'