|
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() |