| # Python test set -- part 2, opcodes |
| |
| from test.support import run_unittest |
| 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 |
| 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(Exception): pass |
| class BClass(AClass): pass |
| class CClass(Exception): 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 b |
| except AClass as v: |
| self.assertEqual(v, b) |
| 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 as v: |
| self.assertIsInstance(v, DClass) |
| else: |
| self.fail("no exception") |
| |
| def test_compare_function_objects(self): |
| |
| f = eval('lambda: None') |
| g = eval('lambda: None') |
| self.assertNotEqual(f, g) |
| |
| f = eval('lambda a: a') |
| g = eval('lambda a: a') |
| self.assertNotEqual(f, g) |
| |
| f = eval('lambda a=1: a') |
| g = eval('lambda a=1: a') |
| self.assertNotEqual(f, g) |
| |
| f = eval('lambda: 0') |
| g = eval('lambda: 1') |
| self.assertNotEqual(f, g) |
| |
| f = eval('lambda: None') |
| g = eval('lambda a: None') |
| self.assertNotEqual(f, g) |
| |
| f = eval('lambda a: None') |
| g = eval('lambda b: None') |
| self.assertNotEqual(f, g) |
| |
| f = eval('lambda a: None') |
| g = eval('lambda a=None: None') |
| self.assertNotEqual(f, g) |
| |
| f = eval('lambda a=0: None') |
| g = eval('lambda a=1: None') |
| self.assertNotEqual(f, g) |
| |
| def test_modulo_of_string_subclasses(self): |
| class MyString(str): |
| def __mod__(self, value): |
| return 42 |
| self.assertEqual(MyString() % 3, 42) |
| |
| |
| def test_main(): |
| run_unittest(OpcodeTest) |
| |
| if __name__ == '__main__': |
| test_main() |