python-2.5.2/win32/Lib/test/test_opcodes.py
changeset 0 ae805ac0140d
equal deleted inserted replaced
-1:000000000000 0:ae805ac0140d
       
     1 # Python test set -- part 2, opcodes
       
     2 
       
     3 from test.test_support import TestFailed
       
     4 
       
     5 
       
     6 print '2. Opcodes'
       
     7 print 'XXX Not yet fully implemented'
       
     8 
       
     9 print '2.1 try inside for loop'
       
    10 n = 0
       
    11 for i in range(10):
       
    12     n = n+i
       
    13     try: 1/0
       
    14     except NameError: pass
       
    15     except ZeroDivisionError: pass
       
    16     except TypeError: pass
       
    17     try: pass
       
    18     except: pass
       
    19     try: pass
       
    20     finally: pass
       
    21     n = n+i
       
    22 if n != 90:
       
    23     raise TestFailed, 'try inside for'
       
    24 
       
    25 
       
    26 print '2.2 raise class exceptions'
       
    27 
       
    28 class AClass: pass
       
    29 class BClass(AClass): pass
       
    30 class CClass: pass
       
    31 class DClass(AClass):
       
    32     def __init__(self, ignore):
       
    33         pass
       
    34 
       
    35 try: raise AClass()
       
    36 except: pass
       
    37 
       
    38 try: raise AClass()
       
    39 except AClass: pass
       
    40 
       
    41 try: raise BClass()
       
    42 except AClass: pass
       
    43 
       
    44 try: raise BClass()
       
    45 except CClass: raise TestFailed
       
    46 except: pass
       
    47 
       
    48 a = AClass()
       
    49 b = BClass()
       
    50 
       
    51 try: raise AClass, b
       
    52 except BClass, v:
       
    53     if v != b: raise TestFailed, "v!=b"
       
    54 else: raise TestFailed, "no exception"
       
    55 
       
    56 try: raise b
       
    57 except AClass, v:
       
    58     if v != b: raise TestFailed, "v!=b AClass"
       
    59 
       
    60 # not enough arguments
       
    61 try:  raise BClass, a
       
    62 except TypeError: pass
       
    63 
       
    64 try:  raise DClass, a
       
    65 except DClass, v:
       
    66     if not isinstance(v, DClass):
       
    67         raise TestFailed, "v not DClass"
       
    68 
       
    69 print '2.3 comparing function objects'
       
    70 
       
    71 f = eval('lambda: None')
       
    72 g = eval('lambda: None')
       
    73 if f == g: raise TestFailed, "functions should not be same"
       
    74 
       
    75 f = eval('lambda a: a')
       
    76 g = eval('lambda a: a')
       
    77 if f == g: raise TestFailed, "functions should not be same"
       
    78 
       
    79 f = eval('lambda a=1: a')
       
    80 g = eval('lambda a=1: a')
       
    81 if f == g: raise TestFailed, "functions should not be same"
       
    82 
       
    83 f = eval('lambda: 0')
       
    84 g = eval('lambda: 1')
       
    85 if f == g: raise TestFailed
       
    86 
       
    87 f = eval('lambda: None')
       
    88 g = eval('lambda a: None')
       
    89 if f == g: raise TestFailed
       
    90 
       
    91 f = eval('lambda a: None')
       
    92 g = eval('lambda b: None')
       
    93 if f == g: raise TestFailed
       
    94 
       
    95 f = eval('lambda a: None')
       
    96 g = eval('lambda a=None: None')
       
    97 if f == g: raise TestFailed
       
    98 
       
    99 f = eval('lambda a=0: None')
       
   100 g = eval('lambda a=1: None')
       
   101 if f == g: raise TestFailed