test_b1.py 20.5 KB
Newer Older
Guido van Rossum's avatar
Guido van Rossum committed
1 2 3 4
# Python test set -- part 4a, built-in functions a-m

from test_support import *

5 6
print '__import__'
__import__('sys')
7
__import__('time')
8 9 10 11 12
__import__('string')
try: __import__('spamspam')
except ImportError: pass
else: raise TestFailed, "__import__('spamspam') should fail"

Guido van Rossum's avatar
Guido van Rossum committed
13
print 'abs'
14 15 16
if abs(0) != 0: raise TestFailed, 'abs(0)'
if abs(1234) != 1234: raise TestFailed, 'abs(1234)'
if abs(-1234) != 1234: raise TestFailed, 'abs(-1234)'
Guido van Rossum's avatar
Guido van Rossum committed
17
#
18 19 20
if abs(0.0) != 0.0: raise TestFailed, 'abs(0.0)'
if abs(3.14) != 3.14: raise TestFailed, 'abs(3.14)'
if abs(-3.14) != 3.14: raise TestFailed, 'abs(-3.14)'
Guido van Rossum's avatar
Guido van Rossum committed
21
#
22 23 24
if abs(0L) != 0L: raise TestFailed, 'abs(0L)'
if abs(1234L) != 1234L: raise TestFailed, 'abs(1234L)'
if abs(-1234L) != 1234L: raise TestFailed, 'abs(-1234L)'
Guido van Rossum's avatar
Guido van Rossum committed
25

26 27 28 29
try: abs('a')
except TypeError: pass
else: raise TestFailed, 'abs("a")'

Guido van Rossum's avatar
Guido van Rossum committed
30 31
print 'apply'
def f0(*args):
32
    if args != (): raise TestFailed, 'f0 called with ' + `args`
Guido van Rossum's avatar
Guido van Rossum committed
33
def f1(a1):
34
    if a1 != 1: raise TestFailed, 'f1 called with ' + `a1`
Guido van Rossum's avatar
Guido van Rossum committed
35
def f2(a1, a2):
36 37
    if a1 != 1 or a2 != 2:
        raise TestFailed, 'f2 called with ' + `a1, a2`
Guido van Rossum's avatar
Guido van Rossum committed
38
def f3(a1, a2, a3):
39 40
    if a1 != 1 or a2 != 2 or a3 != 3:
        raise TestFailed, 'f3 called with ' + `a1, a2, a3`
Guido van Rossum's avatar
Guido van Rossum committed
41 42 43 44 45
apply(f0, ())
apply(f1, (1,))
apply(f2, (1, 2))
apply(f3, (1, 2, 3))

46 47 48 49 50 51 52 53 54 55 56
# A PyCFunction that takes only positional parameters should allow an
# empty keyword dictionary to pass without a complaint, but raise a
# TypeError if the dictionary is non-empty.
apply(id, (1,), {})
try:
    apply(id, (1,), {"foo": 1})
except TypeError:
    pass
else:
    raise TestFailed, 'expected TypeError; no exception raised'

57 58 59 60 61
print 'callable'
if not callable(len):raise TestFailed, 'callable(len)'
def f(): pass
if not callable(f): raise TestFailed, 'callable(f)'
class C:
62
    def meth(self): pass
63 64 65 66 67
if not callable(C): raise TestFailed, 'callable(C)'
x = C()
if not callable(x.meth): raise TestFailed, 'callable(x.meth)'
if callable(x): raise TestFailed, 'callable(x)'
class D(C):
68
    def __call__(self): pass
69 70
y = D()
if not callable(y): raise TestFailed, 'callable(y)'
71
y()
72

Guido van Rossum's avatar
Guido van Rossum committed
73
print 'chr'
74 75 76
if chr(32) != ' ': raise TestFailed, 'chr(32)'
if chr(65) != 'A': raise TestFailed, 'chr(65)'
if chr(97) != 'a': raise TestFailed, 'chr(97)'
Guido van Rossum's avatar
Guido van Rossum committed
77

