cron.lua/spec/cron_spec.lua

135 lines
3.7 KiB
Lua
Raw Normal View History

2011-04-24 13:24:18 +00:00
local cron = require 'cron'
context( 'cron', function()
local counter = 0
local function count(amount)
amount = amount or 1
counter = counter + amount
end
2011-05-01 21:46:48 +00:00
local countable = setmetatable({}, {__call = count})
before(function()
counter = 0
cron.reset()
end)
context('update', function()
2012-10-22 09:27:49 +00:00
test( 'Should throw an error if dt is a negative number', function()
assert_error(function() cron.update() end)
assert_error(function() cron.update(-1) end)
assert_not_error(function() cron.update(1) end)
end)
end)
context('reset', function()
2011-04-24 15:06:35 +00:00
test('Should cancel all timed actions', function()
cron.after(1, count)
cron.after(2, count)
cron.update(1)
assert_equal(counter, 1)
cron.reset()
cron.update(1)
assert_equal(counter, 1)
end)
2011-04-24 15:06:35 +00:00
test('Should cancel all periodical actions', function()
cron.every(1, count)
cron.update(1)
assert_equal(counter, 1)
cron.reset()
cron.update(1)
assert_equal(counter, 1)
end)
end)
context( 'after', function()
2011-05-01 21:46:48 +00:00
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(2, 'error') end)
assert_error(function() cron.after(-2, count) end)
2011-05-01 21:46:48 +00:00
assert_error(function() cron.after(2, {}) end)
assert_not_error(function() cron.after(2, count) end)
2011-05-01 21:46:48 +00:00
assert_not_error(function() cron.after(2, countable) end)
end)
test( 'Should execute timed actions are executed only once, at the right time', function()
cron.after(2, count)
cron.after(4, count)
cron.update(1)
assert_equal(counter, 0)
cron.update(1)
assert_equal(counter, 1)
cron.update(1)
assert_equal(counter, 1)
cron.update(1)
assert_equal(counter, 2)
end)
test( 'Should pass on parameters to the function, if specified', function()
cron.after(1, count, 2)
cron.update(1)
assert_equal(counter, 2)
end)
end)
2011-04-24 14:29:51 +00:00
context( 'every', function()
test( 'Should throw error if time is not a positive number, or callback is not function', function()
assert_error(function() cron.every('error', count) end)
assert_error(function() cron.every(2, 'error') end)
assert_error(function() cron.every(-2, count) end)
2011-05-01 21:46:48 +00:00
assert_error(function() cron.every(-2, {}) end)
2011-04-24 14:29:51 +00:00
assert_not_error(function() cron.every(2, count) end)
2011-05-01 21:46:48 +00:00
assert_not_error(function() cron.every(2, countable) end)
2011-04-24 14:29:51 +00:00
end)
2011-04-24 14:37:02 +00:00
test( 'Should execute periodical actions periodically', function()
cron.every(3, count)
2011-04-24 14:37:02 +00:00
cron.update(1)
assert_equal(counter, 0)
cron.update(2)
2011-04-24 14:37:02 +00:00
assert_equal(counter, 1)
cron.update(2)
assert_equal(counter, 1)
2011-04-24 14:37:02 +00:00
cron.update(1)
assert_equal(counter, 2)
end)
test( 'Should execute the same action multiple times on a single update if appropiate', function()
cron.every(1, count)
cron.update(2)
assert_equal(counter, 2)
end)
2011-04-24 15:06:35 +00:00
test( 'Should respect parameters', function()
cron.every(1, count, 2)
cron.update(2)
assert_equal(counter, 4)
end)
end)
context( 'cancel', function()
test( 'Should allow the cancelation of timed actions', function()
local id = cron.after(1, count)
cron.update(1)
assert_equal(counter, 1)
cron.cancel(id)
cron.update(1)
assert_equal(counter, 1)
end)
test( 'Should allow the cancelation of periodical actions', function()
local id = cron.every(1, count)
cron.update(1)
assert_equal(counter, 1)
cron.cancel(id)
cron.update(1)
assert_equal(counter, 1)
end)
2011-04-24 14:29:51 +00:00
end)
2011-04-24 13:24:18 +00:00
end)