Merge games and plugins.
[kaya.git] / test / test_observer_utils.rb
blob3c6d820d50f3c5325ee2f2dea35d603c5c497199
1 require 'test/unit'
2 require 'observer_utils'
4 class TestObserverUtils < Test::Unit::TestCase
5   class FakeObservable
6     include Observable
7   end
8   
9   def setup
10     @object = FakeObservable.new
11   end
12   
13   def test_simple_observer
14     ok = false
15     @object.observe(:something) { ok = true }
16     @object.fire :something
17     assert ok
18   end
19   
20   def test_observer
21     obs = Object.new
22     class << obs
23       include Observer
24       attr_reader :arg
25       
26       def on_something(arg)
27         @arg = arg
28       end
29     end
30     
31     @object.add_observer(obs)
32     @object.changed
33     @object.notify_observers :something => 37
34     
35     assert_equal 37, obs.arg
36   end
37   
38   def test_multiple_observer
39     obs = Object.new
40     class << obs
41       include Observer
42       attr_reader :arg1, :arg2
43       
44       def on_whatever(arg1)
45         @arg1 = arg1
46       end
47       
48       def on_something(arg2)
49         @arg2 = arg2
50       end
51     end
52     
53     @object.add_observer(obs)
54     @object.changed
55     @object.notify_observers :something => 2, :whatever => 1, :nothing => 3
56     
57     assert_equal 1, obs.arg1
58     assert_equal 2, obs.arg2
59   end
60 end