def testStoreComplex(self, mapper, _): for value in (0 + 0j, 1 + 3.3e33j, -3.3e-33 - 1j): ptr = mapper.Store(value) self.assertEquals(mapper.Retrieve(ptr), value, "stored/retrieved wrong") self.assertEquals( CPyMarshal.ReadIntField(ptr, PyComplexObject, "ob_refcnt"), 1) self.assertEquals( CPyMarshal.ReadPtrField(ptr, PyComplexObject, "ob_type"), mapper.PyComplex_Type) cpxptr = CPyMarshal.GetField(ptr, PyComplexObject, "cval") self.assertEquals( CPyMarshal.ReadDoubleField(cpxptr, Py_complex, "real"), value.real) self.assertEquals( CPyMarshal.ReadDoubleField(cpxptr, Py_complex, "imag"), value.imag) mapper.DecRef(ptr)
def testReadDoubleField(self): data = Marshal.AllocHGlobal(Marshal.SizeOf(PyFloatObject())) CPyMarshal.Zero(data, Marshal.SizeOf(PyFloatObject())) CPyMarshal.WriteDoubleField(data, PyFloatObject, "ob_fval", -1.2e34) self.assertEquals( CPyMarshal.ReadDoubleField(data, PyFloatObject, "ob_fval"), -1.2e34) Marshal.FreeHGlobal(data)
def testPyFloat_FromDouble(self, mapper, _): for value in (0.0, 3.3e33, -3.3e-33): ptr = mapper.PyFloat_FromDouble(value) self.assertEquals(mapper.Retrieve(ptr), value, "stored/retrieved wrong") self.assertEquals( CPyMarshal.ReadIntField(ptr, PyFloatObject, "ob_refcnt"), 1) self.assertEquals( CPyMarshal.ReadPtrField(ptr, PyFloatObject, "ob_type"), mapper.PyFloat_Type) self.assertEquals( CPyMarshal.ReadDoubleField(ptr, PyFloatObject, "ob_fval"), value) mapper.DecRef(ptr)