Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r208:7489cad8641a Date: 2014-12-19 16:34 +0100 http://bitbucket.org/cffi/creflect/changeset/7489cad8641a/
Log: next tests diff --git a/zeffir/test/test_c.py b/zeffir/test/test_c.py --- a/zeffir/test/test_c.py +++ b/zeffir/test/test_c.py @@ -264,3 +264,34 @@ assert p[0] == 1.25 and type(p[0]) is float p = ffi.new("float *", 1.1) assert p[0] != 1.1 and abs(p[0] - 1.1) < 1E-5 # rounding errors + +def test_cast_float_to_int(): + ffi = support.new_ffi() + for type in ["int", "unsigned int", "long", "unsigned long", + "long long", "unsigned long long"]: + p = ffi.typeof(type) + assert ffi.cast(p, 4.2) == 4 + py.test.raises(TypeError, ffi.new, type, 4.2) + py.test.raises(TypeError, ffi.new, type + "*", 4.2) + +def test_newp_integer_types(): + ffi = support.new_ffi() + for name in ['signed char', 'short', 'int', 'long', 'long long']: + p = ffi.typeof(name) + pp = ffi.typeof(name + "*") + size = ffi.sizeof(p) + min = -(1 << (8*size-1)) + max = (1 << (8*size-1)) - 1 + assert ffi.new(pp, min)[0] == min + assert ffi.new(pp, max)[0] == max + py.test.raises(OverflowError, ffi.new, pp, min - 1) + py.test.raises(OverflowError, ffi.new, pp, max + 1) + for name in ['char', 'short', 'int', 'long', 'long long']: + p = ffi.typeof('unsigned ' + name) + pp = ffi.typeof('unsigned ' + name + "*") + size = ffi.sizeof(p) + max = (1 << (8*size)) - 1 + assert ffi.new(pp, 0)[0] == 0 + assert ffi.new(pp, max)[0] == max + py.test.raises(OverflowError, ffi.new, pp, -1) + py.test.raises(OverflowError, ffi.new, pp, max + 1) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit