1require 'runit/testcase' 2require 'runit/cui/testrunner' 3require 'timerholder' 4 5class TimerHolderTest < RUNIT::TestCase 6 def do_test(timeout, keeper_sleep = nil) 7 holder = TimerHolder.new(timeout) 8 holder.keeper_sleep = keeper_sleep if keeper_sleep 9 key = holder.add(self) 10 sleep(timeout * 0.5) 11 assert_equal(holder.peek(key), self) 12 holder.delete(key) 13 assert(!holder.include?(key)) 14 key = holder.add(self) 15 sleep(timeout+0.5) 16 assert_equal(holder.fetch(key), nil) 17 key = holder.add(self) 18 assert_equal(holder.fetch(key), self) 19 holder.store(key, true) 20 assert_equal(holder.fetch(key), true) 21 assert_equal(holder.include?(key), true) 22 sleep(timeout+0.5) 23 assert_exception(TimerHolder::InvalidIndexError) do 24 holder.store(key, 1) 25 end 26 assert_equal(holder.include?(key), false) 27 key = holder.add(self) 28 sleep(timeout * 0.5) 29 assert(holder.include?(key)) 30 holder.extend(key, timeout) 31 sleep(timeout * 0.5) 32 assert(holder.include?(key)) 33 sleep(timeout * 0.6) 34 assert(!holder.include?(key)) 35 holder.delete(key) 36 end 37 38 def test_00 39 do_test(0.5) 40 end 41 42 def test_01 43 do_test(1, 0.5) 44 end 45end 46 47if __FILE__ == $0 48 RUNIT::CUI::TestRunner.run(TimerHolderTest.suite) 49end 50