0
0
mirror of https://github.com/python/cpython.git synced 2024-11-28 08:20:55 +01:00
cpython/Lib/test/test_opcodes.py
Guido van Rossum ae631f7f45 There was actually a test that ensured that raising an exception A
with an instance of a derived class B would really raise an A, not a
B.  Since Barry fixed this anomalous behaviour, I though I might as
well fix the test!  (Hmm, Barry, did you not run the tests or did you
miss that test_opcodes failed?)
1997-10-01 04:41:05 +00:00

102 lines
1.7 KiB
Python

# Python test set -- part 2, opcodes
from test_support import *
print '2. Opcodes'
print 'XXX Not yet fully implemented'
print '2.1 try inside for loop'
n = 0
for i in range(10):
n = n+i
try: 1/0
except NameError: pass
except ZeroDivisionError: pass
except TypeError: pass
try: pass
except: pass
try: pass
finally: pass
n = n+i
if n <> 90:
raise TestFailed, 'try inside for'
print '2.2 raise class exceptions'
class AClass: pass
class BClass(AClass): pass
class CClass: pass
class DClass(AClass):
def __init__(self, ignore):
pass
try: raise AClass()
except: pass
try: raise AClass()
except AClass: pass
try: raise BClass()
except AClass: pass
try: raise BClass()
except CClass: raise TestFailed
except: pass
a = AClass()
b = BClass()
try: raise AClass, b
except BClass, v:
if v != b: raise TestFailed
else: raise TestFailed
try: raise b
except AClass, v:
if v != b: raise TestFailed
# not enough arguments
try: raise BClass, a
except TypeError: pass
try: raise DClass, a
except DClass, v:
if not isinstance(v, DClass):
raise TestFailed
print '2.3 comparing function objects'
f = eval('lambda: None')
g = eval('lambda: None')
if f != g: raise TestFailed
f = eval('lambda a: a')
g = eval('lambda a: a')
if f != g: raise TestFailed
f = eval('lambda a=1: a')
g = eval('lambda a=1: a')
if f != g: raise TestFailed
f = eval('lambda: 0')
g = eval('lambda: 1')
if f == g: raise TestFailed
f = eval('lambda: None')
g = eval('lambda a: None')
if f == g: raise TestFailed
f = eval('lambda a: None')
g = eval('lambda b: None')
if f == g: raise TestFailed
f = eval('lambda a: None')
g = eval('lambda a=None: None')
if f == g: raise TestFailed
f = eval('lambda a=0: None')
g = eval('lambda a=1: None')
if f == g: raise TestFailed