Fix race condition when loading plugins before games.
[kaya.git] / test / interaction / test_match.rb
blob89ce08eeafbe115dcaf01cbfe560f84e98683f46
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 'interaction/match'
10 require 'games/all'
12 class TestMatch < Test::Unit::TestCase
13   def setup
14     @match = Match.new Game.get(:chess)
15   end
17   def test_register
18     p1 = fake_player(:white)
19     p2 = fake_player(:black)
20     
21     assert @match.register(p1)
22     assert ! @match.complete?
23     assert @match.register(p2)
24     assert @match.complete?
25   end
26   
27   def test_register_twice
28     p1 = fake_player(:white)
29     
30     assert @match.register(p1)
31     assert ! @match.complete?
32     assert ! @match.register(p1)
33   end
35   def test_register_multiple_players
36     p1 = fake_player(:white)
37     p2 = fake_player(:black)
38     p3 = fake_player(:white)
39     
40     assert @match.register(p1)
41     assert @match.register(p2)
42     assert @match.complete?
43     assert !@match.register(p3)
44   end
45   
46   def test_start
47     p1 = fake_player(:white)
48     p2 = fake_player(:black)
49     
50     assert @match.register(p1)
51     assert @match.register(p2)
52     
53     assert @match.start(p2)
54     assert @match.start(p1)
55     
56     assert @match.started?
57   end
58   
59   def test_start_incomplete
60     p1 = fake_player(:white)
61     
62     assert @match.register(p1)
63     assert !@match.start(p1)
64   end
65   
66   def test_move
67     p1 = fake_player(:white)
68     p2 = fake_player(:black)
69     
70     
71   end
72   
73   private
74   
75   def fake_player(c)
76     player = Object.new
77     class << player
78       include Observer
79     end
80     player.metaclass_eval do
81       define_method(:color) { c }
82     end
83     player
84   end
85 end