File: //usr/lib/python3.9/test/support/__pycache__/bytecode_helper.cpython-39.pyc
a
kx�gH � @ s8 d Z ddlZddlZddlZe� ZG dd� dej�ZdS )zGbytecode_helper - support tools for testing correct bytecode generation� Nc @ s0 e Zd ZdZdd� Zefdd�Zefdd�ZdS ) �BytecodeTestCasez1Custom assertion methods for inspecting bytecode.c C s t �� }tj||d� |�� S )N)�file)�io�StringIO�dis�getvalue)�self�co�s� r �2/usr/lib/python3.9/test/support/bytecode_helper.py�get_disassembly_as_string s z*BytecodeTestCase.get_disassembly_as_stringc C st t �|�D ](}|j|kr
|tu s*|j|kr
| S q
| �|�}|tu rTd||f }nd}||||f }| �|� dS )zAReturns instr if opname is found, otherwise throws AssertionErrorz%s not found in bytecode:
%sz!(%s,%r) not found in bytecode:
%sN)r �get_instructions�opname�_UNSPECIFIED�argvalr
�fail�r �xr r ZinstrZdisassembly�msgr r r �assertInBytecode s
z!BytecodeTestCase.assertInBytecodec C sd t �|�D ]T}|j|kr
| �|�}|tu r8d||f }n|j|krTd}||||f }| �|� q
dS )z(Throws AssertionError if opname is foundz%s occurs in bytecode:
%sz(%s,%r) occurs in bytecode:
%sN)r r r r
r r r r r r r �assertNotInBytecode s
z$BytecodeTestCase.assertNotInBytecodeN)�__name__�
__module__�__qualname__�__doc__r
r r r r r r r r s r )r Zunittestr r �objectr ZTestCaser r r r r �<module> s