parent
864c240cdd
commit
c9cabe622d
@ -1 +1 @@
|
|||||||
Subproject commit 34ee5de696c2c12d8ded5793f2c5504f2e6ee168
|
Subproject commit c704056663b80f520109061161b868f9d1f17c54
|
||||||
@ -18,7 +18,7 @@ local function run_test_with_different_metatables(name, ...)
|
|||||||
test.metatable[name](effil.table(), ...)
|
test.metatable[name](effil.table(), ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
test.metatable.index = function (metatable)
|
test.metatable.index_p = function (metatable)
|
||||||
local share = effil.table()
|
local share = effil.table()
|
||||||
metatable.__index = function(t, key)
|
metatable.__index = function(t, key)
|
||||||
return "mt_" .. effil.rawget(t, key)
|
return "mt_" .. effil.rawget(t, key)
|
||||||
@ -29,7 +29,7 @@ test.metatable.index = function (metatable)
|
|||||||
test.equal(share.table_key, "mt_table_value")
|
test.equal(share.table_key, "mt_table_value")
|
||||||
end
|
end
|
||||||
|
|
||||||
test.metatable.new_index = function (metatable)
|
test.metatable.new_index_p = function (metatable)
|
||||||
local share = effil.table()
|
local share = effil.table()
|
||||||
metatable.__newindex = function(t, key, value)
|
metatable.__newindex = function(t, key, value)
|
||||||
effil.rawset(t, "mt_" .. key, "mt_" .. value)
|
effil.rawset(t, "mt_" .. key, "mt_" .. value)
|
||||||
@ -40,7 +40,7 @@ test.metatable.new_index = function (metatable)
|
|||||||
test.equal(share.mt_table_key, "mt_table_value")
|
test.equal(share.mt_table_key, "mt_table_value")
|
||||||
end
|
end
|
||||||
|
|
||||||
test.metatable.call = function (metatable)
|
test.metatable.call_p = function (metatable)
|
||||||
local share = effil.table()
|
local share = effil.table()
|
||||||
metatable.__call = function(t, val1, val2, val3)
|
metatable.__call = function(t, val1, val2, val3)
|
||||||
return tostring(val1) .. "_" .. tostring(val2), tostring(val2) .. "_" .. tostring(val3)
|
return tostring(val1) .. "_" .. tostring(val2), tostring(val2) .. "_" .. tostring(val3)
|
||||||
@ -52,11 +52,11 @@ test.metatable.call = function (metatable)
|
|||||||
test.equal(second_ret, "val2_val3")
|
test.equal(second_ret, "val2_val3")
|
||||||
end
|
end
|
||||||
|
|
||||||
run_test_with_different_metatables("index")
|
run_test_with_different_metatables("index_p")
|
||||||
run_test_with_different_metatables("new_index")
|
run_test_with_different_metatables("new_index_p")
|
||||||
run_test_with_different_metatables("call")
|
run_test_with_different_metatables("call_p")
|
||||||
|
|
||||||
test.metatable.binary_op = function (metatable, metamethod, op, exp_value)
|
test.metatable.binary_op_p = function (metatable, metamethod, op, exp_value)
|
||||||
local testTable, operand = effil.table(), effil.table()
|
local testTable, operand = effil.table(), effil.table()
|
||||||
metatable['__' .. metamethod] = function(left, right)
|
metatable['__' .. metamethod] = function(left, right)
|
||||||
left.was_called = true
|
left.was_called = true
|
||||||
@ -73,7 +73,7 @@ test.metatable.binary_op = function (metatable, metamethod, op, exp_value)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function test_binary_op(...)
|
local function test_binary_op(...)
|
||||||
run_test_with_different_metatables("binary_op", ...)
|
run_test_with_different_metatables("binary_op_p", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
test_binary_op("concat", function(a, b) return a .. b end)
|
test_binary_op("concat", function(a, b) return a .. b end)
|
||||||
@ -88,7 +88,7 @@ test_binary_op("lt", function(a, b) return a < b end, true)
|
|||||||
test_binary_op("eq", function(a, b) return a == b end, true)
|
test_binary_op("eq", function(a, b) return a == b end, true)
|
||||||
|
|
||||||
|
|
||||||
test.metatable.unary_op = function(metatable, metamethod, op)
|
test.metatable.unary_op_p = function(metatable, metamethod, op)
|
||||||
local share = effil.table()
|
local share = effil.table()
|
||||||
metatable['__' .. metamethod] = function(t)
|
metatable['__' .. metamethod] = function(t)
|
||||||
t.was_called = true
|
t.was_called = true
|
||||||
@ -103,7 +103,7 @@ test.metatable.unary_op = function(metatable, metamethod, op)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function test_unary_op(...)
|
local function test_unary_op(...)
|
||||||
run_test_with_different_metatables("unary_op", ...)
|
run_test_with_different_metatables("unary_op_p", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
test_unary_op("unm", function(a) return -a end)
|
test_unary_op("unm", function(a) return -a end)
|
||||||
@ -112,7 +112,7 @@ test_unary_op("len", function(a) return #a end)
|
|||||||
|
|
||||||
test.shared_table_with_metatable.tear_down = default_tear_down
|
test.shared_table_with_metatable.tear_down = default_tear_down
|
||||||
|
|
||||||
test.shared_table_with_metatable.iterators = function (iterator_type, iterator_trigger)
|
test.shared_table_with_metatable.iterators_p = function (iterator_type, iterator_trigger)
|
||||||
local share = effil.table()
|
local share = effil.table()
|
||||||
local iterator = iterator_type
|
local iterator = iterator_type
|
||||||
effil.setmetatable(share, {
|
effil.setmetatable(share, {
|
||||||
@ -147,12 +147,12 @@ test.shared_table_with_metatable.iterators = function (iterator_type, iterator_t
|
|||||||
test.equal(pow_iter, 2 ^ 11)
|
test.equal(pow_iter, 2 ^ 11)
|
||||||
end
|
end
|
||||||
|
|
||||||
test.shared_table_with_metatable.iterators("pairs", "effil")
|
test.shared_table_with_metatable.iterators_p("pairs", "effil")
|
||||||
test.shared_table_with_metatable.iterators("ipairs", "effil")
|
test.shared_table_with_metatable.iterators_p("ipairs", "effil")
|
||||||
|
|
||||||
if LUA_VERSION > 51 then
|
if LUA_VERSION > 51 then
|
||||||
test.shared_table_with_metatable.iterators("pairs", "_G")
|
test.shared_table_with_metatable.iterators_p("pairs", "_G")
|
||||||
test.shared_table_with_metatable.iterators("ipairs", "_G")
|
test.shared_table_with_metatable.iterators_p("ipairs", "_G")
|
||||||
end -- LUA_VERSION > 51
|
end -- LUA_VERSION > 51
|
||||||
|
|
||||||
test.shared_table_with_metatable.as_shared_table = function()
|
test.shared_table_with_metatable.as_shared_table = function()
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
require "bootstrap-tests"
|
require "bootstrap-tests"
|
||||||
|
|
||||||
local basic_type_mismatch_test = function(err_msg, wrong_arg_num, func_name , ...)
|
local basic_type_mismatch_test_p = function(err_msg, wrong_arg_num, func_name , ...)
|
||||||
local func_to_call = func_name
|
local func_to_call = func_name
|
||||||
if type(func_name) == "string" then
|
if type(func_name) == "string" then
|
||||||
func_to_call = effil
|
func_to_call = effil
|
||||||
@ -22,19 +22,19 @@ local basic_type_mismatch_test = function(err_msg, wrong_arg_num, func_name , ..
|
|||||||
test.equal(trunc_err, err_msg)
|
test.equal(trunc_err, err_msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
test.type_mismatch.input_types_mismatch = function(wrong_arg_num, expected_type, func_name, ...)
|
test.type_mismatch.input_types_mismatch_p = function(wrong_arg_num, expected_type, func_name, ...)
|
||||||
local args = {...}
|
local args = {...}
|
||||||
local err_msg = "bad argument #" .. wrong_arg_num .. " to " ..
|
local err_msg = "bad argument #" .. wrong_arg_num .. " to " ..
|
||||||
(type(func_name) == "string" and "'effil." .. func_name or func_name.name) ..
|
(type(func_name) == "string" and "'effil." .. func_name or func_name.name) ..
|
||||||
"' (" .. expected_type .. " expected, got " .. effil.type(args[wrong_arg_num]) .. ")"
|
"' (" .. expected_type .. " expected, got " .. effil.type(args[wrong_arg_num]) .. ")"
|
||||||
basic_type_mismatch_test(err_msg, wrong_arg_num, func_name, ...)
|
basic_type_mismatch_test_p(err_msg, wrong_arg_num, func_name, ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
test.type_mismatch.unsupported_type = function(wrong_arg_num, func_name, ...)
|
test.type_mismatch.unsupported_type_p = function(wrong_arg_num, func_name, ...)
|
||||||
local args = {...}
|
local args = {...}
|
||||||
local err_msg = (type(func_name) == "string" and "effil." .. func_name or func_name.name)
|
local err_msg = (type(func_name) == "string" and "effil." .. func_name or func_name.name)
|
||||||
.. ": unable to store object of " .. effil.type(args[wrong_arg_num]) .. " type"
|
.. ": unable to store object of " .. effil.type(args[wrong_arg_num]) .. " type"
|
||||||
basic_type_mismatch_test(err_msg, wrong_arg_num, func_name, ...)
|
basic_type_mismatch_test_p(err_msg, wrong_arg_num, func_name, ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function generate_tests()
|
local function generate_tests()
|
||||||
@ -82,68 +82,68 @@ local function generate_tests()
|
|||||||
|
|
||||||
-- effil.getmetatable
|
-- effil.getmetatable
|
||||||
if typename ~= "effil.table" then
|
if typename ~= "effil.table" then
|
||||||
test.type_mismatch.input_types_mismatch(1, "effil.table", "getmetatable", type_instance)
|
test.type_mismatch.input_types_mismatch_p(1, "effil.table", "getmetatable", type_instance)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- effil.setmetatable
|
-- effil.setmetatable
|
||||||
if typename ~= "table" and typename ~= "effil.table" then
|
if typename ~= "table" and typename ~= "effil.table" then
|
||||||
test.type_mismatch.input_types_mismatch(1, "table", "setmetatable", type_instance, 44)
|
test.type_mismatch.input_types_mismatch_p(1, "table", "setmetatable", type_instance, 44)
|
||||||
test.type_mismatch.input_types_mismatch(2, "table", "setmetatable", {}, type_instance)
|
test.type_mismatch.input_types_mismatch_p(2, "table", "setmetatable", {}, type_instance)
|
||||||
end
|
end
|
||||||
|
|
||||||
if typename ~= "effil.table" then
|
if typename ~= "effil.table" then
|
||||||
-- effil.rawset
|
-- effil.rawset
|
||||||
test.type_mismatch.input_types_mismatch(1, "effil.table", "rawset", type_instance, 44, 22)
|
test.type_mismatch.input_types_mismatch_p(1, "effil.table", "rawset", type_instance, 44, 22)
|
||||||
-- effil.rawget
|
-- effil.rawget
|
||||||
test.type_mismatch.input_types_mismatch(1, "effil.table", "rawget", type_instance, 44)
|
test.type_mismatch.input_types_mismatch_p(1, "effil.table", "rawget", type_instance, 44)
|
||||||
-- effil.ipairs
|
-- effil.ipairs
|
||||||
test.type_mismatch.input_types_mismatch(1, "effil.table", "ipairs", type_instance)
|
test.type_mismatch.input_types_mismatch_p(1, "effil.table", "ipairs", type_instance)
|
||||||
-- effil.pairs
|
-- effil.pairs
|
||||||
test.type_mismatch.input_types_mismatch(1, "effil.table", "pairs", type_instance)
|
test.type_mismatch.input_types_mismatch_p(1, "effil.table", "pairs", type_instance)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- effil.thread
|
-- effil.thread
|
||||||
if typename ~= "function" then
|
if typename ~= "function" then
|
||||||
test.type_mismatch.input_types_mismatch(1, "function", "thread", type_instance)
|
test.type_mismatch.input_types_mismatch_p(1, "function", "thread", type_instance)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- effil.sleep
|
-- effil.sleep
|
||||||
if typename ~= "number" then
|
if typename ~= "number" then
|
||||||
test.type_mismatch.input_types_mismatch(1, "number", "sleep", type_instance, "s")
|
test.type_mismatch.input_types_mismatch_p(1, "number", "sleep", type_instance, "s")
|
||||||
end
|
end
|
||||||
if typename ~= "string" then
|
if typename ~= "string" then
|
||||||
test.type_mismatch.input_types_mismatch(2, "string", "sleep", 1, type_instance)
|
test.type_mismatch.input_types_mismatch_p(2, "string", "sleep", 1, type_instance)
|
||||||
end
|
end
|
||||||
|
|
||||||
if typename ~= "number" then
|
if typename ~= "number" then
|
||||||
-- effil.channel
|
-- effil.channel
|
||||||
test.type_mismatch.input_types_mismatch(1, "number", "channel", type_instance)
|
test.type_mismatch.input_types_mismatch_p(1, "number", "channel", type_instance)
|
||||||
|
|
||||||
-- effil.gc.step
|
-- effil.gc.step
|
||||||
test.type_mismatch.input_types_mismatch(1, "number", "gc.step", type_instance)
|
test.type_mismatch.input_types_mismatch_p(1, "number", "gc.step", type_instance)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Below presented tests which support everything except coroutines
|
-- Below presented tests which support everything except coroutines
|
||||||
|
|
||||||
-- effil.rawset
|
-- effil.rawset
|
||||||
test.type_mismatch.unsupported_type(2, "rawset", stable, lua_thread, 22)
|
test.type_mismatch.unsupported_type_p(2, "rawset", stable, lua_thread, 22)
|
||||||
test.type_mismatch.unsupported_type(3, "rawset", stable, 44, lua_thread)
|
test.type_mismatch.unsupported_type_p(3, "rawset", stable, 44, lua_thread)
|
||||||
|
|
||||||
-- effil.rawget
|
-- effil.rawget
|
||||||
test.type_mismatch.unsupported_type(2, "rawget", stable, lua_thread)
|
test.type_mismatch.unsupported_type_p(2, "rawget", stable, lua_thread)
|
||||||
|
|
||||||
-- effil.channel:push()
|
-- effil.channel:push()
|
||||||
test.type_mismatch.unsupported_type(1, channel_push_generator, lua_thread)
|
test.type_mismatch.unsupported_type_p(1, channel_push_generator, lua_thread)
|
||||||
|
|
||||||
-- effil.thread()()
|
-- effil.thread()()
|
||||||
test.type_mismatch.unsupported_type(1, thread_runner_generator, lua_thread)
|
test.type_mismatch.unsupported_type_p(1, thread_runner_generator, lua_thread)
|
||||||
|
|
||||||
-- effil.table[key] = value
|
-- effil.table[key] = value
|
||||||
test.type_mismatch.unsupported_type(1, table_set_value_generator, lua_thread, 2)
|
test.type_mismatch.unsupported_type_p(1, table_set_value_generator, lua_thread, 2)
|
||||||
test.type_mismatch.unsupported_type(2, table_set_value_generator, 2, lua_thread)
|
test.type_mismatch.unsupported_type_p(2, table_set_value_generator, 2, lua_thread)
|
||||||
-- effil.table[key]
|
-- effil.table[key]
|
||||||
test.type_mismatch.unsupported_type(1, table_get_value_generator, lua_thread)
|
test.type_mismatch.unsupported_type_p(1, table_get_value_generator, lua_thread)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Put it to function to limit the lifetime of objects
|
-- Put it to function to limit the lifetime of objects
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user