mirror of https://github.com/rspamd/rspamd.git
Rapid spam filtering system
https://rspamd.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
local util = require 'lua_util'
|
|
|
|
context("Lua util - callback_from_string", function()
|
|
local cases = {
|
|
{'return function', 'return function(a, b) return a + b end'},
|
|
{'function', 'function(a, b) return a + b end'},
|
|
{'plain ops', 'local c = select(1, ...)\nreturn c + select(2, ...)'},
|
|
}
|
|
local fail_cases = {
|
|
nil,
|
|
'',
|
|
'return function(a, b) ( end',
|
|
'function(a, b) ( end',
|
|
'return a + b'
|
|
}
|
|
|
|
for _,c in ipairs(cases) do
|
|
test('Success case: ' .. c[1], function()
|
|
local ret,f = util.callback_from_string(c[2])
|
|
assert_true(ret, f)
|
|
assert_equal(f(2, 2), 4)
|
|
end)
|
|
end
|
|
for i,c in ipairs(fail_cases) do
|
|
test('Failure case: ' .. tostring(i), function()
|
|
local ret,f = util.callback_from_string(c)
|
|
assert_false(ret)
|
|
end)
|
|
end
|
|
end)
|
|
|
|
context("Lua util - str_endswith", function()
|
|
local ending = {
|
|
{'a', 'a'},
|
|
{'ab', 'b'},
|
|
{'ab', 'ab'},
|
|
{'abc', 'bc'},
|
|
{'any', ''},
|
|
}
|
|
local not_ending = {
|
|
{'a', 'b'},
|
|
{'', 'a'},
|
|
{'ab', 'a'},
|
|
{'ab', 'ba'},
|
|
{'ab', 'lab'},
|
|
{'abc', 'ab'},
|
|
{'abcd', 'bc'},
|
|
{'a', 'A'},
|
|
{'aB', 'b'},
|
|
}
|
|
for _, c in ipairs(ending) do
|
|
test(string.format('True case: str_endswith("%s", "%s")', c[1], c[2]), function()
|
|
assert_true(util.str_endswith(c[1], c[2]))
|
|
end)
|
|
end
|
|
for _, c in ipairs(not_ending) do
|
|
test(string.format('False case: str_endswith("%s", "%s")', c[1], c[2]), function()
|
|
assert_false(util.str_endswith(c[1], c[2]))
|
|
end)
|
|
end
|
|
end)
|