Beispiel #1
0
    def testReadByte(self):
        data = Marshal.AllocHGlobal(1)

        Marshal.WriteByte(data, 0)
        self.assertEquals(CPyMarshal.ReadByte(data), 0, "wrong")

        Marshal.WriteByte(data, 255)
        self.assertEquals(CPyMarshal.ReadByte(data), 255, "wrong")

        Marshal.FreeHGlobal(data)
Beispiel #2
0
    def testSomeItems(self):
        allocs = []
        mapper = PythonMapper(GetAllocatingTestAllocator(allocs, []))
        deallocTypes = CreateTypes(mapper)
        typeSpec = {
            "tp_basicsize": 32,
            "tp_itemsize": 64,
        }
        typePtr, deallocType = MakeTypePtr(mapper, typeSpec)
        
        del allocs[:]
        result = mapper.PyType_GenericAlloc(typePtr, 3)
        self.assertEquals(allocs, [(result, 224)], "allocated wrong")

        refcount = CPyMarshal.ReadIntField(result, PyObject, "ob_refcnt")
        self.assertEquals(refcount, 1, "bad initialisation")

        instanceType = CPyMarshal.ReadPtrField(result, PyObject, "ob_type")
        self.assertEquals(instanceType, typePtr, "bad type ptr")

        size = CPyMarshal.ReadIntField(result, PyVarObject, "ob_size")
        self.assertEquals(size, 3, "bad ob_size")
        
        headerSize = Marshal.SizeOf(PyVarObject)
        zerosPtr = OffsetPtr(result, headerSize)
        for i in range(224 - headerSize):
            self.assertEquals(CPyMarshal.ReadByte(zerosPtr), 0, "not zeroed")
            zerosPtr = OffsetPtr(zerosPtr, 1)
 
        mapper.Dispose()
        deallocTypes()
        deallocType()
Beispiel #3
0
    def testZero(self):
        bufferlen = 200
        zerolen = 173

        data = Marshal.AllocHGlobal(bufferlen)
        this = data
        for _ in xrange(bufferlen):
            CPyMarshal.WriteByte(this, 255)
            this = OffsetPtr(this, 1)

        CPyMarshal.Zero(data, zerolen)

        this = data
        for i in xrange(bufferlen):
            actual = CPyMarshal.ReadByte(this)
            expected = (255, 0)[i < zerolen]
            self.assertEquals(
                actual, expected,
                "wrong value at %d (%d, %d)" % (i, actual, expected))
            this = OffsetPtr(this, 1)

        Marshal.FreeHGlobal(data)