Add startup bash script.
[kaya.git] / test / test_observer_utils.rb
blob01e3dc3ac7fc8cf1280a2d510b580f8b058dc0f2
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.changed
17     @object.notify_observers :something => nil
18     assert ok
19   end
20   
21   def test_observer
22     obs = Object.new
23     class << obs
24       include Observer
25       attr_reader :arg
26       
27       def on_something(arg)
28         @arg = arg
29       end
30     end
31     
32     @object.add_observer(obs)
33     @object.changed
34     @object.notify_observers :something => 37
35     
36     assert_equal 37, obs.arg
37   end
38   
39   def test_multiple_observer
40     obs = Object.new
41     class << obs
42       include Observer
43       attr_reader :arg1, :arg2
44       
45       def on_whatever(arg1)
46         @arg1 = arg1
47       end
48       
49       def on_something(arg2)
50         @arg2 = arg2
51       end
52     end
53     
54     @object.add_observer(obs)
55     @object.changed
56     @object.notify_observers :something => 2, :whatever => 1, :nothing => 3
57     
58     assert_equal 1, obs.arg1
59     assert_equal 2, obs.arg2
60   end
61 end