Annotate

tests/test_util_throttle.lua @ 7696:1c410b4f3a58

util.pubsub: Factor item storage cache into a per service configurable option
author Kim Alvefur <zash@zash.se>
date Sun, 16 Oct 2016 00:36:05 +0200
parent 7024:8ce592e376ff
child 8262:e6f3e440c843
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7024
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local now = 0; -- wibbly-wobbly... timey-wimey... stuff
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local function predictable_gettime()
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 return now;
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 end
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local function later(n)
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 now = now + n; -- time passes at a different rate
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 end
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local function override_gettime(throttle)
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local i = 0;
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 repeat
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 i = i + 1;
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 local name = debug.getupvalue(throttle.update, i);
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 if name then
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 debug.setupvalue(throttle.update, i, predictable_gettime);
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 return throttle;
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 end
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 until not name;
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 function create(create)
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 local a = override_gettime( create(3, 10) );
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 assert_equal(a:poll(1), true); -- 3 -> 2
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 assert_equal(a:poll(1), true); -- 2 -> 1
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 assert_equal(a:poll(1), true); -- 1 -> 0
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 assert_equal(a:poll(1), false); -- MEEP, out of credits!
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 later(1); -- ... what about
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 assert_equal(a:poll(1), false); -- now? - Still no!
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 later(9); -- Later that day
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 assert_equal(a:poll(1), true); -- Should be back at 3 credits ... 2
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 end
8ce592e376ff tests: Add small test for util.throttle
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34