X-Git-Url: http://git.sourceforge.jp/view?p=shogi-server%2Fshogi-server.git;a=blobdiff_plain;f=test%2FTC_command.rb;h=012ec821ef64cc6897339b121e247b6fa2bf38d0;hp=455fdd8441e78d4334d245caac2538bdb363e7fd;hb=7b9ccc1df11dcc6f9dca7d5b07534d9fcdf305de;hpb=e795b7aaa822be7453579852b40feb3dbba72d14 diff --git a/test/TC_command.rb b/test/TC_command.rb index 455fdd8..012ec82 100644 --- a/test/TC_command.rb +++ b/test/TC_command.rb @@ -14,6 +14,19 @@ class MockLeague 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 @@ -38,12 +51,8 @@ class MockLeague 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 @@ -51,6 +60,23 @@ class MockLeague 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 @@ -202,6 +228,16 @@ class TestFactoryMethod < Test::Unit::TestCase 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) @@ -210,6 +246,30 @@ class TestFactoryMethod < Test::Unit::TestCase 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 @@ -748,8 +808,7 @@ 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 @@ -806,8 +865,8 @@ class TestSetBuoyCommand < BaseTestBuoyCommand 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 @@ -820,8 +879,8 @@ class TestSetBuoyCommand < BaseTestBuoyCommand 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 @@ -830,8 +889,8 @@ class TestSetBuoyCommand < BaseTestBuoyCommand 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 @@ -840,8 +899,8 @@ class TestSetBuoyCommand < BaseTestBuoyCommand 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 @@ -858,8 +917,8 @@ class TestDeleteBuoyCommand < BaseTestBuoyCommand 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 @@ -869,8 +928,8 @@ class TestDeleteBuoyCommand < BaseTestBuoyCommand 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 @@ -890,6 +949,21 @@ 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 +end + +# +# class TestGetBuoyCountCommand < BaseTestBuoyCommand def test_call buoy_game = ShogiServer::BuoyGame.new("buoy_testdeletebuoy-1500-0", "+7776FU", @p.name, 1) @@ -1002,4 +1076,3 @@ class TestMonitorHandler2 < Test::Unit::TestCase @player.out.join) end end -