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.

lua_util.misc.lua 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. local util = require 'lua_util'
  2. context("Lua util - callback_from_string", function()
  3. local cases = {
  4. {'return function', 'return function(a, b) return a + b end'},
  5. {'function', 'function(a, b) return a + b end'},
  6. {'plain ops', 'local c = select(1, ...)\nreturn c + select(2, ...)'},
  7. }
  8. local fail_cases = {
  9. nil,
  10. '',
  11. 'return function(a, b) ( end',
  12. 'function(a, b) ( end',
  13. 'return a + b'
  14. }
  15. for _,c in ipairs(cases) do
  16. test('Success case: ' .. c[1], function()
  17. local ret,f = util.callback_from_string(c[2])
  18. assert_true(ret, f)
  19. assert_equal(f(2, 2), 4)
  20. end)
  21. end
  22. for i,c in ipairs(fail_cases) do
  23. test('Failure case: ' .. tostring(i), function()
  24. local ret,f = util.callback_from_string(c)
  25. assert_false(ret)
  26. end)
  27. end
  28. end)
  29. context("Lua util - str_endswith", function()
  30. local ending = {
  31. {'a', 'a'},
  32. {'ab', 'b'},
  33. {'ab', 'ab'},
  34. {'abc', 'bc'},
  35. {'any', ''},
  36. }
  37. local not_ending = {
  38. {'a', 'b'},
  39. {'', 'a'},
  40. {'ab', 'a'},
  41. {'ab', 'ba'},
  42. {'ab', 'lab'},
  43. {'abc', 'ab'},
  44. {'abcd', 'bc'},
  45. {'a', 'A'},
  46. {'aB', 'b'},
  47. }
  48. for _, c in ipairs(ending) do
  49. test(string.format('True case: str_endswith("%s", "%s")', c[1], c[2]), function()
  50. assert_true(util.str_endswith(c[1], c[2]))
  51. end)
  52. end
  53. for _, c in ipairs(not_ending) do
  54. test(string.format('False case: str_endswith("%s", "%s")', c[1], c[2]), function()
  55. assert_false(util.str_endswith(c[1], c[2]))
  56. end)
  57. end
  58. end)