blob: 754d452e26631ca9f1878285bed2264d45cce0c4 [file] [log] [blame]
Tim Peters536cf992005-12-25 23:18:31 +00001
2from test.test_support import run_unittest
3import unittest
4
5class ExceptionTestCase(unittest.TestCase):
6 def test_try_except_else_finally(self):
7 hit_except = False
8 hit_else = False
9 hit_finally = False
10
11 try:
12 raise Exception, 'nyaa!'
13 except:
14 hit_except = True
15 else:
16 hit_else = True
17 finally:
18 hit_finally = True
19
20 self.assertTrue(hit_except)
21 self.assertTrue(hit_finally)
22 self.assertFalse(hit_else)
23
24 def test_try_except_else_finally_no_exception(self):
25 hit_except = False
26 hit_else = False
27 hit_finally = False
28
29 try:
30 pass
31 except:
32 hit_except = True
33 else:
34 hit_else = True
35 finally:
36 hit_finally = True
37
38 self.assertFalse(hit_except)
39 self.assertTrue(hit_finally)
40 self.assertTrue(hit_else)
41
42 def test_try_except_finally(self):
43 hit_except = False
44 hit_finally = False
45
46 try:
47 raise Exception, 'yarr!'
48 except:
49 hit_except = True
50 finally:
51 hit_finally = True
52
53 self.assertTrue(hit_except)
54 self.assertTrue(hit_finally)
55
56 def test_try_except_finally_no_exception(self):
57 hit_except = False
58 hit_finally = False
59
60 try:
61 pass
62 except:
63 hit_except = True
64 finally:
65 hit_finally = True
66
67 self.assertFalse(hit_except)
68 self.assertTrue(hit_finally)
69
70 def test_try_except(self):
71 hit_except = False
72
73 try:
74 raise Exception, 'ahoy!'
75 except:
76 hit_except = True
77
78 self.assertTrue(hit_except)
79
80 def test_try_except_no_exception(self):
81 hit_except = False
82
83 try:
84 pass
85 except:
86 hit_except = True
87
88 self.assertFalse(hit_except)
89
90 def test_try_except_else(self):
91 hit_except = False
92 hit_else = False
93
94 try:
95 raise Exception, 'foo!'
96 except:
97 hit_except = True
98 else:
99 hit_else = True
100
101 self.assertFalse(hit_else)
102 self.assertTrue(hit_except)
103
104 def test_try_except_else_no_exception(self):
105 hit_except = False
106 hit_else = False
107
108 try:
109 pass
110 except:
111 hit_except = True
112 else:
113 hit_else = True
114
115 self.assertFalse(hit_except)
116 self.assertTrue(hit_else)
117
118 def test_try_finally_no_exception(self):
119 hit_finally = False
120
121 try:
122 pass
123 finally:
124 hit_finally = True
125
126 self.assertTrue(hit_finally)
127
128 def test_nested(self):
129 hit_finally = False
130 hit_inner_except = False
131 hit_inner_finally = False
132
133 try:
134 try:
135 raise Exception, 'inner exception'
136 except:
137 hit_inner_except = True
138 finally:
139 hit_inner_finally = True
140 finally:
141 hit_finally = True
142
143 self.assertTrue(hit_inner_except)
144 self.assertTrue(hit_inner_finally)
145 self.assertTrue(hit_finally)
146
147 def test_nested_else(self):
148 hit_else = False
149 hit_finally = False
150 hit_except = False
151 hit_inner_except = False
152 hit_inner_else = False
153
154 try:
155 try:
156 pass
157 except:
158 hit_inner_except = True
159 else:
160 hit_inner_else = True
161
162 raise Exception, 'outer exception'
163 except:
164 hit_except = True
165 else:
166 hit_else = True
167 finally:
168 hit_finally = True
169
170 self.assertFalse(hit_inner_except)
171 self.assertTrue(hit_inner_else)
172 self.assertFalse(hit_else)
173 self.assertTrue(hit_finally)
174 self.assertTrue(hit_except)
175
176def test_main():
177 run_unittest(ExceptionTestCase)
178
179if __name__ == '__main__':
180 test_main()