a  zeH@s8dZddlZddlZddlZeZGdddejZdS)zGbytecode_helper - support tools for testing correct bytecode generationNc@s0eZdZdZddZefddZefddZdS) BytecodeTestCasez1Custom assertion methods for inspecting bytecode.cCst}tj||d|S)N)file)ioStringIOdisgetvalue)selfcosr P/opt/bitninja-python-dojo/embedded/lib/python3.9/test/support/bytecode_helper.pyget_disassembly_as_string sz*BytecodeTestCase.get_disassembly_as_stringcCstt|D](}|j|kr |tus*|j|kr |Sq ||}|turTd||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)rget_instructionsopname _UNSPECIFIEDargvalr failrxrrZinstrZ disassemblymsgr r r assertInBytecodes   z!BytecodeTestCase.assertInBytecodecCsdt|D]T}|j|kr ||}|tur8d||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)rrrr rrrrr r r assertNotInBytecodes   z$BytecodeTestCase.assertNotInBytecodeN)__name__ __module__ __qualname____doc__r rrrr r r r r s r)rZunittestrrobjectrZTestCaserr r r r s