78
# cmp
79
print 'cmp'
80 81 82
if cmp(-1, 1) != -1: raise TestFailed, 'cmp(-1, 1)'
if cmp(1, -1) != 1: raise TestFailed, 'cmp(1, -1)'
if cmp(1, 1) != 0: raise TestFailed, 'cmp(1, 1)'
83 84 85 86 87 88 89 90 91
# verify that circular objects are handled
a = []; a.append(a)
b = []; b.append(b)
from UserList import UserList
c = UserList(); c.append(c)
if cmp(a, b) != 0: raise TestFailed, "cmp(%s, %s)" % (a, b)
if cmp(b, c) != 0: raise TestFailed, "cmp(%s, %s)" % (b, c)
if cmp(c, a) != 0: raise TestFailed, "cmp(%s, %s)" % (c, a)
if cmp(a, c) != 0: raise TestFailed, "cmp(%s, %s)" % (a, c)
92 93
# okay, now break the cycles
a.pop(); b.pop(); c.pop()
94 95

print 'coerce'
96
if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
97
if coerce(1, 1L) != (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
98
if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
99

100 101 102
print 'compile'
compile('print 1\n', '', 'exec')

103
print 'complex'
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
if complex(1,10) != 1+10j: raise TestFailed, 'complex(1,10)'
if complex(1,10L) != 1+10j: raise TestFailed, 'complex(1,10L)'
if complex(1,10.0) != 1+10j: raise TestFailed, 'complex(1,10.0)'
if complex(1L,10) != 1+10j: raise TestFailed, 'complex(1L,10)'
if complex(1L,10L) != 1+10j: raise TestFailed, 'complex(1L,10L)'
if complex(1L,10.0) != 1+10j: raise TestFailed, 'complex(1L,10.0)'
if complex(1.0,10) != 1+10j: raise TestFailed, 'complex(1.0,10)'
if complex(1.0,10L) != 1+10j: raise TestFailed, 'complex(1.0,10L)'
if complex(1.0,10.0) != 1+10j: raise TestFailed, 'complex(1.0,10.0)'
if complex(3.14+0j) != 3.14+0j: raise TestFailed, 'complex(3.14)'
if complex(3.14) != 3.14+0j: raise TestFailed, 'complex(3.14)'
if complex(314) != 314.0+0j: raise TestFailed, 'complex(314)'
if complex(314L) != 314.0+0j: raise TestFailed, 'complex(314L)'
if complex(3.14+0j, 0j) != 3.14+0j: raise TestFailed, 'complex(3.14, 0j)'
if complex(3.14, 0.0) != 3.14+0j: raise TestFailed, 'complex(3.14, 0.0)'
if complex(314, 0) != 314.0+0j: raise TestFailed, 'complex(314, 0)'
if complex(314L, 0L) != 314.0+0j: raise TestFailed, 'complex(314L, 0L)'
if complex(0j, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0j, 3.14j)'
if complex(0.0, 3.14j) != -3.14+0j: raise TestFailed, 'complex(0.0, 3.14j)'
if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
125 126 127 128 129 130 131 132
if complex("1") != 1+0j: raise TestFailed, 'complex("1")'
if complex("1j") != 1j: raise TestFailed, 'complex("1j")'
try: complex("1", "1")
except TypeError: pass
else: raise TestFailed, 'complex("1", "1")'
try: complex(1, "1")
except TypeError: pass
else: raise TestFailed, 'complex(1, "1")'
133
if complex("  3.14+J  ") != 3.14+1j:  raise TestFailed, 'complex("  3.14+J  )"'
134 135 136
if have_unicode:
    if complex(unicode("  3.14+J  ")) != 3.14+1j:
        raise TestFailed, 'complex(u"  3.14+J  )"'
137 138 139
class Z:
    def __complex__(self): return 3.14j
z = Z()
140
if complex(z) != 3.14j: raise TestFailed, 'complex(classinstance)'
141

142 143 144 145 146
print 'delattr'
import sys
sys.spam = 1
delattr(sys, 'spam')

Guido van Rossum's avatar
Guido van Rossum committed
147 148 149 150 151 152 153
print 'dir'
x = 1
if 'x' not in dir(): raise TestFailed, 'dir()'
import sys
if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'

print 'divmod'
154 155 156 157
if divmod(12, 7) != (1, 5): raise TestFailed, 'divmod(12, 7)'
if divmod(-12, 7) != (-2, 2): raise TestFailed, 'divmod(-12, 7)'
if divmod(12, -7) != (-2, -2): raise TestFailed, 'divmod(12, -7)'
if divmod(-12, -7) != (1, -5): raise TestFailed, 'divmod(-12, -7)'
Guido van Rossum's avatar
Guido van Rossum committed
158
#
159 160 161 162
if divmod(12L, 7L) != (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
if divmod(-12L, 7L) != (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
if divmod(12L, -7L) != (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
if divmod(-12L, -7L) != (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
Guido van Rossum's avatar
Guido van Rossum committed
163
#
164 165 166 167
if divmod(12, 7L) != (1, 5L): raise TestFailed, 'divmod(12, 7L)'
if divmod(-12, 7L) != (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
if divmod(12L, -7) != (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
if divmod(-12L, -7) != (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
Guido van Rossum's avatar
Guido van Rossum committed
168
#
169
if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
170
    raise TestFailed, 'divmod(3.25, 1.0)'
171
if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
172
    raise TestFailed, 'divmod(-3.25, 1.0)'
173
if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
174
    raise TestFailed, 'divmod(3.25, -1.0)'
175
if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
176
    raise TestFailed, 'divmod(-3.25, -1.0)'
Guido van Rossum's avatar
Guido van Rossum committed
177 178

print 'eval'
179 180
if eval('1+1') != 2: raise TestFailed, 'eval(\'1+1\')'
if eval(' 1+1\n') != 2: raise TestFailed, 'eval(\' 1+1\\n\')'
181 182
globals = {'a': 1, 'b': 2}
locals = {'b': 200, 'c': 300}
183
if eval('a', globals) != 1:
Jeremy Hylton's avatar
Jeremy Hylton committed
184
    raise TestFailed, "eval(1) == %s" % eval('a', globals)
185
if eval('a', globals, locals) != 1:
Jeremy Hylton's avatar
Jeremy Hylton committed
186
    raise TestFailed, "eval(2)"
187
if eval('b', globals, locals) != 200:
Jeremy Hylton's avatar
Jeremy Hylton committed
188
    raise TestFailed, "eval(3)"
189
if eval('c', globals, locals) != 300:
Jeremy Hylton's avatar
Jeremy Hylton committed
190
    raise TestFailed, "eval(4)"
191 192 193
if have_unicode:
    if eval(unicode('1+1')) != 2: raise TestFailed, 'eval(u\'1+1\')'
    if eval(unicode(' 1+1\n')) != 2: raise TestFailed, 'eval(u\' 1+1\\n\')'
194 195
globals = {'a': 1, 'b': 2}
locals = {'b': 200, 'c': 300}
196 197 198 199 200 201 202 203 204
if have_unicode:
    if eval(unicode('a'), globals) != 1:
        raise TestFailed, "eval(1) == %s" % eval(unicode('a'), globals)
    if eval(unicode('a'), globals, locals) != 1:
        raise TestFailed, "eval(2)"
    if eval(unicode('b'), globals, locals) != 200:
        raise TestFailed, "eval(3)"
    if eval(unicode('c'), globals, locals) != 300:
        raise TestFailed, "eval(4)"
Guido van Rossum's avatar
Guido van Rossum committed
205

206 207 208 209 210 211 212
print 'execfile'
z = 0
f = open(TESTFN, 'w')
f.write('z = z+1\n')
f.write('z = z*2\n')
f.close()
execfile(TESTFN)
213
if z != 2: raise TestFailed, "execfile(1)"
214 215
globals['z'] = 0
execfile(TESTFN, globals)
216
if globals['z'] != 2: raise TestFailed, "execfile(1)"
217 218
locals['z'] = 0
execfile(TESTFN, globals, locals)
219
if locals['z'] != 2: raise TestFailed, "execfile(1)"
220
unlink(TESTFN)
Guido van Rossum's avatar
Guido van Rossum committed
221

222
print 'filter'
223
if filter(lambda c: 'a' <= c <= 'z', 'Hello World') != 'elloorld':
224
    raise TestFailed, 'filter (filter a string)'
225
if filter(None, [1, 'hello', [], [3], '', None, 9, 0]) != [1, 'hello', [3], 9]:
226
    raise TestFailed, 'filter (remove false values)'
227
if filter(lambda x: x > 0, [1, -3, 9, 0, 2]) != [1, 9, 2]:
228
    raise TestFailed, 'filter (keep positives)'
229
class Squares:
230 231 232 233 234 235 236 237 238 239 240
    def __init__(self, max):
        self.max = max
        self.sofar = []
    def __len__(self): return len(self.sofar)
    def __getitem__(self, i):
        if not 0 <= i < self.max: raise IndexError
        n = len(self.sofar)
        while n <= i:
            self.sofar.append(n*n)
            n = n+1
        return self.sofar[i]
241
if filter(None, Squares(10)) != [1, 4, 9, 16, 25, 36, 49, 64, 81]:
242
    raise TestFailed, 'filter(None, Squares(10))'
243
if filter(lambda x: x%2, Squares(10)) != [1, 9, 25, 49, 81]:
244
    raise TestFailed, 'filter(oddp, Squares(10))'
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
class StrSquares:
    def __init__(self, max):
        self.max = max
        self.sofar = []
    def __len__(self):
        return len(self.sofar)
    def __getitem__(self, i):
        if not 0 <= i < self.max:
            raise IndexError
        n = len(self.sofar)
        while n <= i:
            self.sofar.append(str(n*n))
            n = n+1
        return self.sofar[i]
def identity(item):
    return 1
filter(identity, Squares(5))
262

Guido van Rossum's avatar
Guido van Rossum committed
263
print 'float'
264 265 266 267
if float(3.14) != 3.14: raise TestFailed, 'float(3.14)'
if float(314) != 314.0: raise TestFailed, 'float(314)'
if float(314L) != 314.0: raise TestFailed, 'float(314L)'
if float("  3.14  ") != 3.14:  raise TestFailed, 'float("  3.14  ")'
268 269 270
if have_unicode:
    if float(unicode("  3.14  ")) != 3.14:
        raise TestFailed, 'float(u"  3.14  ")'
271
    if float(unicode("  \u0663.\u0661\u0664  ",'raw-unicode-escape')) != 3.14:
272
        raise TestFailed, 'float(u"  \u0663.\u0661\u0664  ")'
Guido van Rossum's avatar
Guido van Rossum committed
273 274 275 276

print 'getattr'
import sys
if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
277 278 279 280 281 282 283 284 285 286 287 288
try:
    getattr(sys, 1)
except TypeError:
    pass
else:
    raise TestFailed, "getattr(sys, 1) should raise an exception"
try:
    getattr(sys, 1, "foo")
except TypeError:
    pass
else:
    raise TestFailed, 'getattr(sys, 1, "foo") should raise an exception'
Guido van Rossum's avatar
Guido van Rossum committed
289

290 291 292
print 'hasattr'
import sys
if not hasattr(sys, 'stdout'): raise TestFailed, 'hasattr'
293 294 295 296 297 298
try:
    hasattr(sys, 1)
except TypeError:
    pass
else:
    raise TestFailed, "hasattr(sys, 1) should raise an exception"
299 300 301 302 303 304 305

print 'hash'
hash(None)
if not hash(1) == hash(1L) == hash(1.0): raise TestFailed, 'numeric hash()'
hash('spam')
hash((0,1,2,3))
def f(): pass
306 307 308 309 310 311
try: hash([])
except TypeError: pass
else: raise TestFailed, "hash([]) should raise an exception"
try: hash({})
except TypeError: pass
else: raise TestFailed, "hash({}) should raise an exception"
312

Guido van Rossum's avatar
Guido van Rossum committed
313 314 315
print 'hex'
if hex(16) != '0x10': raise TestFailed, 'hex(16)'
if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
316 317 318
if len(hex(-1)) != len(hex(sys.maxint)): raise TestFailed, 'len(hex(-1))'
if hex(-16) not in ('0xfffffff0', '0xfffffffffffffff0'):
    raise TestFailed, 'hex(-16)'
Guido van Rossum's avatar
Guido van Rossum committed
319 320
if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'

321 322 323 324 325 326 327 328 329 330
print 'id'
id(None)
id(1)
id(1L)
id(1.0)
id('spam')
id((0,1,2,3))
id([0,1,2,3])
id({'spam': 1, 'eggs': 2, 'ham': 3})

Guido van Rossum's avatar
Guido van Rossum committed
331 332 333
# Test input() later, together with raw_input

print 'int'
334 335 336
if int(314) != 314: raise TestFailed, 'int(314)'
if int(3.14) != 3: raise TestFailed, 'int(3.14)'
if int(314L) != 314: raise TestFailed, 'int(314L)'
337
# Check that conversion from float truncates towards zero
338 339 340 341 342
if int(-3.14) != -3: raise TestFailed, 'int(-3.14)'
if int(3.9) != 3: raise TestFailed, 'int(3.9)'
if int(-3.9) != -3: raise TestFailed, 'int(-3.9)'
if int(3.5) != 3: raise TestFailed, 'int(3.5)'
if int(-3.5) != -3: raise TestFailed, 'int(-3.5)'
343
# Different base:
344
if int("10",16) != 16L: raise TestFailed, 'int("10",16)'
345 346 347
if have_unicode:
    if int(unicode("10"),16) != 16L:
        raise TestFailed, 'int(u"10",16)'
Jeremy Hylton's avatar
Jeremy Hylton committed
348
# Test conversion from strings and various anomalies
349
L = [
350 351 352 353 354 355 356 357 358 359 360
        ('0', 0),
        ('1', 1),
        ('9', 9),
        ('10', 10),
        ('99', 99),
        ('100', 100),
        ('314', 314),
        (' 314', 314),
        ('314 ', 314),
        ('  \t\t  314  \t\t  ', 314),
        (`sys.maxint`, sys.maxint),
361 362 363
        ('  1x', ValueError),
        ('  1  ', 1),
        ('  1\02  ', ValueError),
364 365
        ('', ValueError),
        (' ', ValueError),
366 367 368 369 370 371 372 373 374 375 376 377
        ('  \t\t  ', ValueError)
]
if have_unicode:
    L += [
        (unicode('0'), 0),
        (unicode('1'), 1),
        (unicode('9'), 9),
        (unicode('10'), 10),
        (unicode('99'), 99),
        (unicode('100'), 100),
        (unicode('314'), 314),
        (unicode(' 314'), 314),
378
        (unicode('\u0663\u0661\u0664 ','raw-unicode-escape'), 314),
379 380 381 382 383 384 385
        (unicode('  \t\t  314  \t\t  '), 314),
        (unicode('  1x'), ValueError),
        (unicode('  1  '), 1),
        (unicode('  1\02  '), ValueError),
        (unicode(''), ValueError),
        (unicode(' '), ValueError),
        (unicode('  \t\t  '), ValueError),
386 387 388
]
for s, v in L:
    for sign in "", "+", "-":
389 390 391 392 393 394 395 396 397 398 399 400
        for prefix in "", " ", "\t", "  \t\t  ":
            ss = prefix + sign + s
            vv = v
            if sign == "-" and v is not ValueError:
                vv = -v
            try:
                if int(ss) != vv:
                    raise TestFailed, "int(%s)" % `ss`
            except v:
                pass
            except ValueError, e:
                raise TestFailed, "int(%s) raised ValueError: %s" % (`ss`, e)
401 402 403 404 405 406 407 408 409
s = `-1-sys.maxint`
if int(s)+1 != -sys.maxint:
    raise TestFailed, "int(%s)" % `s`
try:
    int(s[1:])
except ValueError:
    pass
else:
    raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
410 411 412 413 414 415 416 417 418 419 420 421 422
try:
    int(1e100)
except OverflowError:
    pass
else:
    raise TestFailed("int(1e100) expected OverflowError")
try:
    int(-1e100)
except OverflowError:
    pass
else:
    raise TestFailed("int(-1e100) expected OverflowError")

Guido van Rossum's avatar
Guido van Rossum committed
423

424 425 426 427
# SF bug 434186:  0x80000000/2 != 0x80000000>>1.
# Worked by accident in Windows release build, but failed in debug build.
# Failed in all Linux builds.
x = -1-sys.maxint
428
if x >> 1 != x//2:
429 430
    raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")

431 432 433 434
try: int('123\0')
except ValueError: pass
else: raise TestFailed("int('123\0') didn't raise exception")

435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
try: int('53', 40)
except ValueError: pass
else: raise TestFailed("int('53', 40) didn't raise ValueError")

try: int('1' * 512)
except ValueError: pass
else: raise TestFailed("int('1' * 512) didn't raise ValueError")

try: int(1, 12)
except TypeError: pass
else: raise TestFailed("int(1, 12) didn't raise TypeError")

if int('0123', 0) != 83:
    raise TestFailed("int('0123', 0) != 83")

450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485
print 'isinstance'
class C:
    pass
class D(C):
    pass
class E:
    pass
c = C()
d = D()
e = E()
if not isinstance(c, C): raise TestFailed, 'isinstance(c, C)'
if not isinstance(d, C): raise TestFailed, 'isinstance(d, C)'
if isinstance(e, C): raise TestFailed, 'isinstance(e, C)'
if isinstance(c, D): raise TestFailed, 'isinstance(c, D)'
if isinstance('foo', E): raise TestFailed, 'isinstance("Foo", E)'
try:
    isinstance(E, 'foo')
    raise TestFailed, 'isinstance(E, "foo")'
except TypeError:
    pass

print 'issubclass'
if not issubclass(D, C): raise TestFailed, 'issubclass(D, C)'
if not issubclass(C, C): raise TestFailed, 'issubclass(C, C)'
if issubclass(C, D): raise TestFailed, 'issubclass(C, D)'
try:
    issubclass('foo', E)
    raise TestFailed, 'issubclass("foo", E)'
except TypeError:
    pass
try:
    issubclass(E, 'foo')
    raise TestFailed, 'issubclass(E, "foo")'
except TypeError:
    pass

Guido van Rossum's avatar
Guido van Rossum committed
486
print 'len'
487 488 489 490 491 492
if len('123') != 3: raise TestFailed, 'len(\'123\')'
if len(()) != 0: raise TestFailed, 'len(())'
if len((1, 2, 3, 4)) != 4: raise TestFailed, 'len((1, 2, 3, 4))'
if len([1, 2, 3, 4]) != 4: raise TestFailed, 'len([1, 2, 3, 4])'
if len({}) != 0: raise TestFailed, 'len({})'
if len({'a':1, 'b': 2}) != 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
Guido van Rossum's avatar
Guido van Rossum committed
493

494 495 496 497 498 499 500 501 502 503
print 'list'
if list([]) != []: raise TestFailed, 'list([])'
l0_3 = [0, 1, 2, 3]
l0_3_bis = list(l0_3)
if l0_3 != l0_3_bis or l0_3 is l0_3_bis: raise TestFailed, 'list([0, 1, 2, 3])'
if list(()) != []: raise TestFailed, 'list(())'
if list((0, 1, 2, 3)) != [0, 1, 2, 3]: raise TestFailed, 'list((0, 1, 2, 3))'
if list('') != []: raise TestFailed, 'list('')'
if list('spam') != ['s', 'p', 'a', 'm']: raise TestFailed, "list('spam')"

Guido van Rossum's avatar
Guido van Rossum committed
504
print 'long'
505 506 507
if long(314) != 314L: raise TestFailed, 'long(314)'
if long(3.14) != 3L: raise TestFailed, 'long(3.14)'
if long(314L) != 314L: raise TestFailed, 'long(314L)'
508
# Check that conversion from float truncates towards zero
509 510 511 512 513 514
if long(-3.14) != -3L: raise TestFailed, 'long(-3.14)'
if long(3.9) != 3L: raise TestFailed, 'long(3.9)'
if long(-3.9) != -3L: raise TestFailed, 'long(-3.9)'
if long(3.5) != 3L: raise TestFailed, 'long(3.5)'
if long(-3.5) != -3L: raise TestFailed, 'long(-3.5)'
if long("-3") != -3L: raise TestFailed, 'long("-3")'
515 516 517
if have_unicode:
    if long(unicode("-3")) != -3L:
        raise TestFailed, 'long(u"-3")'
518
# Different base:
519
if long("10",16) != 16L: raise TestFailed, 'long("10",16)'
520 521 522
if have_unicode:
    if long(unicode("10"),16) != 16L:
        raise TestFailed, 'long(u"10",16)'
523 524
# Check conversions from string (same test set as for int(), and then some)
LL = [
525
        ('1' + '0'*20, 10L**20),
526 527 528 529 530 531
        ('1' + '0'*100, 10L**100)
]
if have_unicode:
    L+=[
        (unicode('1') + unicode('0')*20, 10L**20),
        (unicode('1') + unicode('0')*100, 10L**100),
532 533 534
]
for s, v in L + LL:
    for sign in "", "+", "-":
535 536 537 538 539 540 541
        for prefix in "", " ", "\t", "  \t\t  ":
            ss = prefix + sign + s
            vv = v
            if sign == "-" and v is not ValueError:
                vv = -v
            try:
                if long(ss) != long(vv):
542
                    raise TestFailed, "long(%s)" % `ss`
543 544 545
            except v:
                pass
            except ValueError, e:
546
                raise TestFailed, "long(%s) raised ValueError: %s" % (`ss`, e)
Guido van Rossum's avatar
Guido van Rossum committed
547

548 549 550 551
try: long('123\0')
except ValueError: pass
else: raise TestFailed("long('123\0') didn't raise exception")

552 553 554 555 556 557 558 559
try: long('53', 40)
except ValueError: pass
else: raise TestFailed("long('53', 40) didn't raise ValueError")

try: long(1, 12)
except TypeError: pass
else: raise TestFailed("long(1, 12) didn't raise TypeError")

560
print 'map'
561
if map(None, 'hello world') != ['h','e','l','l','o',' ','w','o','r','l','d']:
562
    raise TestFailed, 'map(None, \'hello world\')'
563
if map(None, 'abcd', 'efg') != \
564 565
   [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]:
    raise TestFailed, 'map(None, \'abcd\', \'efg\')'
566
if map(None, range(10)) != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
567
    raise TestFailed, 'map(None, range(10))'
568
if map(lambda x: x*x, range(1,4)) != [1, 4, 9]:
569
    raise TestFailed, 'map(lambda x: x*x, range(1,4))'
570
try:
571
    from math import sqrt
572
except ImportError:
573 574
    def sqrt(x):
        return pow(x, 0.5)
575
if map(lambda x: map(sqrt,x), [[16, 4], [81, 9]]) != [[4.0, 2.0], [9.0, 3.0]]:
576
    raise TestFailed, 'map(lambda x: map(sqrt,x), [[16, 4], [81, 9]])'
577
if map(lambda x, y: x+y, [1,3,2], [9,1,4]) != [10, 4, 6]:
578
    raise TestFailed, 'map(lambda x,y: x+y, [1,3,2], [9,1,4])'
579
def plus(*v):
580 581 582
    accu = 0
    for i in v: accu = accu + i
    return accu
583
if map(plus, [1, 3, 7]) != [1, 3, 7]:
584
    raise TestFailed, 'map(plus, [1, 3, 7])'
585
if map(plus, [1, 3, 7], [4, 9, 2]) != [1+4, 3+9, 7+2]:
586
    raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2])'
587
if map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0]) != [1+4+1, 3+9+1, 7+2+0]:
588
    raise TestFailed, 'map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0])'
589
if map(None, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
590
    raise TestFailed, 'map(None, Squares(10))'
591
if map(int, Squares(10)) != [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]:
592
    raise TestFailed, 'map(int, Squares(10))'
593
if map(None, Squares(3), Squares(2)) != [(0,0), (1,1), (4,None)]:
594
    raise TestFailed, 'map(None, Squares(3), Squares(2))'
595
if map(max, Squares(3), Squares(2)) != [0, 1, 4]:
596
    raise TestFailed, 'map(max, Squares(3), Squares(2))'
597

Guido van Rossum's avatar
Guido van Rossum committed
598
print 'max'
599 600 601 602
if max('123123') != '3': raise TestFailed, 'max(\'123123\')'
if max(1, 2, 3) != 3: raise TestFailed, 'max(1, 2, 3)'
if max((1, 2, 3, 1, 2, 3)) != 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
if max([1, 2, 3, 1, 2, 3]) != 3: raise TestFailed, 'max([1, 2, 3, 1, 2, 3])'
Guido van Rossum's avatar
Guido van Rossum committed
603
#
604 605 606
if max(1, 2L, 3.0) != 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
if max(1L, 2.0, 3) != 3: raise TestFailed, 'max(1L, 2.0, 3)'
if max(1.0, 2, 3L) != 3L: raise TestFailed, 'max(1.0, 2, 3L)'
Guido van Rossum's avatar
Guido van Rossum committed
607 608

print 'min'
609 610 611 612
if min('123123') != '1': raise TestFailed, 'min(\'123123\')'
if min(1, 2, 3) != 1: raise TestFailed, 'min(1, 2, 3)'
if min((1, 2, 3, 1, 2, 3)) != 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
if min([1, 2, 3, 1, 2, 3]) != 1: raise TestFailed, 'min([1, 2, 3, 1, 2, 3])'
Guido van Rossum's avatar
Guido van Rossum committed
613
#
614 615 616
if min(1, 2L, 3.0) != 1: raise TestFailed, 'min(1, 2L, 3.0)'
if min(1L, 2.0, 3) != 1L: raise TestFailed, 'min(1L, 2.0, 3)'
if min(1.0, 2, 3L) != 1.0: raise TestFailed, 'min(1.0, 2, 3L)'