1 $:.unshift File.join(File.dirname(__FILE__), "..")
4 require 'shogi_server/player'
5 require 'shogi_server/pairing'
6 require 'shogi_server/league/floodgate'
20 $logger = MockLogger.new
29 class TestFloodgate < Test::Unit::TestCase
31 @fg = ShogiServer::League::Floodgate.new(nil)
39 assert(ShogiServer::League::Floodgate.game_name?("floodgate-900-0"))
40 assert(ShogiServer::League::Floodgate.game_name?("floodgate-0-10"))
41 assert(!ShogiServer::League::Floodgate.game_name?("floodgat-900-0"))
46 class TestPairing < Test::Unit::TestCase
48 @pairing= ShogiServer::Pairing.new
50 def @pairing.start_game(p1,p2)
53 @a = ShogiServer::BasicPlayer.new
58 @a.last_game_win = false
59 @b = ShogiServer::BasicPlayer.new
64 @b.last_game_win = true
65 @c = ShogiServer::BasicPlayer.new
70 @c.last_game_win = true
71 @d = ShogiServer::BasicPlayer.new
76 @d.last_game_win = true
79 def test_include_newbie
80 assert(@pairing.include_newbie?([@a]))
81 assert(!@pairing.include_newbie?([@b]))
82 assert(@pairing.include_newbie?([@b,@a]))
83 assert(!@pairing.include_newbie?([@b,@c]))
87 class TestStartGame < Test::Unit::TestCase
89 @pairing= ShogiServer::StartGame.new
91 def @pairing.start_game(p1,p2)
94 @a = ShogiServer::BasicPlayer.new
99 @b = ShogiServer::BasicPlayer.new
104 @c = ShogiServer::BasicPlayer.new
109 @d = ShogiServer::BasicPlayer.new
116 def test_match_two_players
118 @pairing.match(players)
119 assert_equal(1, $called)
122 def test_match_one_player
124 @pairing.match(players)
125 assert_equal(0, $called)
128 def test_match_zero_player
130 @pairing.match(players)
131 assert_equal(0, $called)
134 def test_match_three_players
136 @pairing.match(players)
137 assert_equal(1, $called)
140 def test_match_four_players
141 players = [@a,@b,@c,@d]
142 @pairing.match(players)
143 assert_equal(2, $called)
147 class TestDeleteMostPlayingPlayer < Test::Unit::TestCase
149 @pairing= ShogiServer::DeleteMostPlayingPlayer.new
150 @a = ShogiServer::BasicPlayer.new
154 @b = ShogiServer::BasicPlayer.new
158 @c = ShogiServer::BasicPlayer.new
165 players = [@a, @b, @c]
166 @pairing.match(players)
167 assert_equal([@a,@b], players)
171 class TestLeastRatePlayer < Test::Unit::TestCase
173 @pairing= ShogiServer::DeleteLeastRatePlayer.new
174 @a = ShogiServer::BasicPlayer.new
178 @b = ShogiServer::BasicPlayer.new
182 @c = ShogiServer::BasicPlayer.new
189 players = [@a, @b, @c]
190 @pairing.match(players)
191 assert_equal([@b,@c], players)
195 class TestRandomize < Test::Unit::TestCase
197 srand(10) # makes the random number generator determistic
198 @pairing = ShogiServer::Randomize.new
199 @a = ShogiServer::BasicPlayer.new
203 @b = ShogiServer::BasicPlayer.new
207 @c = ShogiServer::BasicPlayer.new
214 players = [@a, @b, @c]
215 @pairing.match(players)
216 assert_equal([@b,@a,@c], players)
220 class TestSortByRate < Test::Unit::TestCase
222 @pairing = ShogiServer::SortByRate.new
223 @a = ShogiServer::BasicPlayer.new
228 @b = ShogiServer::BasicPlayer.new
233 @c = ShogiServer::BasicPlayer.new
241 players = [@a, @b, @c]
242 @pairing.match(players)
243 assert_equal([@c,@a,@b], players)
247 class TestSortByRateWithRandomness < Test::Unit::TestCase
249 srand(10) # makes the random number generator determistic
250 @pairing = ShogiServer::SortByRateWithRandomness.new(1200, 2400)
251 @a = ShogiServer::BasicPlayer.new
256 @b = ShogiServer::BasicPlayer.new
261 @c = ShogiServer::BasicPlayer.new
269 players = [@a, @b, @c]
270 @pairing.match(players)
271 assert_equal([@c,@b,@a], players)
275 class TestExcludeSacrifice < Test::Unit::TestCase
277 @obj = ShogiServer::ExcludeSacrificeGps500.new
278 @a = ShogiServer::BasicPlayer.new
284 @a.last_game_win = false
285 @b = ShogiServer::BasicPlayer.new
286 @b.player_id = "gps500+e293220e3f8a3e59f79f6b0efffaa931"
291 @b.last_game_win = true
292 @c = ShogiServer::BasicPlayer.new
298 @c.last_game_win = true
304 assert_equal([@a], players)
310 assert_equal([], players)
316 assert_equal([@a,@b], players)
320 players = [@a, @b, @c]
322 assert_equal([@a, @c], players)
328 assert_equal([@a,@c], players)