symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_opcodes.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # Python test set -- part 2, opcodes
       
     2 
       
     3 from test.test_support import run_unittest
       
     4 import unittest
       
     5 
       
     6 class OpcodeTest(unittest.TestCase):
       
     7 
       
     8     def test_try_inside_for_loop(self):
       
     9         n = 0
       
    10         for i in range(10):
       
    11             n = n+i
       
    12             try: 1/0
       
    13             except NameError: pass
       
    14             except ZeroDivisionError: pass
       
    15             except TypeError: pass
       
    16             try: pass
       
    17             except: pass
       
    18             try: pass
       
    19             finally: pass
       
    20             n = n+i
       
    21         if n != 90:
       
    22             self.fail('try inside for')
       
    23 
       
    24     def test_raise_class_exceptions(self):
       
    25 
       
    26         class AClass: pass
       
    27         class BClass(AClass): pass
       
    28         class CClass: pass
       
    29         class DClass(AClass):
       
    30             def __init__(self, ignore):
       
    31                 pass
       
    32 
       
    33         try: raise AClass()
       
    34         except: pass
       
    35 
       
    36         try: raise AClass()
       
    37         except AClass: pass
       
    38 
       
    39         try: raise BClass()
       
    40         except AClass: pass
       
    41 
       
    42         try: raise BClass()
       
    43         except CClass: self.fail()
       
    44         except: pass
       
    45 
       
    46         a = AClass()
       
    47         b = BClass()
       
    48 
       
    49         try: raise AClass, b
       
    50         except BClass, v:
       
    51             self.assertEqual(v, b)
       
    52         else: self.fail("no exception")
       
    53 
       
    54         try: raise b
       
    55         except AClass, v:
       
    56             self.assertEqual(v, b)
       
    57         else:
       
    58             self.fail("no exception")
       
    59 
       
    60         # not enough arguments
       
    61         try:  raise BClass, a
       
    62         except TypeError: pass
       
    63         else: self.fail("no exception")
       
    64 
       
    65         try:  raise DClass, a
       
    66         except DClass, v:
       
    67             self.assert_(isinstance(v, DClass))
       
    68         else:
       
    69             self.fail("no exception")
       
    70 
       
    71     def test_compare_function_objects(self):
       
    72 
       
    73         f = eval('lambda: None')
       
    74         g = eval('lambda: None')
       
    75         self.assertNotEquals(f, g)
       
    76 
       
    77         f = eval('lambda a: a')
       
    78         g = eval('lambda a: a')
       
    79         self.assertNotEquals(f, g)
       
    80 
       
    81         f = eval('lambda a=1: a')
       
    82         g = eval('lambda a=1: a')
       
    83         self.assertNotEquals(f, g)
       
    84 
       
    85         f = eval('lambda: 0')
       
    86         g = eval('lambda: 1')
       
    87         self.assertNotEquals(f, g)
       
    88 
       
    89         f = eval('lambda: None')
       
    90         g = eval('lambda a: None')
       
    91         self.assertNotEquals(f, g)
       
    92 
       
    93         f = eval('lambda a: None')
       
    94         g = eval('lambda b: None')
       
    95         self.assertNotEquals(f, g)
       
    96 
       
    97         f = eval('lambda a: None')
       
    98         g = eval('lambda a=None: None')
       
    99         self.assertNotEquals(f, g)
       
   100 
       
   101         f = eval('lambda a=0: None')
       
   102         g = eval('lambda a=1: None')
       
   103         self.assertNotEquals(f, g)
       
   104 
       
   105 
       
   106 def test_main():
       
   107     run_unittest(OpcodeTest)
       
   108 
       
   109 if __name__ == '__main__':
       
   110     test_main()