mirror of
https://github.com/kikito/cron.lua.git
synced 2024-12-19 18:34:20 +00:00
added support for calltables. fixes #1
This commit is contained in:
parent
f93cbfb6d8
commit
a0e6c86a7b
12
cron.lua
12
cron.lua
@ -6,9 +6,19 @@
|
|||||||
-----------------------------------------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
local function isCallable(callback)
|
||||||
|
local tc = type(callback)
|
||||||
|
if tc == 'function' then return true end
|
||||||
|
if tc == 'table' then
|
||||||
|
local mt = getmetatable(callback)
|
||||||
|
return type(mt) == 'table' and type(mt.__call) == 'function'
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
local function checkTimeAndCallback(time, callback)
|
local function checkTimeAndCallback(time, callback)
|
||||||
assert(type(time) == "number" and time > 0, "time must be a positive number")
|
assert(type(time) == "number" and time > 0, "time must be a positive number")
|
||||||
assert(type(callback) == "function", "callback must be a function")
|
assert(isCallable(callback), "callback must be a function")
|
||||||
end
|
end
|
||||||
|
|
||||||
local entries = {}
|
local entries = {}
|
||||||
|
@ -7,6 +7,7 @@ context( 'cron', function()
|
|||||||
amount = amount or 1
|
amount = amount or 1
|
||||||
counter = counter + amount
|
counter = counter + amount
|
||||||
end
|
end
|
||||||
|
local countable = setmetatable({}, {__call = count})
|
||||||
|
|
||||||
before(function()
|
before(function()
|
||||||
counter = 0
|
counter = 0
|
||||||
@ -44,11 +45,13 @@ context( 'cron', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
context( 'after', function()
|
context( 'after', function()
|
||||||
test( 'Should throw error if time is not a positive number, or callback is not function', function()
|
test( 'Should throw error if time is not a positive number, or callback is not callable', function()
|
||||||
assert_error(function() cron.after('error', count) end)
|
assert_error(function() cron.after('error', count) end)
|
||||||
assert_error(function() cron.after(2, 'error') end)
|
assert_error(function() cron.after(2, 'error') end)
|
||||||
assert_error(function() cron.after(-2, count) end)
|
assert_error(function() cron.after(-2, count) end)
|
||||||
|
assert_error(function() cron.after(2, {}) end)
|
||||||
assert_not_error(function() cron.after(2, count) end)
|
assert_not_error(function() cron.after(2, count) end)
|
||||||
|
assert_not_error(function() cron.after(2, countable) end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
test( 'Should execute timed actions are executed only once, at the right time', function()
|
test( 'Should execute timed actions are executed only once, at the right time', function()
|
||||||
@ -76,7 +79,9 @@ context( 'cron', function()
|
|||||||
assert_error(function() cron.every('error', count) end)
|
assert_error(function() cron.every('error', count) end)
|
||||||
assert_error(function() cron.every(2, 'error') end)
|
assert_error(function() cron.every(2, 'error') end)
|
||||||
assert_error(function() cron.every(-2, count) end)
|
assert_error(function() cron.every(-2, count) end)
|
||||||
|
assert_error(function() cron.every(-2, {}) end)
|
||||||
assert_not_error(function() cron.every(2, count) end)
|
assert_not_error(function() cron.every(2, count) end)
|
||||||
|
assert_not_error(function() cron.every(2, countable) end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
test( 'Should execute periodical actions periodically', function()
|
test( 'Should execute periodical actions periodically', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user