aboutsummaryrefslogtreecommitdiffstats
path: root/test/lua/unit/lua_util.misc.lua
blob: b19b4d6f18636be337004b5d5665860003dbe5c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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)