blob: f8a3f0167b14162624f74c1e49f4d1dd3e5e015c [file] [log] [blame]
Guido van Rossum3bead091992-01-27 17:00:37 +00001# Python test set -- part 4a, built-in functions a-m
2
Guido van Rossumbaf29632002-08-12 15:16:20 +00003import warnings
4warnings.filterwarnings("ignore", "hex../oct.. of negative int",
5 DeprecationWarning, __name__)
6
Barry Warsaw408b6d32002-07-30 23:27:12 +00007from test.test_support import TestFailed, fcmp, have_unicode, TESTFN, unlink
Guido van Rossum3bead091992-01-27 17:00:37 +00008
Guido van Rossumeecf0351994-12-30 17:17:46 +00009print '__import__'
10__import__('sys')
Barry Warsaw3a9d0612000-09-01 06:53:52 +000011__import__('time')
Guido van Rossumeecf0351994-12-30 17:17:46 +000012__import__('string')
13try: __import__('spamspam')
14except ImportError: pass
15else: raise TestFailed, "__import__('spamspam') should fail"
16
Guido van Rossum3bead091992-01-27 17:00:37 +000017print 'abs'
Fred Drake132dce22000-12-12 23:11:42 +000018if abs(0) != 0: raise TestFailed, 'abs(0)'
19if abs(1234) != 1234: raise TestFailed, 'abs(1234)'
20if abs(-1234) != 1234: raise TestFailed, 'abs(-1234)'
Guido van Rossum3bead091992-01-27 17:00:37 +000021#
Fred Drake132dce22000-12-12 23:11:42 +000022if abs(0.0) != 0.0: raise TestFailed, 'abs(0.0)'
23if abs(3.14) != 3.14: raise TestFailed, 'abs(3.14)'
24if abs(-3.14) != 3.14: raise TestFailed, 'abs(-3.14)'
Guido van Rossum3bead091992-01-27 17:00:37 +000025#
Fred Drake132dce22000-12-12 23:11:42 +000026if abs(0L) != 0L: raise TestFailed, 'abs(0L)'
27if abs(1234L) != 1234L: raise TestFailed, 'abs(1234L)'
28if abs(-1234L) != 1234L: raise TestFailed, 'abs(-1234L)'
Guido van Rossum3bead091992-01-27 17:00:37 +000029
Guido van Rossum29d26062001-12-11 04:37:34 +000030try: abs('a')
31except TypeError: pass
32else: raise TestFailed, 'abs("a")'
33
Guido van Rossum3bead091992-01-27 17:00:37 +000034print 'apply'
35def f0(*args):
Guido van Rossum27d445f1998-08-10 20:12:34 +000036 if args != (): raise TestFailed, 'f0 called with ' + `args`
Guido van Rossum3bead091992-01-27 17:00:37 +000037def f1(a1):
Guido van Rossum27d445f1998-08-10 20:12:34 +000038 if a1 != 1: raise TestFailed, 'f1 called with ' + `a1`
Guido van Rossum3bead091992-01-27 17:00:37 +000039def f2(a1, a2):
Guido van Rossum27d445f1998-08-10 20:12:34 +000040 if a1 != 1 or a2 != 2:
41 raise TestFailed, 'f2 called with ' + `a1, a2`
Guido van Rossum3bead091992-01-27 17:00:37 +000042def f3(a1, a2, a3):
Guido van Rossum27d445f1998-08-10 20:12:34 +000043 if a1 != 1 or a2 != 2 or a3 != 3:
44 raise TestFailed, 'f3 called with ' + `a1, a2, a3`
Guido van Rossum3bead091992-01-27 17:00:37 +000045apply(f0, ())
46apply(f1, (1,))
47apply(f2, (1, 2))
48apply(f3, (1, 2, 3))
49
Fred Drake1a7aab72001-01-04 22:33:02 +000050# A PyCFunction that takes only positional parameters should allow an
51# empty keyword dictionary to pass without a complaint, but raise a
52# TypeError if the dictionary is non-empty.
53apply(id, (1,), {})
54try:
55 apply(id, (1,), {"foo": 1})
56except TypeError:
57 pass
58else:
59 raise TestFailed, 'expected TypeError; no exception raised'
60
Guido van Rossume23b62f1994-11-10 22:25:26 +000061print 'callable'
62if not callable(len):raise TestFailed, 'callable(len)'
63def f(): pass
64if not callable(f): raise TestFailed, 'callable(f)'
65class C:
Guido van Rossum27d445f1998-08-10 20:12:34 +000066 def meth(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000067if not callable(C): raise TestFailed, 'callable(C)'
68x = C()
69if not callable(x.meth): raise TestFailed, 'callable(x.meth)'
70if callable(x): raise TestFailed, 'callable(x)'
71class D(C):
Guido van Rossum27d445f1998-08-10 20:12:34 +000072 def __call__(self): pass
Guido van Rossume23b62f1994-11-10 22:25:26 +000073y = D()
74if not callable(y): raise TestFailed, 'callable(y)'
Jeremy Hylton5ab36612001-01-03 23:53:31 +000075y()
Guido van Rossume23b62f1994-11-10 22:25:26 +000076
Guido van Rossum3bead091992-01-27 17:00:37 +000077print 'chr'
Fred Drake132dce22000-12-12 23:11:42 +000078if chr(32) != ' ': raise TestFailed, 'chr(32)'
79if chr(65) != 'A': raise TestFailed, 'chr(65)'
80if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum3bead091992-01-27 17:00:37 +000081
Neil Schemenauer38f02232001-01-04 01:33:41 +000082# cmp
Guido van Rossum85f18201992-11-27 22:53:50 +000083print 'cmp'
Fred Drake132dce22000-12-12 23:11:42 +000084if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
85if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
86if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
Jeremy Hylton4a3dd2d2000-04-14 19:13:24 +000087# verify that circular objects are handled
88a = []; a.append(a)
89b = []; b.append(b)
90from UserList import UserList
91c = UserList(); c.append(c)
92if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
93if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
94if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
95if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
Vladimir Marangozovd57f5cf2000-07-14 04:32:09 +000096# okay, now break the cycles
97a.pop(); b.pop(); c.pop()
Guido van Rossum85f18201992-11-27 22:53:50 +000098
99print 'coerce'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000100if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
Fred Drake132dce22000-12-12 23:11:42 +0000101if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000102if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
Guido van Rossum85f18201992-11-27 22:53:50 +0000103
Guido van Rossume23b62f1994-11-10 22:25:26 +0000104print 'compile'
105compile('print 1\n', '', 'exec')
106
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000107print 'complex'
Raymond Hettinger478d47a2002-06-06 15:45:38 +0000108class OS:
Tim Petersc411dba2002-07-16 21:35:23 +0000109 def __complex__(self): return 1+10j
Raymond Hettinger478d47a2002-06-06 15:45:38 +0000110class NS(object):
Tim Petersc411dba2002-07-16 21:35:23 +0000111 def __complex__(self): return 1+10j
Raymond Hettinger478d47a2002-06-06 15:45:38 +0000112if complex(OS()) != 1+10j: raise TestFailed, '__complex__ in old style class'
113if complex(NS()) != 1+10j: raise TestFailed, '__complex__ in new style class'
114if complex("1+10j") != 1+10j: raise TestFailed, 'complex("1+10j")'
115if complex(10) != 10+0j: raise TestFailed, 'complex(10)'
116if complex(10.0) != 10+0j: raise TestFailed, 'complex(10.0)'
117if complex(10L) != 10+0j: raise TestFailed, 'complex(10L)'
118if complex(10+0j) != 10+0j: raise TestFailed, 'complex(10+0j)'
Fred Drake132dce22000-12-12 23:11:42 +0000119if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
120if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
121if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
122if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
123if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
124if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
125if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
126if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
127if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
128if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
129if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
130if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
131if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
132if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
133if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
134if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
135if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
136if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
137if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
138if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
139if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
Fred Drake526c7a02001-12-13 19:52:22 +0000140if complex("1") != 1+0j: raise TestFailed, 'complex("1")'
141if complex("1j") != 1j: raise TestFailed, 'complex("1j")'
Tim Peters077f2712002-04-14 22:04:03 +0000142
Fred Drake526c7a02001-12-13 19:52:22 +0000143try: complex("1", "1")
144except TypeError: pass
145else: raise TestFailed, 'complex("1", "1")'
Tim Peters077f2712002-04-14 22:04:03 +0000146
Fred Drake526c7a02001-12-13 19:52:22 +0000147try: complex(1, "1")
148except TypeError: pass
149else: raise TestFailed, 'complex(1, "1")'
Tim Peters077f2712002-04-14 22:04:03 +0000150
Fred Drake132dce22000-12-12 23:11:42 +0000151if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000152if have_unicode:
153 if complex(unicode(" 3.14+J ")) != 3.14+1j:
154 raise TestFailed, 'complex(u" 3.14+J )"'
Tim Peters077f2712002-04-14 22:04:03 +0000155
156# SF bug 543840: complex(string) accepts strings with \0
157# Fixed in 2.3.
158try:
159 complex('1+1j\0j')
160except ValueError:
161 pass
162else:
163 raise TestFailed("complex('1+1j\0j') should have raised ValueError")
164
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000165class Z:
166 def __complex__(self): return 3.14j
167z = Z()
Fred Drake132dce22000-12-12 23:11:42 +0000168if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000169
Guido van Rossume23b62f1994-11-10 22:25:26 +0000170print 'delattr'
171import sys
172sys.spam = 1
173delattr(sys, 'spam')
174
Guido van Rossum3bead091992-01-27 17:00:37 +0000175print 'dir'
176x = 1
177if 'x' not in dir(): raise TestFailed, 'dir()'
178import sys
179if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
180
181print 'divmod'
Fred Drake132dce22000-12-12 23:11:42 +0000182if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
183if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
184if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
185if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000186#
Fred Drake132dce22000-12-12 23:11:42 +0000187if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
188if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
189if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
190if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000191#
Fred Drake132dce22000-12-12 23:11:42 +0000192if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
193if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
194if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
195if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000196#
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000197if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000198 raise TestFailed, 'divmod(3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000199if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000200 raise TestFailed, 'divmod(-3.25, 1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000201if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000202 raise TestFailed, 'divmod(3.25, -1.0)'
Guido van Rossum35fb82a1993-01-26 13:04:43 +0000203if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000204 raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000205
206print 'eval'
Fred Drake132dce22000-12-12 23:11:42 +0000207if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
208if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
Guido van Rossum824de251995-01-02 18:38:42 +0000209globals = {'a': 1, 'b': 2}
210locals = {'b': 200, 'c': 300}
Fred Drake132dce22000-12-12 23:11:42 +0000211if eval('a', globals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000212 raise TestFailed, "eval(1) == %s" % eval('a', globals)
Fred Drake132dce22000-12-12 23:11:42 +0000213if eval('a', globals, locals) != 1:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000214 raise TestFailed, "eval(2)"
Fred Drake132dce22000-12-12 23:11:42 +0000215if eval('b', globals, locals) != 200:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000216 raise TestFailed, "eval(3)"
Fred Drake132dce22000-12-12 23:11:42 +0000217if eval('c', globals, locals) != 300:
Jeremy Hyltoncf29bb22000-08-23 21:11:05 +0000218 raise TestFailed, "eval(4)"
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000219if have_unicode:
220 if eval(unicode('1+1')) != 2: raise TestFailed, 'eval(u\'1+1\')'
221 if eval(unicode(' 1+1\n')) != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
Marc-André Lemburgd1ba4432000-09-19 21:04:18 +0000222globals = {'a': 1, 'b': 2}
223locals = {'b': 200, 'c': 300}
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000224if have_unicode:
225 if eval(unicode('a'), globals) != 1:
226 raise TestFailed, "eval(1) == %s" % eval(unicode('a'), globals)
227 if eval(unicode('a'), globals, locals) != 1:
228 raise TestFailed, "eval(2)"
229 if eval(unicode('b'), globals, locals) != 200:
230 raise TestFailed, "eval(3)"
231 if eval(unicode('c'), globals, locals) != 300:
232 raise TestFailed, "eval(4)"
Guido van Rossum3bead091992-01-27 17:00:37 +0000233
Guido van Rossum85f18201992-11-27 22:53:50 +0000234print 'execfile'
235z = 0
236f = open(TESTFN, 'w')
237f.write('z = z+1\n')
238f.write('z = z*2\n')
239f.close()
240execfile(TESTFN)
Fred Drake132dce22000-12-12 23:11:42 +0000241if z != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000242globals['z'] = 0
243execfile(TESTFN, globals)
Fred Drake132dce22000-12-12 23:11:42 +0000244if globals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum824de251995-01-02 18:38:42 +0000245locals['z'] = 0
246execfile(TESTFN, globals, locals)
Fred Drake132dce22000-12-12 23:11:42 +0000247if locals['z'] != 2: raise TestFailed, "execfile(1)"
Guido van Rossum85f18201992-11-27 22:53:50 +0000248unlink(TESTFN)
Guido van Rossum3bead091992-01-27 17:00:37 +0000249
Guido van Rossume65cce51993-11-08 15:05:21 +0000250print 'filter'
Fred Drake132dce22000-12-12 23:11:42 +0000251if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
Guido van Rossum27d445f1998-08-10 20:12:34 +0000252 raise TestFailed, 'filter (filter a string)'
Fred Drake132dce22000-12-12 23:11:42 +0000253if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000254 raise TestFailed, 'filter (remove false values)'
Fred Drake132dce22000-12-12 23:11:42 +0000255if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000256 raise TestFailed, 'filter (keep positives)'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000257class Squares:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000258 def __init__(self, max):
259 self.max = max
260 self.sofar = []
261 def __len__(self): return len(self.sofar)
262 def __getitem__(self, i):
263 if not 0 <= i < self.max: raise IndexError
264 n = len(self.sofar)
265 while n <= i:
266 self.sofar.append(n*n)
267 n = n+1
268 return self.sofar[i]
Guido van Rossumb6775db1994-08-01 11:34:53 +0000269if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000270 raise TestFailed, 'filter(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000271if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000272 raise TestFailed, 'filter(oddp, Squares(10))'
Barry Warsawab11f601999-01-28 19:44:06 +0000273class StrSquares:
274 def __init__(self, max):
275 self.max = max
276 self.sofar = []
277 def __len__(self):
278 return len(self.sofar)
279 def __getitem__(self, i):
280 if not 0 <= i < self.max:
281 raise IndexError
282 n = len(self.sofar)
283 while n <= i:
284 self.sofar.append(str(n*n))
285 n = n+1
286 return self.sofar[i]
287def identity(item):
288 return 1
289filter(identity, Squares(5))
Guido van Rossume65cce51993-11-08 15:05:21 +0000290
Guido van Rossum3bead091992-01-27 17:00:37 +0000291print 'float'
Fred Drake132dce22000-12-12 23:11:42 +0000292if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
293if float(314) != 314.0: raise TestFailed, 'float(314)'
294if float(314L) != 314.0: raise TestFailed, 'float(314L)'
295if float(" 3.14 ") != 3.14: raise TestFailed, 'float(" 3.14 ")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000296if have_unicode:
297 if float(unicode(" 3.14 ")) != 3.14:
298 raise TestFailed, 'float(u" 3.14 ")'
Martin v. Löwis10d72552001-08-17 22:08:34 +0000299 if float(unicode(" \u0663.\u0661\u0664 ",'raw-unicode-escape')) != 3.14:
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000300 raise TestFailed, 'float(u" \u0663.\u0661\u0664 ")'
Guido van Rossum3bead091992-01-27 17:00:37 +0000301
302print 'getattr'
303import sys
304if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000305try:
306 getattr(sys, 1)
307except TypeError:
308 pass
309else:
310 raise TestFailed, "getattr(sys, 1) should raise an exception"
311try:
312 getattr(sys, 1, "foo")
313except TypeError:
314 pass
315else:
316 raise TestFailed, 'getattr(sys, 1, "foo") should raise an exception'
Guido van Rossum3bead091992-01-27 17:00:37 +0000317
Guido van Rossume23b62f1994-11-10 22:25:26 +0000318print 'hasattr'
319import sys
320if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
Jeremy Hyltonb7a77312001-07-30 22:49:11 +0000321try:
322 hasattr(sys, 1)
323except TypeError:
324 pass
325else:
326 raise TestFailed, "hasattr(sys, 1) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000327
328print 'hash'
329hash(None)
330if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
331hash('spam')
332hash((0,1,2,3))
333def f(): pass
Guido van Rossum0c6614c2001-01-18 23:36:14 +0000334try: hash([])
335except TypeError: pass
336else: raise TestFailed, "hash([]) should raise an exception"
337try: hash({})
338except TypeError: pass
339else: raise TestFailed, "hash({}) should raise an exception"
Guido van Rossume23b62f1994-11-10 22:25:26 +0000340
Guido van Rossum3bead091992-01-27 17:00:37 +0000341print 'hex'
342if hex(16) != '0x10': raise TestFailed, 'hex(16)'
343if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
Guido van Rossumc1c96d11997-05-14 21:37:23 +0000344if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
345if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
346 raise TestFailed, 'hex(-16)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000347if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
348
Guido van Rossume23b62f1994-11-10 22:25:26 +0000349print 'id'
350id(None)
351id(1)
352id(1L)
353id(1.0)
354id('spam')
355id((0,1,2,3))
356id([0,1,2,3])
357id({'spam': 1, 'eggs': 2, 'ham': 3})
358
Guido van Rossum3bead091992-01-27 17:00:37 +0000359# Test input() later, together with raw_input
360
361print 'int'
Fred Drake132dce22000-12-12 23:11:42 +0000362if int(314) != 314: raise TestFailed, 'int(314)'
363if int(3.14) != 3: raise TestFailed, 'int(3.14)'
364if int(314L) != 314: raise TestFailed, 'int(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000365# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000366if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
367if int(3.9) != 3: raise TestFailed, 'int(3.9)'
368if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
369if int(3.5) != 3: raise TestFailed, 'int(3.5)'
370if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000371# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000372if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000373if have_unicode:
374 if int(unicode("10"),16) != 16L:
375 raise TestFailed, 'int(u"10",16)'
Jeremy Hyltona05e2932000-06-28 14:48:01 +0000376# Test conversion from strings and various anomalies
Guido van Rossum70115041998-06-30 17:02:20 +0000377L = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000378 ('0', 0),
379 ('1', 1),
380 ('9', 9),
381 ('10', 10),
382 ('99', 99),
383 ('100', 100),
384 ('314', 314),
385 (' 314', 314),
386 ('314 ', 314),
387 (' \t\t 314 \t\t ', 314),
388 (`sys.maxint`, sys.maxint),
Guido van Rossum9e896b32000-04-05 20:11:21 +0000389 (' 1x', ValueError),
390 (' 1 ', 1),
391 (' 1\02 ', ValueError),
Guido van Rossum27d445f1998-08-10 20:12:34 +0000392 ('', ValueError),
393 (' ', ValueError),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000394 (' \t\t ', ValueError)
395]
396if have_unicode:
397 L += [
398 (unicode('0'), 0),
399 (unicode('1'), 1),
400 (unicode('9'), 9),
401 (unicode('10'), 10),
402 (unicode('99'), 99),
403 (unicode('100'), 100),
404 (unicode('314'), 314),
405 (unicode(' 314'), 314),
Martin v. Löwis10d72552001-08-17 22:08:34 +0000406 (unicode('\u0663\u0661\u0664 ','raw-unicode-escape'), 314),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000407 (unicode(' \t\t 314 \t\t '), 314),
408 (unicode(' 1x'), ValueError),
409 (unicode(' 1 '), 1),
410 (unicode(' 1\02 '), ValueError),
411 (unicode(''), ValueError),
412 (unicode(' '), ValueError),
413 (unicode(' \t\t '), ValueError),
Guido van Rossum70115041998-06-30 17:02:20 +0000414]
415for s, v in L:
416 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000417 for prefix in "", " ", "\t", " \t\t ":
418 ss = prefix + sign + s
419 vv = v
420 if sign == "-" and v is not ValueError:
421 vv = -v
422 try:
423 if int(ss) != vv:
424 raise TestFailed, "int(%s)" % `ss`
425 except v:
426 pass
427 except ValueError, e:
428 raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum70115041998-06-30 17:02:20 +0000429s = `-1-sys.maxint`
430if int(s)+1 != -sys.maxint:
431 raise TestFailed, "int(%s)" % `s`
432try:
433 int(s[1:])
434except ValueError:
435 pass
436else:
437 raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
Tim Peters7321ec42001-07-26 20:02:17 +0000438try:
439 int(1e100)
440except OverflowError:
441 pass
442else:
443 raise TestFailed("int(1e100) expected OverflowError")
444try:
445 int(-1e100)
446except OverflowError:
447 pass
448else:
449 raise TestFailed("int(-1e100) expected OverflowError")
450
Guido van Rossum3bead091992-01-27 17:00:37 +0000451
Tim Peters1dad6a82001-06-18 19:21:11 +0000452# SF bug 434186: 0x80000000/2 != 0x80000000>>1.
453# Worked by accident in Windows release build, but failed in debug build.
454# Failed in all Linux builds.
455x = -1-sys.maxint
Guido van Rossum54e54c62001-09-04 19:14:14 +0000456if x >> 1 != x//2:
Tim Peters1dad6a82001-06-18 19:21:11 +0000457 raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")
458
Guido van Rossum29d26062001-12-11 04:37:34 +0000459try: int('123\0')
460except ValueError: pass
461else: raise TestFailed("int('123\0') didn't raise exception")
462
Neal Norwitz32f41532001-12-29 00:35:20 +0000463try: int('53', 40)
464except ValueError: pass
465else: raise TestFailed("int('53', 40) didn't raise ValueError")
466
467try: int('1' * 512)
468except ValueError: pass
469else: raise TestFailed("int('1' * 512) didn't raise ValueError")
470
471try: int(1, 12)
472except TypeError: pass
473else: raise TestFailed("int(1, 12) didn't raise TypeError")
474
475if int('0123', 0) != 83:
476 raise TestFailed("int('0123', 0) != 83")
477
Barry Warsawd5430771997-08-22 21:27:03 +0000478print 'isinstance'
479class C:
480 pass
481class D(C):
482 pass
483class E:
484 pass
485c = C()
486d = D()
487e = E()
488if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
489if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
490if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
491if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
492if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
493try:
494 isinstance(E, 'foo')
495 raise TestFailed, 'isinstance(E, "foo")'
496except TypeError:
497 pass
498
499print 'issubclass'
500if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
501if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
502if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
503try:
504 issubclass('foo', E)
505 raise TestFailed, 'issubclass("foo", E)'
506except TypeError:
507 pass
508try:
509 issubclass(E, 'foo')
510 raise TestFailed, 'issubclass(E, "foo")'
511except TypeError:
512 pass
513
Guido van Rossum3bead091992-01-27 17:00:37 +0000514print 'len'
Fred Drake132dce22000-12-12 23:11:42 +0000515if len('123') != 3: raise TestFailed, 'len(\'123\')'
516if len(()) != 0: raise TestFailed, 'len(())'
517if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
518if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
519if len({}) != 0: raise TestFailed, 'len({})'
520if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum3bead091992-01-27 17:00:37 +0000521
Guido van Rossum06ee2532002-02-26 22:39:23 +0000522print 'list'
523if list([]) != []: raise TestFailed, 'list([])'
524l0_3 = [0, 1, 2, 3]
525l0_3_bis = list(l0_3)
526if l0_3 != l0_3_bis or l0_3 is l0_3_bis: raise TestFailed, 'list([0, 1, 2, 3])'
527if list(()) != []: raise TestFailed, 'list(())'
528if list((0, 1, 2, 3)) != [0, 1, 2, 3]: raise TestFailed, 'list((0, 1, 2, 3))'
529if list('') != []: raise TestFailed, 'list('')'
530if list('spam') != ['s', 'p', 'a', 'm']: raise TestFailed, "list('spam')"
531
Neal Norwitzd4e5be52002-05-22 23:19:17 +0000532try:
533 # Verify clearing of bug #556025
534 # this assumes that the max data size (sys.maxint) == max address size
535 # this also assumes that the address size is at least 4 bytes
536 # with 8 byte addresses, the bug is not well tested
537 list(xrange(sys.maxint / 4))
538except MemoryError:
539 pass
540else:
541 raise TestFailed, 'list(xrange(sys.maxint / 4))'
542
Guido van Rossum3bead091992-01-27 17:00:37 +0000543print 'long'
Fred Drake132dce22000-12-12 23:11:42 +0000544if long(314) != 314L: raise TestFailed, 'long(314)'
545if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
546if long(314L) != 314L: raise TestFailed, 'long(314L)'
Guido van Rossumdddf7a61997-03-31 17:13:17 +0000547# Check that conversion from float truncates towards zero
Fred Drake132dce22000-12-12 23:11:42 +0000548if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
549if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
550if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
551if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
552if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
553if long("-3") != -3L: raise TestFailed, 'long("-3")'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000554if have_unicode:
555 if long(unicode("-3")) != -3L:
556 raise TestFailed, 'long(u"-3")'
Guido van Rossum9e896b32000-04-05 20:11:21 +0000557# Different base:
Fred Drake132dce22000-12-12 23:11:42 +0000558if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000559if have_unicode:
560 if long(unicode("10"),16) != 16L:
561 raise TestFailed, 'long(u"10",16)'
Guido van Rossum70115041998-06-30 17:02:20 +0000562# Check conversions from string (same test set as for int(), and then some)
563LL = [
Guido van Rossum27d445f1998-08-10 20:12:34 +0000564 ('1' + '0'*20, 10L**20),
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000565 ('1' + '0'*100, 10L**100)
566]
567if have_unicode:
568 L+=[
569 (unicode('1') + unicode('0')*20, 10L**20),
570 (unicode('1') + unicode('0')*100, 10L**100),
Guido van Rossum70115041998-06-30 17:02:20 +0000571]
572for s, v in L + LL:
573 for sign in "", "+", "-":
Guido van Rossum27d445f1998-08-10 20:12:34 +0000574 for prefix in "", " ", "\t", " \t\t ":
575 ss = prefix + sign + s
576 vv = v
577 if sign == "-" and v is not ValueError:
578 vv = -v
579 try:
580 if long(ss) != long(vv):
Guido van Rossum9e896b32000-04-05 20:11:21 +0000581 raise TestFailed, "long(%s)" % `ss`
Guido van Rossum27d445f1998-08-10 20:12:34 +0000582 except v:
583 pass
584 except ValueError, e:
Guido van Rossum9e896b32000-04-05 20:11:21 +0000585 raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum3bead091992-01-27 17:00:37 +0000586
Guido van Rossum29d26062001-12-11 04:37:34 +0000587try: long('123\0')
588except ValueError: pass
589else: raise TestFailed("long('123\0') didn't raise exception")
590
Neal Norwitz32f41532001-12-29 00:35:20 +0000591try: long('53', 40)
592except ValueError: pass
593else: raise TestFailed("long('53', 40) didn't raise ValueError")
594
595try: long(1, 12)
596except TypeError: pass
597else: raise TestFailed("long(1, 12) didn't raise TypeError")
598
Guido van Rossume65cce51993-11-08 15:05:21 +0000599print 'map'
Fred Drake132dce22000-12-12 23:11:42 +0000600if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000601 raise TestFailed, 'map(None, \'hello world\')'
Fred Drake132dce22000-12-12 23:11:42 +0000602if map(None, 'abcd', 'efg') != \
Guido van Rossum27d445f1998-08-10 20:12:34 +0000603 [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
604 raise TestFailed, 'map(None, \'abcd\', \'efg\')'
Fred Drake132dce22000-12-12 23:11:42 +0000605if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000606 raise TestFailed, 'map(None, range(10))'
Fred Drake132dce22000-12-12 23:11:42 +0000607if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000608 raise TestFailed, 'map(lambda x: x*x, range(1,4))'
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000609try:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000610 from math import sqrt
Guido van Rossum51b1c1c1995-03-04 22:30:54 +0000611except ImportError:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000612 def sqrt(x):
613 return pow(x, 0.5)
Fred Drake132dce22000-12-12 23:11:42 +0000614if 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 +0000615 raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
Fred Drake132dce22000-12-12 23:11:42 +0000616if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000617 raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
Guido van Rossume65cce51993-11-08 15:05:21 +0000618def plus(*v):
Guido van Rossum27d445f1998-08-10 20:12:34 +0000619 accu = 0
620 for i in v: accu = accu + i
621 return accu
Fred Drake132dce22000-12-12 23:11:42 +0000622if map(plus, [1, 3, 7]) != [1, 3, 7]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000623 raise TestFailed, 'map(plus, [1, 3, 7])'
Fred Drake132dce22000-12-12 23:11:42 +0000624if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000625 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
Fred Drake132dce22000-12-12 23:11:42 +0000626if 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 +0000627 raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000628if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000629 raise TestFailed, 'map(None, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000630if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000631 raise TestFailed, 'map(int, Squares(10))'
Guido van Rossumb6775db1994-08-01 11:34:53 +0000632if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000633 raise TestFailed, 'map(None, Squares(3), Squares(2))'
Guido van Rossum7f9b5e02001-01-22 19:30:07 +0000634if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
Guido van Rossum27d445f1998-08-10 20:12:34 +0000635 raise TestFailed, 'map(max, Squares(3), Squares(2))'
Guido van Rossume65cce51993-11-08 15:05:21 +0000636
Guido van Rossum3bead091992-01-27 17:00:37 +0000637print 'max'
Fred Drake132dce22000-12-12 23:11:42 +0000638if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
639if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
640if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
641if 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 +0000642#
Fred Drake132dce22000-12-12 23:11:42 +0000643if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
644if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
645if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum3bead091992-01-27 17:00:37 +0000646
647print 'min'
Fred Drake132dce22000-12-12 23:11:42 +0000648if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
649if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
650if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
651if 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 +0000652#
Fred Drake132dce22000-12-12 23:11:42 +0000653if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
654if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
655if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'