Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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')
Exemplo n.º 3
0
 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()))
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
 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')
Exemplo n.º 11
0
 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()))
Exemplo n.º 12
0
                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')),
Exemplo n.º 13
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),
Exemplo n.º 14
0
 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