python (3.11.7)

(root)/
lib/
python3.11/
test/
test_opcodes.py
       1  # Python test set -- part 2, opcodes
       2  
       3  import unittest
       4  from test import support
       5  from test.typinganndata import ann_module
       6  
       7  class ESC[4;38;5;81mOpcodeTest(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
       8  
       9      def test_try_inside_for_loop(self):
      10          n = 0
      11          for i in range(10):
      12              n = n+i
      13              try: 1/0
      14              except NameError: pass
      15              except ZeroDivisionError: pass
      16              except TypeError: pass
      17              try: pass
      18              except: pass
      19              try: pass
      20              finally: pass
      21              n = n+i
      22          if n != 90:
      23              self.fail('try inside for')
      24  
      25      def test_setup_annotations_line(self):
      26          # check that SETUP_ANNOTATIONS does not create spurious line numbers
      27          try:
      28              with open(ann_module.__file__, encoding="utf-8") as f:
      29                  txt = f.read()
      30              co = compile(txt, ann_module.__file__, 'exec')
      31              self.assertEqual(co.co_firstlineno, 1)
      32          except OSError:
      33              pass
      34  
      35      def test_default_annotations_exist(self):
      36          class ESC[4;38;5;81mC: pass
      37          self.assertEqual(C.__annotations__, {})
      38  
      39      def test_use_existing_annotations(self):
      40          ns = {'__annotations__': {1: 2}}
      41          exec('x: int', ns)
      42          self.assertEqual(ns['__annotations__'], {'x': int, 1: 2})
      43  
      44      def test_do_not_recreate_annotations(self):
      45          # Don't rely on the existence of the '__annotations__' global.
      46          with support.swap_item(globals(), '__annotations__', {}):
      47              del globals()['__annotations__']
      48              class ESC[4;38;5;81mC:
      49                  del __annotations__
      50                  with self.assertRaises(NameError):
      51                      x: int
      52  
      53      def test_raise_class_exceptions(self):
      54  
      55          class ESC[4;38;5;81mAClass(ESC[4;38;5;149mException): pass
      56          class ESC[4;38;5;81mBClass(ESC[4;38;5;149mAClass): pass
      57          class ESC[4;38;5;81mCClass(ESC[4;38;5;149mException): pass
      58          class ESC[4;38;5;81mDClass(ESC[4;38;5;149mAClass):
      59              def __init__(self, ignore):
      60                  pass
      61  
      62          try: raise AClass()
      63          except: pass
      64  
      65          try: raise AClass()
      66          except AClass: pass
      67  
      68          try: raise BClass()
      69          except AClass: pass
      70  
      71          try: raise BClass()
      72          except CClass: self.fail()
      73          except: pass
      74  
      75          a = AClass()
      76          b = BClass()
      77  
      78          try:
      79              raise b
      80          except AClass as v:
      81              self.assertEqual(v, b)
      82          else:
      83              self.fail("no exception")
      84  
      85          # not enough arguments
      86          ##try:  raise BClass, a
      87          ##except TypeError: pass
      88          ##else: self.fail("no exception")
      89  
      90          try:  raise DClass(a)
      91          except DClass as v:
      92              self.assertIsInstance(v, DClass)
      93          else:
      94              self.fail("no exception")
      95  
      96      def test_compare_function_objects(self):
      97  
      98          f = eval('lambda: None')
      99          g = eval('lambda: None')
     100          self.assertNotEqual(f, g)
     101  
     102          f = eval('lambda a: a')
     103          g = eval('lambda a: a')
     104          self.assertNotEqual(f, g)
     105  
     106          f = eval('lambda a=1: a')
     107          g = eval('lambda a=1: a')
     108          self.assertNotEqual(f, g)
     109  
     110          f = eval('lambda: 0')
     111          g = eval('lambda: 1')
     112          self.assertNotEqual(f, g)
     113  
     114          f = eval('lambda: None')
     115          g = eval('lambda a: None')
     116          self.assertNotEqual(f, g)
     117  
     118          f = eval('lambda a: None')
     119          g = eval('lambda b: None')
     120          self.assertNotEqual(f, g)
     121  
     122          f = eval('lambda a: None')
     123          g = eval('lambda a=None: None')
     124          self.assertNotEqual(f, g)
     125  
     126          f = eval('lambda a=0: None')
     127          g = eval('lambda a=1: None')
     128          self.assertNotEqual(f, g)
     129  
     130      def test_modulo_of_string_subclasses(self):
     131          class ESC[4;38;5;81mMyString(ESC[4;38;5;149mstr):
     132              def __mod__(self, value):
     133                  return 42
     134          self.assertEqual(MyString() % 3, 42)
     135  
     136  
     137  if __name__ == '__main__':
     138      unittest.main()