def initialize
@games = {}
@games["dummy_game_id"] = MockGame.new
+
+ reset_players
+ end
+
+ def reset_players
+ $p1 = MockPlayer.new
+ $p1.name = "p1"
+ $p1.status = "game_waiting"
+ $p1.sente = true
+ $p2 = MockPlayer.new
+ $p2.name = "p2"
+ $p2.status = "game_waiting"
+ $p2.sente = false
end
def games
def get_player(status, game_id, sente, searcher)
if sente == true
- $p1 = MockPlayer.new
- $p1.name = "p1"
return $p1
elsif sente == false
- $p2 = MockPlayer.new
- $p2.name = "p2"
return $p2
elsif sente == nil
return nil
return nil
end
end
+
+ def find_all_players
+ [$p1,$p2].each {|pp| yield pp}
+ end
+
+ def find_rival(player, game_name)
+ case player.sente
+ when nil # no preference
+ return get_player("game_waiting", game_name, nil, player)
+ when true # rival must be gote
+ return get_player("game_waiting", game_name, false, player)
+ when false # rival must be sente
+ return get_player("game_waiting", game_name, true, player)
+ else
+ return :continue
+ end
+ end
end
assert_instance_of(ShogiServer::GetBuoyCountCommand, cmd)
end
+ def test_fork_command
+ cmd = ShogiServer::Command.factory("%%FORK server-denou-14400-60+p1+p2+20130223185013 buoy_denou-14400-60", @p)
+ assert_instance_of(ShogiServer::ForkCommand, cmd)
+ end
+
+ def test_fork_command2
+ cmd = ShogiServer::Command.factory("%%FORK server-denou-14400-60+p1+p2+20130223185013", @p)
+ assert_instance_of(ShogiServer::ForkCommand, cmd)
+ end
+
def test_void_command
cmd = ShogiServer::Command.factory("%%%HOGE", @p)
assert_instance_of(ShogiServer::VoidCommand, cmd)
def test_error
cmd = ShogiServer::Command.factory("should_be_error", @p)
assert_instance_of(ShogiServer::ErrorCommand, cmd)
+ cmd.call
+ assert_match /unknown command: should_be_error/, cmd.msg
+ end
+
+ def test_error_login
+ cmd = ShogiServer::Command.factory("LOGIN hoge foo", @p)
+ assert_instance_of(ShogiServer::ErrorCommand, cmd)
+ cmd.call
+ assert_no_match /unknown command: LOGIN hoge foo/, cmd.msg
+
+ cmd = ShogiServer::Command.factory("LOGin hoge foo", @p)
+ assert_instance_of(ShogiServer::ErrorCommand, cmd)
+ cmd.call
+ assert_no_match /unknown command: LOGIN hoge foo/, cmd.msg
+
+ cmd = ShogiServer::Command.factory("LOGIN hoge foo", @p)
+ assert_instance_of(ShogiServer::ErrorCommand, cmd)
+ cmd.call
+ assert_no_match /unknown command: LOGIN hoge foo/, cmd.msg
+
+ cmd = ShogiServer::Command.factory("LOGINhoge foo", @p)
+ assert_instance_of(ShogiServer::ErrorCommand, cmd)
+ cmd.call
+ assert_no_match /unknown command: LOGIN hoge foo/, cmd.msg
end
end
class BaseTestBuoyCommand < Test::Unit::TestCase
def setup
@p = MockPlayer.new
- $p1 = nil
- $p2 = nil
+ $league = MockLeague.new
delete_buoy_yaml
@buoy = ShogiServer::Buoy.new
cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoyhoge-1500-0", "+7776FU", 1
rt = cmd.call
assert :continue, rt
- assert !$p1
- assert !$p2
+ assert $p1.out.empty?
+ assert $p2.out.empty?
assert @buoy.is_new_game?("buoy_hoge-1500-0")
end
cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_duplicated-1500-0", "+7776FU", 1
rt = cmd.call
assert :continue, rt
- assert !$p1
- assert !$p2
+ assert $p1.out.empty?
+ assert $p2.out.empty?
assert !@buoy.is_new_game?("buoy_duplicated-1500-0")
end
cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_badmoves-1500-0", "+7776FU+8786FU", 1
rt = cmd.call
assert :continue, rt
- assert !$p1
- assert !$p2
+ assert $p1.out.empty?
+ assert $p2.out.empty?
assert @buoy.is_new_game?("buoy_badmoves-1500-0")
end
cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_badcounter-1500-0", "+7776FU", 0
rt = cmd.call
assert :continue, rt
- assert !$p1
- assert !$p2
+ assert $p1.out.empty?
+ assert $p2.out.empty?
assert @buoy.is_new_game?("buoy_badcounter-1500-0")
end
end
cmd = ShogiServer::DeleteBuoyCommand.new "%%DELETEBUOY", @p, buoy_game.game_name
rt = cmd.call
assert :continue, rt
- assert !$p1
- assert !$p2
+ assert $p1.out.empty?
+ assert $p2.out.empty?
assert @buoy.is_new_game?(buoy_game.game_name)
end
cmd = ShogiServer::DeleteBuoyCommand.new "%%DELETEBUOY", @p, buoy_game.game_name
rt = cmd.call
assert :continue, rt
- assert !$p1
- assert !$p2
+ assert $p1.out.empty?
+ assert $p2.out.empty?
assert @buoy.is_new_game?(buoy_game.game_name)
end
#
#
+class TestForkCommand < Test::Unit::TestCase
+ def setup
+ @player = MockPlayer.new
+ end
+
+ def test_new_buoy_game_name
+ src = "%%FORK server+denou-14400-60+p1+p2+20130223185013"
+ c = ShogiServer::ForkCommand.new src, @player, "server+denou-14400-60+p1+p2+20130223185013", nil, 13
+ c.decide_new_buoy_game_name
+ assert_equal "buoy_denou_13-14400-60", c.new_buoy_game
+ end
+
+ def test_new_buoy_game_name2
+ src = "%%FORK server+denou-14400-060+p1+p2+20130223185013"
+ c = ShogiServer::ForkCommand.new src, @player, "server+denou-14400-060+p1+p2+20130223185013", nil, 13
+ c.decide_new_buoy_game_name
+ assert_equal "buoy_denou_13-14400-060", c.new_buoy_game
+ end
+end
+
+#
+#
class TestGetBuoyCountCommand < BaseTestBuoyCommand
def test_call
buoy_game = ShogiServer::BuoyGame.new("buoy_testdeletebuoy-1500-0", "+7776FU", @p.name, 1)
@player.out.join)
end
end
-