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))
Beispiel #2
0
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)