[Tarantool-patches] [PATCH v2 luajit 18/26] test: enable <ffi_parse_array.lua> in LuaJIT-tests
Sergey Kaplun
skaplun at tarantool.org
Mon Jan 29 13:45:18 MSK 2024
This patch changes `dofile()` (which uses an unreliable relative file
path and mutates `_G` with global functions to be defined) to the
corresponding `require()` of the helper functions. It adds groups with
the names of subtests and enables the test in <index>.
Part of tarantool/tarantool#9398
---
test/LuaJIT-tests/lib/ffi/ffi_parse_array.lua | 106 ++++++++++--------
test/LuaJIT-tests/lib/ffi/index | 1 +
2 files changed, 58 insertions(+), 49 deletions(-)
diff --git a/test/LuaJIT-tests/lib/ffi/ffi_parse_array.lua b/test/LuaJIT-tests/lib/ffi/ffi_parse_array.lua
index 3a9616d7..d3b02759 100644
--- a/test/LuaJIT-tests/lib/ffi/ffi_parse_array.lua
+++ b/test/LuaJIT-tests/lib/ffi/ffi_parse_array.lua
@@ -1,58 +1,66 @@
local ffi = require("ffi")
-dofile("../common/ffi_util.inc")
+local checkfail = require("common.ffi.checkfail")
+local checktypes = require("common.ffi.checktypes")
+local fails = require("common.fails")
-checkfail{
- "int [",
- "int [-1]",
- "int [[1]]",
- "int [10][]",
- "int [10][?]",
- "int [][]",
- "int [][?]",
- "int [?][]",
- "int [?][?]",
- "int [0x10000][0x2000]",
- "int [256][256][256][256]",
- "int [10](void)",
- "int (void)[10]",
- "int &[10]",
- "union { double x; int a[?]; }",
-}
+do --- checkfail
+ checkfail{
+ "int [",
+ "int [-1]",
+ "int [[1]]",
+ "int [10][]",
+ "int [10][?]",
+ "int [][]",
+ "int [][?]",
+ "int [?][]",
+ "int [?][?]",
+ "int [0x10000][0x2000]",
+ "int [256][256][256][256]",
+ "int [10](void)",
+ "int (void)[10]",
+ "int &[10]",
+ "union { double x; int a[?]; }",
+ }
+end
-ffi.cdef([[
- typedef int foo1_t[10];
- typedef foo1_t foo2_t[5];
-]])
-assert(ffi.sizeof("foo1_t") == 40)
-assert(ffi.sizeof("foo2_t") == 200)
+do --- sizeof of arrays
+ ffi.cdef([[
+ typedef int foo1_array_t[10];
+ typedef foo1_array_t foo2_array_t[5];
+ ]])
+ assert(ffi.sizeof("foo1_array_t") == 40)
+ assert(ffi.sizeof("foo2_array_t") == 200)
+end
-local P = ffi.sizeof("void *")
-checktypes{
- 10, 1, "char [10]",
- 4*10, 4, "int [10]",
- 4*10, 4, "int [10]",
- 4*10*5, 4, "int [10][5]",
- 4*10*5*3*2*7, 4, "int [10][5][3][2][7]",
- 4*10*5, 4, "int ([10])[5]",
- P*10, P, "int *[10]",
- P, P, "int (*)[10]",
- P*5, P, "int (*[5])[10]",
- 8*10, 4, "struct { int x; char y; } [10]",
- P*5*10, P, "volatile int *(* const *[5][10])(void)",
- nil, 4, "int []",
- 4*10, 8, "int __attribute__((aligned(8))) [10]",
- 4*10, 8, "__attribute__((aligned(8))) int [10]",
- 4*10, 8, "int [10] __attribute__((aligned(8)))",
- 97, 1, "char ['a']",
- 83, 1, "char ['\\123']",
- 79, 1, "char ['\x4F']",
- 5, 1, "char [sizeof(\"aa\" \"bb\")]",
- 80, 8, "double [10]",
-}
+do --- checktypes
+ local P = ffi.sizeof("void *")
+ checktypes{
+ 10, 1, "char [10]",
+ 4*10, 4, "int [10]",
+ 4*10, 4, "int [10]",
+ 4*10*5, 4, "int [10][5]",
+ 4*10*5*3*2*7, 4, "int [10][5][3][2][7]",
+ 4*10*5, 4, "int ([10])[5]",
+ P*10, P, "int *[10]",
+ P, P, "int (*)[10]",
+ P*5, P, "int (*[5])[10]",
+ 8*10, 4, "struct { int x; char y; } [10]",
+ P*5*10, P, "volatile int *(* const *[5][10])(void)",
+ nil, 4, "int []",
+ 4*10, 8, "int __attribute__((aligned(8))) [10]",
+ 4*10, 8, "__attribute__((aligned(8))) int [10]",
+ 4*10, 8, "int [10] __attribute__((aligned(8)))",
+ 97, 1, "char ['a']",
+ 83, 1, "char ['\\123']",
+ 79, 1, "char ['\x4F']",
+ 5, 1, "char [sizeof(\"aa\" \"bb\")]",
+ 80, 8, "double [10]",
+ }
+end
-do
+do --- sizeof VLA
assert(ffi.sizeof("int [?]", 10) == 4*10)
local id = ffi.typeof("const short [?]")
assert(ffi.sizeof(id, 10) == 2*10)
@@ -64,7 +72,7 @@ do
assert(ffi.sizeof(id, 0x3fffffff) == 2*0x3fffffff)
end
-do
+do --- sizeof VLS
assert(ffi.sizeof("struct { double x; int a[?]; }", 10) == 8+4*10)
local id = ffi.typeof("struct { int x; short a[?]; }")
assert(ffi.sizeof(id, 10) == 4+2*10)
diff --git a/test/LuaJIT-tests/lib/ffi/index b/test/LuaJIT-tests/lib/ffi/index
index e6c1fd0f..89773c0c 100644
--- a/test/LuaJIT-tests/lib/ffi/index
+++ b/test/LuaJIT-tests/lib/ffi/index
@@ -16,6 +16,7 @@ ffi_jit_conv.lua
ffi_lex_number.lua
ffi_metatype.lua
ffi_new.lua
+ffi_parse_array.lua
istype.lua
jit_array.lua
jit_complex.lua
--
2.43.0
More information about the Tarantool-patches
mailing list