/Lib/test/test_exception_variations.py

http://unladen-swallow.googlecode.com/ · Python · 180 lines · 143 code · 37 blank · 0 comment · 28 complexity · 084c871ffd224d4b73e337edfd7bc70c MD5 · raw file

  1. from test.test_support import run_unittest
  2. import unittest
  3. class ExceptionTestCase(unittest.TestCase):
  4. def test_try_except_else_finally(self):
  5. hit_except = False
  6. hit_else = False
  7. hit_finally = False
  8. try:
  9. raise Exception, 'nyaa!'
  10. except:
  11. hit_except = True
  12. else:
  13. hit_else = True
  14. finally:
  15. hit_finally = True
  16. self.assertTrue(hit_except)
  17. self.assertTrue(hit_finally)
  18. self.assertFalse(hit_else)
  19. def test_try_except_else_finally_no_exception(self):
  20. hit_except = False
  21. hit_else = False
  22. hit_finally = False
  23. try:
  24. pass
  25. except:
  26. hit_except = True
  27. else:
  28. hit_else = True
  29. finally:
  30. hit_finally = True
  31. self.assertFalse(hit_except)
  32. self.assertTrue(hit_finally)
  33. self.assertTrue(hit_else)
  34. def test_try_except_finally(self):
  35. hit_except = False
  36. hit_finally = False
  37. try:
  38. raise Exception, 'yarr!'
  39. except:
  40. hit_except = True
  41. finally:
  42. hit_finally = True
  43. self.assertTrue(hit_except)
  44. self.assertTrue(hit_finally)
  45. def test_try_except_finally_no_exception(self):
  46. hit_except = False
  47. hit_finally = False
  48. try:
  49. pass
  50. except:
  51. hit_except = True
  52. finally:
  53. hit_finally = True
  54. self.assertFalse(hit_except)
  55. self.assertTrue(hit_finally)
  56. def test_try_except(self):
  57. hit_except = False
  58. try:
  59. raise Exception, 'ahoy!'
  60. except:
  61. hit_except = True
  62. self.assertTrue(hit_except)
  63. def test_try_except_no_exception(self):
  64. hit_except = False
  65. try:
  66. pass
  67. except:
  68. hit_except = True
  69. self.assertFalse(hit_except)
  70. def test_try_except_else(self):
  71. hit_except = False
  72. hit_else = False
  73. try:
  74. raise Exception, 'foo!'
  75. except:
  76. hit_except = True
  77. else:
  78. hit_else = True
  79. self.assertFalse(hit_else)
  80. self.assertTrue(hit_except)
  81. def test_try_except_else_no_exception(self):
  82. hit_except = False
  83. hit_else = False
  84. try:
  85. pass
  86. except:
  87. hit_except = True
  88. else:
  89. hit_else = True
  90. self.assertFalse(hit_except)
  91. self.assertTrue(hit_else)
  92. def test_try_finally_no_exception(self):
  93. hit_finally = False
  94. try:
  95. pass
  96. finally:
  97. hit_finally = True
  98. self.assertTrue(hit_finally)
  99. def test_nested(self):
  100. hit_finally = False
  101. hit_inner_except = False
  102. hit_inner_finally = False
  103. try:
  104. try:
  105. raise Exception, 'inner exception'
  106. except:
  107. hit_inner_except = True
  108. finally:
  109. hit_inner_finally = True
  110. finally:
  111. hit_finally = True
  112. self.assertTrue(hit_inner_except)
  113. self.assertTrue(hit_inner_finally)
  114. self.assertTrue(hit_finally)
  115. def test_nested_else(self):
  116. hit_else = False
  117. hit_finally = False
  118. hit_except = False
  119. hit_inner_except = False
  120. hit_inner_else = False
  121. try:
  122. try:
  123. pass
  124. except:
  125. hit_inner_except = True
  126. else:
  127. hit_inner_else = True
  128. raise Exception, 'outer exception'
  129. except:
  130. hit_except = True
  131. else:
  132. hit_else = True
  133. finally:
  134. hit_finally = True
  135. self.assertFalse(hit_inner_except)
  136. self.assertTrue(hit_inner_else)
  137. self.assertFalse(hit_else)
  138. self.assertTrue(hit_finally)
  139. self.assertTrue(hit_except)
  140. def test_main():
  141. run_unittest(ExceptionTestCase)
  142. if __name__ == '__main__':
  143. test_main()