bugfix: safety against breaking the AI if you press undo while it's thinking
[kaya.git] / test / test_observer_utils.rb
blob07255078eab289c9cdb9ed16bf762274200d962a
1 # Copyright (c) 2009 Paolo Capriotti <p.capriotti@gmail.com>
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 require 'test/unit'
9 require 'observer_utils'
11 class TestObserverUtils < Test::Unit::TestCase
12   class FakeObservable
13     include Observable
14   end
15   
16   def setup
17     @object = FakeObservable.new
18   end
19   
20   def test_simple_observer
21     ok = false
22     @object.on(:something) { ok = true }
23     @object.fire :something
24     assert ok
25   end
26   
27   def test_observer
28     obs = Object.new
29     class << obs
30       include Observer
31       attr_reader :arg
32       
33       def on_something(arg)
34         @arg = arg
35       end
36     end
37     
38     @object.add_observer(obs)
39     @object.changed
40     @object.notify_observers :something => 37
41     
42     assert_equal 37, obs.arg
43   end
44   
45   def test_multiple_observer
46     obs = Object.new
47     class << obs
48       include Observer
49       attr_reader :arg1, :arg2
50       
51       def on_whatever(arg1)
52         @arg1 = arg1
53       end
54       
55       def on_something(arg2)
56         @arg2 = arg2
57       end
58     end
59     
60     @object.add_observer(obs)
61     @object.changed
62     @object.notify_observers :something => 2, :whatever => 1, :nothing => 3
63     
64     assert_equal 1, obs.arg1
65     assert_equal 2, obs.arg2
66   end
67 end