cpython/Lib/test/test_opcodes.py

116 lines
2.9 KiB
Python
Raw Normal View History

1992-01-27 13:00:37 -04:00
# Python test set -- part 2, opcodes
from test.test_support import run_unittest, _check_py3k_warnings
2006-10-28 10:56:58 -03:00
import unittest
class OpcodeTest(unittest.TestCase):
def test_try_inside_for_loop(self):
n = 0
for i in range(10):
n = n+i
try: 1 // 0
2006-10-28 10:56:58 -03:00
except NameError: pass
except ZeroDivisionError: pass
except TypeError: pass
try: pass
except: pass
try: pass
finally: pass
n = n+i
if n != 90:
self.fail('try inside for')
def test_raise_class_exceptions(self):
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: self.fail()
except: pass
a = AClass()
b = BClass()
try: raise AClass, b
except BClass, v:
self.assertEqual(v, b)
2006-10-28 10:56:58 -03:00
else: self.fail("no exception")
try: raise b
except AClass, v:
self.assertEqual(v, b)
2006-10-28 10:56:58 -03:00
else:
self.fail("no exception")
# not enough arguments
try: raise BClass, a
except TypeError: pass
else: self.fail("no exception")
try: raise DClass, a
except DClass, v:
self.assert_(isinstance(v, DClass))
else:
self.fail("no exception")
def test_compare_function_objects(self):
f = eval('lambda: None')
g = eval('lambda: None')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
f = eval('lambda a: a')
g = eval('lambda a: a')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
f = eval('lambda a=1: a')
g = eval('lambda a=1: a')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
f = eval('lambda: 0')
g = eval('lambda: 1')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
f = eval('lambda: None')
g = eval('lambda a: None')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
f = eval('lambda a: None')
g = eval('lambda b: None')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
f = eval('lambda a: None')
g = eval('lambda a=None: None')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
f = eval('lambda a=0: None')
g = eval('lambda a=1: None')
self.assertNotEquals(f, g)
2006-10-28 10:56:58 -03:00
def test_main():
with _check_py3k_warnings(("exceptions must derive from BaseException",
DeprecationWarning),
("catching classes that don't inherit "
"from BaseException is not allowed",
DeprecationWarning)):
run_unittest(OpcodeTest)
2006-10-28 10:56:58 -03:00
if __name__ == '__main__':
test_main()