def test_intobject(self, space): assert PyInt_Check(space, space.wrap(3)) assert PyInt_Check(space, space.w_True) assert not PyInt_Check(space, space.wrap((1, 2, 3))) for i in [3, -5, -1, -sys.maxint, sys.maxint - 1]: x = PyInt_AsLong(space, space.wrap(i)) y = PyInt_AS_LONG(space, space.wrap(i)) assert x == i assert y == i w_x = PyInt_FromLong(space, x + 1) assert space.type(w_x) is space.w_int assert space.eq_w(w_x, space.wrap(i + 1)) with raises_w(space, TypeError): PyInt_AsLong(space, space.w_None) with raises_w(space, TypeError): PyInt_AsLong(space, None) assert PyInt_AsUnsignedLong(space, space.wrap(sys.maxint)) == sys.maxint with raises_w(space, ValueError): PyInt_AsUnsignedLong(space, space.wrap(-5)) assert (PyInt_AsUnsignedLongMask(space, space.wrap(sys.maxint)) == sys.maxint) assert (PyInt_AsUnsignedLongMask(space, space.wrap(10**30)) == 10**30 % ((sys.maxint + 1) * 2)) assert (PyInt_AsUnsignedLongLongMask(space, space.wrap( sys.maxint)) == sys.maxint) assert (PyInt_AsUnsignedLongLongMask(space, space.wrap( 10**30)) == 10**30 % (2**64))
def PyLong_AsUnsignedLongMask(space, w_long): """Return a C unsigned long from a Python long integer, without checking for overflow. """ return PyInt_AsUnsignedLongMask(space, w_long)