Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r512:785d80b94cfe Date: 2012-06-25 21:08 +0200 http://bitbucket.org/cffi/cffi/changeset/785d80b94cfe/
Log: Complete the tests diff --git a/c/_ffi_backend.c b/c/_ffi_backend.c --- a/c/_ffi_backend.c +++ b/c/_ffi_backend.c @@ -2909,11 +2909,11 @@ PyObject *fargs; CTypeDescrObject *fresult; CTypeDescrObject *fct; - int ellipsis; + int ellipsis = 0; struct funcbuilder_s funcbuilder; Py_ssize_t i; - if (!PyArg_ParseTuple(args, "O!O!i:new_function_type", + if (!PyArg_ParseTuple(args, "O!O!|i:new_function_type", &PyTuple_Type, &fargs, &CTypeDescr_Type, &fresult, &ellipsis)) diff --git a/c/test_c.py b/c/test_c.py --- a/c/test_c.py +++ b/c/test_c.py @@ -964,12 +964,41 @@ py.test.raises(OverflowError, newp, new_pointer_type(BUInt), -1) py.test.raises(OverflowError, newp, new_pointer_type(BUInt), 2**32) -def test_newp_copying_struct_and_union(): +def test_newp_copying(): + """Test that we can do newp(<type>, <cdata of the given type>) for most + types, with the exception of arrays, like in C. + """ BInt = new_primitive_type("int") + p = newp(new_pointer_type(BInt), cast(BInt, 42)) + assert p[0] == 42 + # + BUInt = new_primitive_type("unsigned int") + p = newp(new_pointer_type(BUInt), cast(BUInt, 42)) + assert p[0] == 42 + # + BChar = new_primitive_type("char") + p = newp(new_pointer_type(BChar), cast(BChar, '!')) + assert p[0] == '!' + # + BFloat = new_primitive_type("float") + p = newp(new_pointer_type(BFloat), cast(BFloat, 12.25)) + assert p[0] == 12.25 + # BStruct = new_struct_type("foo_s") BStructPtr = new_pointer_type(BStruct) complete_struct_or_union(BStruct, [('a1', BInt, -1)]) s1 = newp(BStructPtr, [42]) + p1 = newp(new_pointer_type(BStructPtr), s1) + assert p1[0] == s1 + # + BArray = new_array_type(new_pointer_type(BInt), None) + a1 = newp(BArray, [1, 2, 3, 4]) + py.test.raises(TypeError, newp, BArray, a1) + BArray6 = new_array_type(new_pointer_type(BInt), 6) + a1 = newp(BArray6, None) + py.test.raises(TypeError, newp, BArray6, a1) + # + s1 = newp(BStructPtr, [42]) s2 = newp(BStructPtr, s1[0]) assert s2.a1 == 42 # @@ -979,6 +1008,11 @@ u1 = newp(BUnionPtr, 42) u2 = newp(BUnionPtr, u1[0]) assert u2.a1 == 42 + # + BFunc = new_function_type((BInt,), BUInt) + p1 = cast(BFunc, 42) + p2 = newp(new_pointer_type(BFunc), p1) + assert p2[0] == p1 def test_str(): BChar = new_primitive_type("char") _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit