/Lib/test/test_opcodes.py

http://unladen-swallow.googlecode.com/ · Python · 116 lines · 87 code · 27 blank · 2 comment · 29 complexity · ecb3bb7dc12a0a4920d41d5e0d35ae53 MD5 · raw file

  1. # Python test set -- part 2, opcodes
  2. from test.test_support import run_unittest
  3. import unittest
  4. class OpcodeTest(unittest.TestCase):
  5. def test_try_inside_for_loop(self):
  6. n = 0
  7. for i in range(10):
  8. n = n+i
  9. try: 1/0
  10. except NameError: pass
  11. except ZeroDivisionError: pass
  12. except TypeError: pass
  13. try: pass
  14. except: pass
  15. try: pass
  16. finally: pass
  17. n = n+i
  18. if n != 90:
  19. self.fail('try inside for')
  20. def test_raise_class_exceptions(self):
  21. class AClass: pass
  22. class BClass(AClass): pass
  23. class CClass: pass
  24. class DClass(AClass):
  25. def __init__(self, ignore):
  26. pass
  27. try: raise AClass()
  28. except: pass
  29. try: raise AClass()
  30. except AClass: pass
  31. try: raise BClass()
  32. except AClass: pass
  33. try: raise BClass()
  34. except CClass: self.fail()
  35. except: pass
  36. a = AClass()
  37. b = BClass()
  38. try: raise AClass, b
  39. except BClass, v:
  40. self.assertEqual(v, b)
  41. else: self.fail("no exception")
  42. try: raise b
  43. except AClass, v:
  44. self.assertEqual(v, b)
  45. else:
  46. self.fail("no exception")
  47. # not enough arguments
  48. try: raise BClass, a
  49. except TypeError: pass
  50. else: self.fail("no exception")
  51. try: raise DClass, a
  52. except DClass, v:
  53. self.assert_(isinstance(v, DClass))
  54. else:
  55. self.fail("no exception")
  56. def test_compare_function_objects(self):
  57. f = eval('lambda: None')
  58. g = eval('lambda: None')
  59. self.assertNotEquals(f, g)
  60. f = eval('lambda a: a')
  61. g = eval('lambda a: a')
  62. self.assertNotEquals(f, g)
  63. f = eval('lambda a=1: a')
  64. g = eval('lambda a=1: a')
  65. self.assertNotEquals(f, g)
  66. f = eval('lambda: 0')
  67. g = eval('lambda: 1')
  68. self.assertNotEquals(f, g)
  69. f = eval('lambda: None')
  70. g = eval('lambda a: None')
  71. self.assertNotEquals(f, g)
  72. f = eval('lambda a: None')
  73. g = eval('lambda b: None')
  74. self.assertNotEquals(f, g)
  75. f = eval('lambda a: None')
  76. g = eval('lambda a=None: None')
  77. self.assertNotEquals(f, g)
  78. f = eval('lambda a=0: None')
  79. g = eval('lambda a=1: None')
  80. self.assertNotEquals(f, g)
  81. def test_modulo_of_string_subclasses(self):
  82. class MyString(str):
  83. def __mod__(self, value):
  84. return 42
  85. self.assertEqual(MyString() % 3, 42)
  86. def test_main():
  87. run_unittest(OpcodeTest)
  88. if __name__ == '__main__':
  89. test_main()