From 48b97b59c59f6d5c32f905cdeb329c7019997be3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 17 Mar 2015 17:25:24 +0000 Subject: [PATCH] Add lua unit test for expressions. --- test/lua/unit/expressions.lua | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/lua/unit/expressions.lua diff --git a/test/lua/unit/expressions.lua b/test/lua/unit/expressions.lua new file mode 100644 index 000000000..dc9cfd0cb --- /dev/null +++ b/test/lua/unit/expressions.lua @@ -0,0 +1,39 @@ +-- Expressions unit tests + +context("Rspamd expressions", function() + local rspamd_expression = require "rspamd_expression" + local rspamd_mempool = require "rspamd_mempool" + local _ = require "fun" + + local function parse_func(str) + -- extract token till the first space character + local token = table.join('', take_while(function(s) return s ~= ' ' end, str)) + -- Return token name + return token + end + + test("Expression creation function", function() + local function process_func(token, task) + -- Do something using token and task + end + + local pool = rspamd_mempool.create() + + local cases = { + {'A & B | !C', 'A B & C ! |'} + } + for _,c in ipairs(cases) do + local expr,err = rspamd_expression.create(c[1], + {parse_func, process_func}, pool) + + if c[2] then + assert_not_null(expr, "Cannot parse " .. c[1] ": " .. err) + else + assert_equal(expr:to_string(), c[2], string.format("Evaluated expr to '%s', expected: '%s'", + expr:to_string(), c[2])) + end + end + -- Expression is destroyed when the corresponding pool is destroyed + pool:destroy() + end) +end) \ No newline at end of file -- 2.39.5