diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-08-15 14:25:37 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-08-15 14:25:37 +0100 |
commit | 327be8edbaed1194d5fa3caefedab7d45f740dfe (patch) | |
tree | 9644a198d95cbb3e7be3339364a3843401e183da /test | |
parent | a0642b4897ef4b9d7c9b9f98faaedeee4b41177e (diff) | |
download | rspamd-327be8edbaed1194d5fa3caefedab7d45f740dfe.tar.gz rspamd-327be8edbaed1194d5fa3caefedab7d45f740dfe.zip |
[Test] Add unit tests
Diffstat (limited to 'test')
-rw-r--r-- | test/lua/unit/rspamd_util.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/lua/unit/rspamd_util.lua b/test/lua/unit/rspamd_util.lua index 859316be7..56f13d6da 100644 --- a/test/lua/unit/rspamd_util.lua +++ b/test/lua/unit/rspamd_util.lua @@ -1,6 +1,7 @@ context("Rspamd util for lua - check generic functions", function() local util = require 'rspamd_util' + local cases = { { input = "test1", @@ -87,3 +88,49 @@ context("Rspamd util for lua - check generic functions", function() assert_error(util.is_utf_mixed_script,'\200\213\202') end) end) + +context("Rspamd string utility", function() + local ffi = require 'ffi' + + ffi.cdef[[ +char ** rspamd_string_len_split (const char *in, size_t len, + const char *spill, int max_elts, void *pool); + void g_strfreev (char **str_array); +]] + local NULL = ffi.new 'void*' + local cases = { + {'', ';,', {}}, + {'', '', {}}, + {'a', ';,', {'a'}}, + {'a', '', {'a'}}, + {'a;b', ';', {'a', 'b'}}, + {'a;;b', ';', {'a', 'b'}}, + {';a;;b;', ';', {'a', 'b'}}, + {'ab', ';', {'ab'}}, + {'a,;b', ',', {'a', ';b'}}, + {'a,;b', ';,', {'a', 'b'}}, + {',a,;b', ';,', {'a', 'b'}}, + {',,;', ';,', {}}, + {',,;a', ';,', {'a'}}, + {'a,,;', ';,', {'a'}}, + } + + for i,case in ipairs(cases) do + test("rspamd_string_len_split: case " .. tostring(i), function() + local ret = ffi.C.rspamd_string_len_split(case[1], #case[1], + case[2], -1, NULL) + local actual = {} + + while ret[#actual] ~= NULL do + actual[#actual + 1] = ffi.string(ret[#actual]) + end + + assert_rspamd_table_eq({ + expect = case[3], + actual = actual + }) + + ffi.C.g_strfreev(ret) + end) + end +end)
\ No newline at end of file |