def test_implicitCast_onDifferentSigns_returnsUnsignedCObjs(self, implicit_cast, adr_space): signed_int1 = CProgram.int(adr_space, 1) signed_int2 = CProgram.int(adr_space, 2) unsigned_int3 = CProgram.unsigned_int(adr_space, 3) assert implicit_cast(signed_int1, signed_int2, unsigned_int3) == [ CProgram.unsigned_int(adr_space, 1), CProgram.unsigned_int(adr_space, 2), CProgram.unsigned_int(adr_space, 3) ]
def test_implicitCast_onDifferentSigns_returnsUnsignedCObjs( self, implicit_cast, adr_space): signed_int1 = CProgram.int(adr_space, 1) signed_int2 = CProgram.int(adr_space, 2) unsigned_int3 = CProgram.unsigned_int(adr_space, 3) assert implicit_cast(signed_int1, signed_int2, unsigned_int3) == [ CProgram.unsigned_int(adr_space, 1), CProgram.unsigned_int(adr_space, 2), CProgram.unsigned_int(adr_space, 3) ]
def test_sub_copiesAdrSpace(self, adr_space): c_char_5 = CProgram.char(adr_space, 5) cobj = c_char_5 - 3 assert cobj.adr_space == adr_space
def test_sub_onSmallCObj_widensResult(self, adr_space): c_char_plus100 = CProgram.char(adr_space, 100) c_char_minus100 = CProgram.char(adr_space, -100) cobj = c_char_minus100 - c_char_plus100 assert int(cobj) == -200 assert cobj.ctype == CProgram.int
def test_sub_onSignedAndUnsignedCObj_returnsInUnsignedCObj(self, adr_space): c_signed_int = CProgram.int(adr_space, 5) c_unsigned_int = CProgram.unsigned_int(adr_space, 3) cobj = c_signed_int - c_unsigned_int assert cobj.ctype == CProgram.unsigned_int
def test_sub_onSignedAndUnsignedCObj_returnsInUnsignedCObj( self, adr_space): c_signed_int = CProgram.int(adr_space, 5) c_unsigned_int = CProgram.unsigned_int(adr_space, 3) cobj = c_signed_int - c_unsigned_int assert cobj.ctype == CProgram.unsigned_int
def test_setRef_onUninitializedCObj_setsRef(self, adr_space): refCObj = CProgram.int(adr_space, 1) cobj = PtrCType(CProgram.int)(adr_space) cobj.ref = refCObj assert cobj.ref is refCObj
def test_initialized_onSetRef_returnsTrue(self, adr_space): cobj = PtrCType(CProgram.int)(adr_space) cobj.ref = CProgram.int(adr_space, 1) assert cobj.initialized
def test_implicitCast_onPyInt_returnsSignedCObj(self, implicit_cast, adr_space): assert implicit_cast(1, adr_space=adr_space) == \ [CProgram.unsigned_int(adr_space, 1)]
def test_initialized_onInitParam_returnsTrue(self, adr_space): refCObj = CProgram.int(adr_space, 1) cobj = PtrCType(CProgram.int)(adr_space, refCObj) assert cobj.initialized
def test_rsub_withPyObj_convertsPyObjToMachineWord(self, adr_space): cobj = CProgram.char(adr_space, 100) result = 500 - cobj assert int(result) == 400
def test_getRef_onInitParam_returnsReferredCObj(self, adr_space): refCObj = CProgram.int(adr_space, 1) cobj = PtrCType(CProgram.int)(adr_space, refCObj) assert cobj.ref is refCObj
def test_setRef_withWrongAdrSpace_returnsValueError(self, adr_space): cobj = PtrCType(CProgram.int)(adr_space) with pytest.raises(ValueError): cobj.ref = CProgram.char(AddressSpace(), 1)
def test_cmp_onImplicitTypeCast(self, adr_space): uint_3 = CProgram.unsigned_int(adr_space, 3) int_minus1 = CProgram.int(adr_space, -1) assert uint_3 < int_minus1 # -1 is casted to 0xFFFFFFFF!