| # 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: raise TestFailed |
| except AClass, v: |
| if v != b: 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 |