2 local now = 0; -- wibbly-wobbly... timey-wimey... stuff
3 local function predictable_gettime()
6 local function later(n)
7 now = now + n; -- time passes at a different rate
10 local function override_gettime(throttle)
14 local name = debug.getupvalue(throttle.update, i);
16 debug.setupvalue(throttle.update, i, predictable_gettime);
22 function create(create)
23 local a = override_gettime( create(3, 10) );
25 assert_equal(a:poll(1), true); -- 3 -> 2
26 assert_equal(a:poll(1), true); -- 2 -> 1
27 assert_equal(a:poll(1), true); -- 1 -> 0
28 assert_equal(a:poll(1), false); -- MEEP, out of credits!
29 later(1); -- ... what about
30 assert_equal(a:poll(1), false); -- now? - Still no!
31 later(9); -- Later that day
32 assert_equal(a:poll(1), true); -- Should be back at 3 credits ... 2