OSDN Git Service

6311ff4dc377635748cacc926ad410d01982796a
[shogi-server/shogi-server.git] / test / TC_buoy.rb
1 $:.unshift File.join(File.dirname(__FILE__), "..")
2 $topdir = File.expand_path File.dirname(__FILE__)
3 require 'test/unit'
4 require 'shogi_server/buoy'
5 require 'mock_game'
6 require 'mock_player'
7 require 'mock_log_message'
8
9
10 class TestBuoyGame < Test::Unit::TestCase
11   def test_equal
12     g1 = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 1)
13     g2 = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 1)
14     assert_equal g1, g2
15   end
16
17   def test_not_equal
18     g1 = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 1)
19     g2 = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 2)
20     assert_not_equal g1, g2
21   end
22 end
23
24
25 class TestBuoy < Test::Unit::TestCase
26   def setup
27     @dir = File.dirname(__FILE__)
28     @filename = File.join(@dir, "buoy.yaml")
29     @conf = {:topdir => @dir}
30     @buoy = ShogiServer::Buoy.new @conf
31   end
32   
33   def teardown
34     if File.exist? @filename
35       File.delete @filename
36     end
37   end
38
39   def test_game_name
40     assert(ShogiServer::Buoy.game_name?("buoy_hoge-1500-0"))
41     assert(ShogiServer::Buoy.game_name?("buoy_hoge-900-0"))
42     assert(ShogiServer::Buoy.game_name?("buoy_hoge-0-30"))
43     assert(!ShogiServer::Buoy.game_name?("buoyhoge-1500-0"))
44     assert(!ShogiServer::Buoy.game_name?("hoge-1500-0"))
45   end 
46
47   def test_is_new_game1
48     assert @buoy.is_new_game?("buoy_123-900-0")
49   end
50
51   def test_add_game
52     game = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 1)
53     @buoy.add_game(game)
54     assert !@buoy.is_new_game?("buoy_1234-900-0")
55     game2 = @buoy.get_game(game.game_name)
56     assert_equal game, game2
57
58     @buoy.delete_game game
59     assert @buoy.is_new_game?("buoy_1234-900-0")
60   end
61
62   def test_update_game
63     game = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 2)
64     @buoy.add_game(game)
65     g2 = ShogiServer::BuoyGame.new(game.game_name, game.moves, game.owner, game.count-1)
66     @buoy.update_game(g2)
67     
68     get = @buoy.get_game(g2.game_name)
69     assert_equal g2, get
70   end
71 end
72
73
74 class TestBuoyObserver < Test::Unit::TestCase
75   def setup
76     @dir = File.dirname(__FILE__)
77     @filename = File.join(@dir, "buoy.yaml")
78     @conf = {:topdir => @dir}
79     @buoy = ShogiServer::Buoy.new @conf
80   end
81   
82   def teardown
83     if File.exist? @filename
84       File.delete @filename
85     end
86   end
87
88   def test_update_game_result_win
89     p1 = MockPlayer.new
90     p1.sente = true
91     p2 = MockPlayer.new
92     p2.sente = false
93
94     buoy_game = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 2)
95     assert @buoy.is_new_game?(buoy_game.game_name)
96     @buoy.add_game buoy_game
97     assert !@buoy.is_new_game?(buoy_game.game_name)
98
99     game = MockGame.new
100     game.game_name = buoy_game.game_name
101     gr = ShogiServer::GameResultWin.new game, p1, p2
102     
103     observer = ShogiServer::BuoyObserver.new
104     observer.update(gr)
105
106     assert !@buoy.is_new_game?(buoy_game.game_name)
107     buoy_game2 = @buoy.get_game(buoy_game.game_name)
108     assert_equal 1, buoy_game2.count
109   end
110
111   def test_update_game_result_win_zero
112     p1 = MockPlayer.new
113     p1.sente = true
114     p2 = MockPlayer.new
115     p2.sente = false
116
117     buoy_game = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 1)
118     assert @buoy.is_new_game?(buoy_game.game_name)
119     @buoy.add_game buoy_game
120     assert !@buoy.is_new_game?(buoy_game.game_name)
121
122     game = MockGame.new
123     game.game_name = buoy_game.game_name
124     gr = ShogiServer::GameResultWin.new game, p1, p2
125     
126     observer = ShogiServer::BuoyObserver.new
127     observer.update(gr)
128
129     assert @buoy.is_new_game?(buoy_game.game_name)
130   end
131
132   def test_update_game_result_draw
133     p1 = MockPlayer.new
134     p1.sente = true
135     p2 = MockPlayer.new
136     p2.sente = false
137
138     buoy_game = ShogiServer::BuoyGame.new("buoy_1234-900-0", [], "p1", 2)
139     assert @buoy.is_new_game?(buoy_game.game_name)
140     @buoy.add_game buoy_game
141     assert !@buoy.is_new_game?(buoy_game.game_name)
142
143     game = MockGame.new
144     game.game_name = buoy_game.game_name
145     gr = ShogiServer::GameResultDraw.new game, p1, p2
146     
147     observer = ShogiServer::BuoyObserver.new
148     observer.update(gr)
149
150     assert !@buoy.is_new_game?(buoy_game.game_name)
151     buoy_game2 = @buoy.get_game(buoy_game.game_name)
152     assert_equal 2, buoy_game2.count
153   end
154 end