Annotate

tests/test_util_throttle.lua @ 7567:495de404a8ae

ejabberdsql2prosody: rename variable 'host' to prevent shadowing upvalue [luacheck] Functions roster(), roster_pending(), roster_group(), private_storage() and offline_msg() have argument named "host", which used to shadow upvalue of this variable before this change. Instead of renaming this argument, let's rename the variable to match what the script says in usage: Usage: ejabberdsql2prosody.lua filename.txt hostname
author Anton Shestakov <av6@dwimlabs.net>
date Fri, 12 Aug 2016 13:44:47 +0800
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