moved to timer based poll mechanism
[god.git] / test / test_timer.rb
blob7e4b50fa61ac0f4d0a08671df2f9db7d3aef1d76
1 require File.dirname(__FILE__) + '/helper'
3 class TestTimer < Test::Unit::TestCase
4   def setup
5     @t = Timer.new
6   end
7   
8   def test_new_timer_should_have_no_events
9     assert_equal 0, @t.events.size
10   end
11   
12   def test_register_should_queue_event
13     Time.stubs(:now).returns(0)
14     
15     w = Watch.new(nil)
16     @t.register(w, stub(:interval => 20), nil)
17     
18     assert_equal 1, @t.events.size
19     assert_equal w, @t.events.first.watch
20   end
21   
22   def test_timer_should_remove_expired_events
23     @t.register(nil, stub(:interval => 0), nil)
24     sleep(0.3)
25     assert_equal 0, @t.events.size
26   end
27   
28   def test_timer_should_remove_only_expired_events
29     @t.register(nil, stub(:interval => 0), nil)
30     @t.register(nil, stub(:interval => 1000), nil)
31     sleep(0.3)
32     assert_equal 1, @t.events.size
33   end
34   
35   def test_timer_should_sort_timer_events
36     @t.register(nil, stub(:interval => 1000), nil)
37     @t.register(nil, stub(:interval => 800), nil)
38     @t.register(nil, stub(:interval => 900), nil)
39     @t.register(nil, stub(:interval => 100), nil)
40     sleep(0.3)
41     assert_equal [100, 800, 900, 1000], @t.events.map { |x| x.condition.interval }
42   end
43 end