def test_dynamic_pointer_littleendian_64bit_deref(): pint.setbyteorder(config.byteorder.littleendian) t = dynamic.pointer(dynamic.block(4), pint.uint64_t) x = t(source=ptypes.provider.bytes( b'\x08\x00\x00\x00\x00\x00\x00\x00\x41\x41\x41\x41')).l if x.l.d.getoffset() == 8: raise Success
def test_int_littleendian_int32_unsigned_lowedge_load(): pint.setbyteorder(config.byteorder.littleendian) s = '\x00\x00\x00\x00' a = pint.int32_t(source=provider.string(s)).l b, = struct.unpack('i',s) if a.int() == b and a.serialize() == s: raise Success print b, a, a.serialize().encode('hex')
def test_int_littleendian_int32_unsigned_lowedge_load(): pint.setbyteorder(config.byteorder.littleendian) s = b'\x00\x00\x00\x00' a = pint.int32_t(source=provider.bytes(s)).l b, = struct.unpack('i',s) if a.int() == b and a.serialize() == s: raise Success print(b, a, tohex(a.serialize()))
def test_dynamic_pointer_littleendian_1(): pint.setbyteorder(config.byteorder.littleendian) s = ptypes.provider.bytes(string2) t = dynamic.pointer(dynamic.block(0), pint.uint32_t) x = t(source=s).l if x.d.getoffset() == 0x41424344 and x.serialize() == string2: raise Success
def test_dynamic_pointer_littleendian_deref(): pint.setbyteorder(config.byteorder.littleendian) s = ptypes.provider.bytes(b'\x04\x00\x00\x00\x44\x43\x42\x41') t = dynamic.pointer(dynamic.block(4), pint.uint32_t) x = t(source=s) if x.l.d.getoffset() == 4: raise Success
def test_dynamic_pointer_littleendian_deref(): pint.setbyteorder(config.byteorder.littleendian) s = ptype.provider.string('\x04\x00\x00\x00\x44\x43\x42\x41') t = dynamic.pointer(dynamic.block(4), pint.uint32_t) x = t(source=s) if x.l.d.getoffset() == 4: raise Success
def test_dynamic_pointer_littleendian_1(): pint.setbyteorder(config.byteorder.littleendian) s = ptype.provider.string(string2) t = dynamic.pointer(dynamic.block(0), pint.uint32_t) x = t(source=s).l if x.d.getoffset() == 0x41424344 and x.serialize() == string2: raise Success
def test_dynamic_pointer_littleendian_2(): pint.setbyteorder(config.byteorder.littleendian) string = b'\x26\xf8\x1a\x77' s = ptypes.provider.bytes(string) t = dynamic.pointer(dynamic.block(0), pint.uint32_t) x = t(source=s).l if x.d.getoffset() == 0x771af826 and x.serialize() == string: raise Success
def test_dynamic_pointer_littleendian_2(): pint.setbyteorder(config.byteorder.littleendian) string = '\x26\xf8\x1a\x77' s = ptype.provider.string(string) t = dynamic.pointer(dynamic.block(0), pint.uint32_t) x = t(source=s).l if x.d.getoffset() == 0x771af826 and x.serialize() == string: raise Success
def test_int_revert_littleendian_uint32_load(): pint.setbyteorder(config.byteorder.littleendian) a = pint.uint32_t(source=provider.string(string2)).l if a.int() == 0x0abcdef0 and a.serialize() == string2: raise Success print a, a.serialize().encode('hex')
def test_int_revert_littleendian_uint32_load(): pint.setbyteorder(config.byteorder.littleendian) a = pint.uint32_t(source=provider.bytes(string2)).l if a.int() == 0x0abcdef0 and a.serialize() == string2: raise Success print(a, tohex(a.serialize()))
raise Failure except Success,e: print '%s: %r'% (name,e) return True except Failure,e: print '%s: %r'% (name,e) except Exception,e: print '%s: %r : %r'% (name,Failure(), e) return False TestCaseList.append(harness) return fn if __name__ == '__main__': import ptypes, struct from ptypes import pint,config,pfloat pint.setbyteorder(config.byteorder.bigendian) ## data single_precision = [ (0x3f800000, 1.0), (0xc0000000, -2.0), (0x7f7fffff, 3.4028234663852886e+38), (0x3eaaaaab, 1.0/3), (0x41c80000, 25.0), (0xc0b80aa6, -5.7513), (0xffc00000, +float('NaN')), (0x7fc00000, -float('NaN')), (0x7f800000, +float('inf')), (0xff800000, -float('inf')), (0x00000000, float('+0')),
raise Failure except Success as E: print('%s: %r'% (name, E)) return True except Failure as E: print('%s: %r'% (name, E)) except Exception as E: print('%s: %r : %r'% (name, Failure(), E)) return False TestCaseList.append(harness) return fn if __name__ == '__main__': import ptypes, struct from ptypes import pint,config,pfloat pint.setbyteorder(config.byteorder.bigendian) ## data single_precision = [ (0x3f800000, 1.0), (0xc0000000, -2.0), (0x3eaaaaab, 1.0/3), (0x41c80000, 25.0), (0xc0b80aa6, -5.7513), (0x16779688, 2e-25), (0x96779688, -2e-25), (0x736049f7, 1.777e31), (0x00000001, 1.401298464324817e-45), (0x007fffff, 1.1754942106924411e-38), (0x00800000, 1.1754943508222875e-38), (0x7f7fffff, 3.4028234663852886e+38),
def test_dynamic_pointer_littleendian_64bit_deref(): pint.setbyteorder(config.byteorder.littleendian) t = dynamic.pointer(dynamic.block(4), pint.uint64_t) x = t(source=ptype.provider.string('\x08\x00\x00\x00\x00\x00\x00\x00\x41\x41\x41\x41')).l if x.l.d.getoffset() == 8: raise Success