Author: mattip <matti.pi...@gmail.com> Branch: Changeset: r85855:419c923b6e54 Date: 2016-07-25 17:00 -0500 http://bitbucket.org/pypy/pypy/changeset/419c923b6e54/
Log: add passing tests, searching why np.ndarray(np.int64()) fails on win32 diff --git a/pypy/module/cpyext/test/test_number.py b/pypy/module/cpyext/test/test_number.py --- a/pypy/module/cpyext/test/test_number.py +++ b/pypy/module/cpyext/test/test_number.py @@ -144,3 +144,15 @@ assert tupl[0] == 3. assert tupl[1] == 1. assert isinstance(tupl[0], float)''' + + def test_PyNumber_Check(self): + mod = self.import_extension('foo', [ + ("test_PyNumber_Check", "METH_VARARGS", + ''' + PyObject *obj = PyTuple_GET_ITEM(args, 0); + int val = PyNumber_Check(obj); + Py_DECREF(obj); + return PyInt_FromLong(val); + ''')]) + val = mod.test_PyNumber_Check(10) + assert val == 1 diff --git a/pypy/module/cpyext/test/test_typeobject.py b/pypy/module/cpyext/test/test_typeobject.py --- a/pypy/module/cpyext/test/test_typeobject.py +++ b/pypy/module/cpyext/test/test_typeobject.py @@ -729,7 +729,7 @@ x = list(it) assert x == [1] - def test_bool(self): + def test_intlike(self): module = self.import_extension('foo', [ ("newInt", "METH_VARARGS", """ @@ -739,10 +739,6 @@ if (!PyArg_ParseTuple(args, "i", &intval)) return NULL; - IntLike_Type.tp_flags |= Py_TPFLAGS_DEFAULT; - IntLike_Type.tp_as_number = &intlike_as_number; - intlike_as_number.nb_nonzero = intlike_nb_nonzero; - if (PyType_Ready(&IntLike_Type) < 0) return NULL; intObj = PyObject_New(IntLikeObject, &IntLike_Type); if (!intObj) { return NULL; @@ -750,8 +746,23 @@ intObj->value = intval; return (PyObject *)intObj; - """)], - """ + """), + ("check", "METH_VARARGS", """ + IntLikeObject *intObj; + int intval, isint; + + if (!PyArg_ParseTuple(args, "i", &intval)) + return NULL; + intObj = PyObject_New(IntLikeObject, &IntLike_Type); + if (!intObj) { + return NULL; + } + intObj->value = intval; + isint = PyNumber_Check((PyObject*)intObj); + Py_DECREF((PyObject*)intObj); + return PyInt_FromLong(isint); + """), + ], prologue= """ typedef struct { PyObject_HEAD @@ -770,6 +781,13 @@ return v->value; } + static PyObject* + intlike_nb_int(PyObject* o) + { + IntLikeObject *v = (IntLikeObject*)o; + return PyInt_FromLong(v->value); + } + PyTypeObject IntLike_Type = { PyObject_HEAD_INIT(0) /*ob_size*/ 0, @@ -777,11 +795,19 @@ /*tp_basicsize*/ sizeof(IntLikeObject), }; static PyNumberMethods intlike_as_number; + """, more_init=""" + IntLike_Type.tp_flags |= Py_TPFLAGS_DEFAULT; + IntLike_Type.tp_as_number = &intlike_as_number; + intlike_as_number.nb_nonzero = intlike_nb_nonzero; + intlike_as_number.nb_int = intlike_nb_int; + if (PyType_Ready(&IntLike_Type) < 0) return NULL; """) assert not bool(module.newInt(0)) assert bool(module.newInt(1)) raises(SystemError, bool, module.newInt(-1)) raises(ValueError, bool, module.newInt(-42)) + val = module.check(10); + assert val == 1 def test_mathfunc(self): module = self.import_extension('foo', [ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit