+++ /dev/null
-# Python test set -- part 2, opcodes\r
-\r
-from test.test_support import run_unittest, check_py3k_warnings\r
-import unittest\r
-\r
-class OpcodeTest(unittest.TestCase):\r
-\r
- def test_try_inside_for_loop(self):\r
- n = 0\r
- for i in range(10):\r
- n = n+i\r
- try: 1 // 0\r
- except NameError: pass\r
- except ZeroDivisionError: pass\r
- except TypeError: pass\r
- try: pass\r
- except: pass\r
- try: pass\r
- finally: pass\r
- n = n+i\r
- if n != 90:\r
- self.fail('try inside for')\r
-\r
- def test_raise_class_exceptions(self):\r
-\r
- class AClass: pass\r
- class BClass(AClass): pass\r
- class CClass: pass\r
- class DClass(AClass):\r
- def __init__(self, ignore):\r
- pass\r
-\r
- try: raise AClass()\r
- except: pass\r
-\r
- try: raise AClass()\r
- except AClass: pass\r
-\r
- try: raise BClass()\r
- except AClass: pass\r
-\r
- try: raise BClass()\r
- except CClass: self.fail()\r
- except: pass\r
-\r
- a = AClass()\r
- b = BClass()\r
-\r
- try: raise AClass, b\r
- except BClass, v:\r
- self.assertEqual(v, b)\r
- else: self.fail("no exception")\r
-\r
- try: raise b\r
- except AClass, v:\r
- self.assertEqual(v, b)\r
- else:\r
- self.fail("no exception")\r
-\r
- # not enough arguments\r
- try: raise BClass, a\r
- except TypeError: pass\r
- else: self.fail("no exception")\r
-\r
- try: raise DClass, a\r
- except DClass, v:\r
- self.assertIsInstance(v, DClass)\r
- else:\r
- self.fail("no exception")\r
-\r
- def test_compare_function_objects(self):\r
-\r
- f = eval('lambda: None')\r
- g = eval('lambda: None')\r
- self.assertNotEqual(f, g)\r
-\r
- f = eval('lambda a: a')\r
- g = eval('lambda a: a')\r
- self.assertNotEqual(f, g)\r
-\r
- f = eval('lambda a=1: a')\r
- g = eval('lambda a=1: a')\r
- self.assertNotEqual(f, g)\r
-\r
- f = eval('lambda: 0')\r
- g = eval('lambda: 1')\r
- self.assertNotEqual(f, g)\r
-\r
- f = eval('lambda: None')\r
- g = eval('lambda a: None')\r
- self.assertNotEqual(f, g)\r
-\r
- f = eval('lambda a: None')\r
- g = eval('lambda b: None')\r
- self.assertNotEqual(f, g)\r
-\r
- f = eval('lambda a: None')\r
- g = eval('lambda a=None: None')\r
- self.assertNotEqual(f, g)\r
-\r
- f = eval('lambda a=0: None')\r
- g = eval('lambda a=1: None')\r
- self.assertNotEqual(f, g)\r
-\r
- def test_modulo_of_string_subclasses(self):\r
- class MyString(str):\r
- def __mod__(self, value):\r
- return 42\r
- self.assertEqual(MyString() % 3, 42)\r
-\r
-\r
-def test_main():\r
- with check_py3k_warnings(("exceptions must derive from BaseException",\r
- DeprecationWarning),\r
- ("catching classes that don't inherit "\r
- "from BaseException is not allowed",\r
- DeprecationWarning)):\r
- run_unittest(OpcodeTest)\r
-\r
-if __name__ == '__main__':\r
- test_main()\r