Author: Armin Rigo <ar...@tunes.org> Branch: cpy-extension Changeset: r318:9c76371c844c Date: 2012-06-14 10:04 +0200 http://bitbucket.org/cffi/cffi/changeset/9c76371c844c/
Log: Better tests. Fixes. diff --git a/cffi/verifier.py b/cffi/verifier.py --- a/cffi/verifier.py +++ b/cffi/verifier.py @@ -330,12 +330,13 @@ prnt(' i = (%s);' % (name,)) prnt(' o = %s;' % (self.convert_expr_from_c(tp, 'i'),)) else: - prnt(' if ((%s) == (long)(%s))' % (name, name)) + prnt(' if (LONG_MIN <= (%s) && (%s) <= LONG_MAX)' % (name, name)) prnt(' o = PyInt_FromLong((long)(%s));' % (name,)) - prnt(' else if ((%s) == (long long)(%s))' % (name, name)) + prnt(' else if ((%s) < 0)' % (name,)) prnt(' o = PyLong_FromLongLong((long long)(%s));' % (name,)) prnt(' else') - prnt(' o = PyLong_FromUnsignedLongLong(%s);' % (name,)) + prnt(' o = PyLong_FromUnsignedLongLong((unsigned long long)%s);' + % (name,)) prnt(' if (o == NULL)') prnt(' return -1;') prnt(' res = PyDict_SetItemString(dct, "%s", o);' % name) diff --git a/testing/test_verify.py b/testing/test_verify.py --- a/testing/test_verify.py +++ b/testing/test_verify.py @@ -252,15 +252,19 @@ def test_global_const_int_size(): # integer constants: ignore the declared type, always just use the value - for value in [-2**80, -2**40, -2**20, -2**10, -2**5, -1, - 2**5, 2**10, 2**20, 2**40, 2**80]: + for value in [-2**63, -2**31, -2**15, + 2**15-1, 2**15, 2**31-1, 2**31, 2**32-1, 2**32, + 2**63-1, 2**63, 2**64-1]: ffi = FFI() if value == int(ffi.cast("long long", value)): - vstr = '%dLL' % value + if value < 0: + vstr = '(-%dLL-1)' % (~value,) + else: + vstr = '%dLL' % value elif value == int(ffi.cast("unsigned long long", value)): vstr = '%dULL' % value else: - continue + raise AssertionError(value) ffi.cdef("static const unsigned short AA;") lib = ffi.verify("#define AA %s\n" % vstr) assert lib.AA == value _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit