blob: 11f5e5c84e3bd4d35a3ec1c11cb298b083d0c09a [file] [log] [blame]
Tim Peters1a572962006-03-01 06:19:04 +00001
Benjamin Petersonee8712c2008-05-20 21:35:26 +00002from test.support import run_unittest
Tim Peters1a572962006-03-01 06:19:04 +00003import 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:
Collin Winter3add4d72007-08-29 23:37:32 +000012 raise Exception('nyaa!')
Tim Peters1a572962006-03-01 06:19:04 +000013 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:
Collin Winter3add4d72007-08-29 23:37:32 +000047 raise Exception('yarr!')
Tim Peters1a572962006-03-01 06:19:04 +000048 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:
Collin Winter3add4d72007-08-29 23:37:32 +000074 raise Exception('ahoy!')
Tim Peters1a572962006-03-01 06:19:04 +000075 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:
Collin Winter3add4d72007-08-29 23:37:32 +000095 raise Exception('foo!')
Tim Peters1a572962006-03-01 06:19:04 +000096 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:
Collin Winter3add4d72007-08-29 23:37:32 +0000135 raise Exception('inner exception')
Tim Peters1a572962006-03-01 06:19:04 +0000136 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
Collin Winter3add4d72007-08-29 23:37:32 +0000162 raise Exception('outer exception')
Tim Peters1a572962006-03-01 06:19:04 +0000163 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()