(self)
| 64 | |
| 65 | class StackEffectTests(unittest.TestCase): |
| 66 | def test_stack_effect(self): |
| 67 | self.assertEqual(stack_effect(dis.opmap['POP_TOP']), -1) |
| 68 | self.assertEqual(stack_effect(dis.opmap['BUILD_SLICE'], 2), -1) |
| 69 | self.assertEqual(stack_effect(dis.opmap['BUILD_SLICE'], 3), -2) |
| 70 | self.assertRaises(ValueError, stack_effect, 30000) |
| 71 | # All defined opcodes |
| 72 | has_arg = dis.hasarg |
| 73 | for name, code in filter(lambda item: item[0] not in dis.deoptmap, dis.opmap.items()): |
| 74 | if code >= opcode.MIN_INSTRUMENTED_OPCODE: |
| 75 | continue |
| 76 | with self.subTest(opname=name): |
| 77 | stack_effect(code) |
| 78 | stack_effect(code, 0) |
| 79 | # All not defined opcodes |
| 80 | for code in set(range(256)) - set(dis.opmap.values()): |
| 81 | with self.subTest(opcode=code): |
| 82 | self.assertRaises(ValueError, stack_effect, code) |
| 83 | self.assertRaises(ValueError, stack_effect, code, 0) |
| 84 | |
| 85 | def test_stack_effect_jump(self): |
| 86 | FOR_ITER = dis.opmap['FOR_ITER'] |
nothing calls this directly
no test coverage detected