177 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| import unittest
 | |
| 
 | |
| class ExceptionTestCase(unittest.TestCase):
 | |
|     def test_try_except_else_finally(self):
 | |
|         hit_except = False
 | |
|         hit_else = False
 | |
|         hit_finally = False
 | |
| 
 | |
|         try:
 | |
|             raise Exception('nyaa!')
 | |
|         except:
 | |
|             hit_except = True
 | |
|         else:
 | |
|             hit_else = True
 | |
|         finally:
 | |
|             hit_finally = True
 | |
| 
 | |
|         self.assertTrue(hit_except)
 | |
|         self.assertTrue(hit_finally)
 | |
|         self.assertFalse(hit_else)
 | |
| 
 | |
|     def test_try_except_else_finally_no_exception(self):
 | |
|         hit_except = False
 | |
|         hit_else = False
 | |
|         hit_finally = False
 | |
| 
 | |
|         try:
 | |
|             pass
 | |
|         except:
 | |
|             hit_except = True
 | |
|         else:
 | |
|             hit_else = True
 | |
|         finally:
 | |
|             hit_finally = True
 | |
| 
 | |
|         self.assertFalse(hit_except)
 | |
|         self.assertTrue(hit_finally)
 | |
|         self.assertTrue(hit_else)
 | |
| 
 | |
|     def test_try_except_finally(self):
 | |
|         hit_except = False
 | |
|         hit_finally = False
 | |
| 
 | |
|         try:
 | |
|             raise Exception('yarr!')
 | |
|         except:
 | |
|             hit_except = True
 | |
|         finally:
 | |
|             hit_finally = True
 | |
| 
 | |
|         self.assertTrue(hit_except)
 | |
|         self.assertTrue(hit_finally)
 | |
| 
 | |
|     def test_try_except_finally_no_exception(self):
 | |
|         hit_except = False
 | |
|         hit_finally = False
 | |
| 
 | |
|         try:
 | |
|             pass
 | |
|         except:
 | |
|             hit_except = True
 | |
|         finally:
 | |
|             hit_finally = True
 | |
| 
 | |
|         self.assertFalse(hit_except)
 | |
|         self.assertTrue(hit_finally)
 | |
| 
 | |
|     def test_try_except(self):
 | |
|         hit_except = False
 | |
| 
 | |
|         try:
 | |
|             raise Exception('ahoy!')
 | |
|         except:
 | |
|             hit_except = True
 | |
| 
 | |
|         self.assertTrue(hit_except)
 | |
| 
 | |
|     def test_try_except_no_exception(self):
 | |
|         hit_except = False
 | |
| 
 | |
|         try:
 | |
|             pass
 | |
|         except:
 | |
|             hit_except = True
 | |
| 
 | |
|         self.assertFalse(hit_except)
 | |
| 
 | |
|     def test_try_except_else(self):
 | |
|         hit_except = False
 | |
|         hit_else = False
 | |
| 
 | |
|         try:
 | |
|             raise Exception('foo!')
 | |
|         except:
 | |
|             hit_except = True
 | |
|         else:
 | |
|             hit_else = True
 | |
| 
 | |
|         self.assertFalse(hit_else)
 | |
|         self.assertTrue(hit_except)
 | |
| 
 | |
|     def test_try_except_else_no_exception(self):
 | |
|         hit_except = False
 | |
|         hit_else = False
 | |
| 
 | |
|         try:
 | |
|             pass
 | |
|         except:
 | |
|             hit_except = True
 | |
|         else:
 | |
|             hit_else = True
 | |
| 
 | |
|         self.assertFalse(hit_except)
 | |
|         self.assertTrue(hit_else)
 | |
| 
 | |
|     def test_try_finally_no_exception(self):
 | |
|         hit_finally = False
 | |
| 
 | |
|         try:
 | |
|             pass
 | |
|         finally:
 | |
|             hit_finally = True
 | |
| 
 | |
|         self.assertTrue(hit_finally)
 | |
| 
 | |
|     def test_nested(self):
 | |
|         hit_finally = False
 | |
|         hit_inner_except = False
 | |
|         hit_inner_finally = False
 | |
| 
 | |
|         try:
 | |
|             try:
 | |
|                 raise Exception('inner exception')
 | |
|             except:
 | |
|                 hit_inner_except = True
 | |
|             finally:
 | |
|                 hit_inner_finally = True
 | |
|         finally:
 | |
|             hit_finally = True
 | |
| 
 | |
|         self.assertTrue(hit_inner_except)
 | |
|         self.assertTrue(hit_inner_finally)
 | |
|         self.assertTrue(hit_finally)
 | |
| 
 | |
|     def test_nested_else(self):
 | |
|         hit_else = False
 | |
|         hit_finally = False
 | |
|         hit_except = False
 | |
|         hit_inner_except = False
 | |
|         hit_inner_else = False
 | |
| 
 | |
|         try:
 | |
|             try:
 | |
|                 pass
 | |
|             except:
 | |
|                 hit_inner_except = True
 | |
|             else:
 | |
|                 hit_inner_else = True
 | |
| 
 | |
|             raise Exception('outer exception')
 | |
|         except:
 | |
|             hit_except = True
 | |
|         else:
 | |
|             hit_else = True
 | |
|         finally:
 | |
|             hit_finally = True
 | |
| 
 | |
|         self.assertFalse(hit_inner_except)
 | |
|         self.assertTrue(hit_inner_else)
 | |
|         self.assertFalse(hit_else)
 | |
|         self.assertTrue(hit_finally)
 | |
|         self.assertTrue(hit_except)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main()
 |