diff options
author | Armin Rigo <arigo@tunes.org> | 2016-09-20 15:07:37 +0200 |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2016-09-20 15:07:37 +0200 |
commit | d067b48aa4660487e050e396ff957d916d5183c4 (patch) | |
tree | de2d0d20c05b7f953228215a3ab70565c5ff0967 /testing | |
parent | a06fe3e6a57efd4ec549234ad348152a40543439 (diff) | |
download | cffi-d067b48aa4660487e050e396ff957d916d5183c4.tar.gz |
typedef int foo_t[...];
Diffstat (limited to 'testing')
-rw-r--r-- | testing/cffi0/test_ffi_backend.py | 4 | ||||
-rw-r--r-- | testing/cffi1/test_ffi_obj.py | 4 | ||||
-rw-r--r-- | testing/cffi1/test_recompiler.py | 26 |
3 files changed, 34 insertions, 0 deletions
diff --git a/testing/cffi0/test_ffi_backend.py b/testing/cffi0/test_ffi_backend.py index 0d25a0d..c4435fa 100644 --- a/testing/cffi0/test_ffi_backend.py +++ b/testing/cffi0/test_ffi_backend.py @@ -479,3 +479,7 @@ class TestBitfield: assert ffi.unpack(p+1, 7) == b"bc\x00def\x00" p = ffi.new("int[]", [-123456789]) assert ffi.unpack(p, 1) == [-123456789] + + def test_negative_array_size(self): + ffi = FFI() + py.test.raises(ValueError, ffi.cast, "int[-5]", 0) diff --git a/testing/cffi1/test_ffi_obj.py b/testing/cffi1/test_ffi_obj.py index 30b93f1..daf39bb 100644 --- a/testing/cffi1/test_ffi_obj.py +++ b/testing/cffi1/test_ffi_obj.py @@ -502,3 +502,7 @@ def test_unpack(): assert ffi.unpack(p+1, 7) == b"bc\x00def\x00" p = ffi.new("int[]", [-123456789]) assert ffi.unpack(p, 1) == [-123456789] + +def test_negative_array_size(): + ffi = _cffi1_backend.FFI() + py.test.raises(ffi.error, ffi.cast, "int[-5]", 0) diff --git a/testing/cffi1/test_recompiler.py b/testing/cffi1/test_recompiler.py index fd7967b..f2de18f 100644 --- a/testing/cffi1/test_recompiler.py +++ b/testing/cffi1/test_recompiler.py @@ -1980,3 +1980,29 @@ def test_function_returns_partial_struct(): static struct aaa f1(int x) { struct aaa s = {0}; s.a = x; return s; } """) assert lib.f1(52).a == 52 + +def test_typedef_array_dotdotdot(): + ffi = FFI() + ffi.cdef(""" + typedef int foo_t[...], bar_t[...]; + int gv[...]; + typedef int mat_t[...][...]; + typedef int vmat_t[][...]; + """) + lib = verify(ffi, "test_typedef_array_dotdotdot", """ + typedef int foo_t[50], bar_t[50]; + int gv[23]; + typedef int mat_t[6][7]; + typedef int vmat_t[][8]; + """) + assert ffi.sizeof("foo_t") == 50 * ffi.sizeof("int") + assert ffi.sizeof("bar_t") == 50 * ffi.sizeof("int") + assert len(ffi.new("foo_t")) == 50 + assert len(ffi.new("bar_t")) == 50 + assert ffi.sizeof(lib.gv) == 23 * ffi.sizeof("int") + assert ffi.sizeof("mat_t") == 6 * 7 * ffi.sizeof("int") + assert len(ffi.new("mat_t")) == 6 + assert len(ffi.new("mat_t")[3]) == 7 + py.test.raises(ffi.error, ffi.sizeof, "vmat_t") + p = ffi.new("vmat_t", 4) + assert ffi.sizeof(p[3]) == 8 * ffi.sizeof("int") |