]> source.dussan.org Git - rspamd.git/commitdiff
Add lua unit test for expressions.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 17 Mar 2015 17:25:24 +0000 (17:25 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 17 Mar 2015 17:25:24 +0000 (17:25 +0000)
test/lua/unit/expressions.lua [new file with mode: 0644]

diff --git a/test/lua/unit/expressions.lua b/test/lua/unit/expressions.lua
new file mode 100644 (file)
index 0000000..dc9cfd0
--- /dev/null
@@ -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