$:.unshift File.join(File.dirname(__FILE__), "..")
$topdir = File.expand_path File.dirname(__FILE__)
require 'test/unit'
+require 'tempfile'
require 'mock_game'
require 'mock_log_message'
require 'test/mock_player'
assert_instance_of(ShogiServer::MonitorOnCommand, cmd)
end
+ def test_monitor2on_command
+ cmd = ShogiServer::Command.factory("%%MONITOR2ON game_id", @p)
+ assert_instance_of(ShogiServer::Monitor2OnCommand, cmd)
+ end
+
def test_monitoroff_command
cmd = ShogiServer::Command.factory("%%MONITOROFF game_id", @p)
assert_instance_of(ShogiServer::MonitorOffCommand, cmd)
end
+ def test_monitor2off_command
+ cmd = ShogiServer::Command.factory("%%MONITOR2OFF game_id", @p)
+ assert_instance_of(ShogiServer::Monitor2OffCommand, cmd)
+ end
+
def test_help_command
cmd = ShogiServer::Command.factory("%%HELP", @p)
assert_instance_of(ShogiServer::HelpCommand, cmd)
assert_equal(:continue, rc)
end
+
+ def test_call_read_logfile
+ game = MockGame.new
+ cmd = ShogiServer::MonitorOnCommand.new("%%MONITORON hoge", @p, game)
+ rc = cmd.call
+ assert_equal("##[MONITOR][dummy_game_id] dummy_game_show\n##[MONITOR][dummy_game_id] line1\n##[MONITOR][dummy_game_id] line2\n##[MONITOR][dummy_game_id] +OK\n", @p.out.join)
+ assert_equal(:continue, rc)
+ end
+end
+
+#
+#
+class TestMonitor2OnCommand < Test::Unit::TestCase
+ def setup
+ @p = MockPlayer.new
+ @game = MockGame.new
+ @p.game = @game
+ end
+
+ def test_call
+ cmd = ShogiServer::Monitor2OnCommand.new("%%MONITOR2ON hoge", @p, nil)
+ rc = cmd.call
+
+ assert_equal(:continue, rc)
+ end
+
+ def test_call_read_logfile
+ $tempfile = Tempfile.new("TC_command_test_call_read_logfile")
+ $tempfile.write "hoge\nfoo\n"
+ $tempfile.close
+ game = MockGame.new
+ def game.logfile
+ $tempfile.path
+ end
+ cmd = ShogiServer::Monitor2OnCommand.new("%%MONITOR2ON hoge", @p, game)
+ rc = cmd.call
+ assert_equal("##[MONITOR2][dummy_game_id] hoge\n##[MONITOR2][dummy_game_id] foo\n##[MONITOR2][dummy_game_id] +OK\n", @p.out.join)
+ assert_equal(:continue, rc)
+ $tempfile = nil
+ end
end
#
#
#
+class TestMonitor2OffCommand < Test::Unit::TestCase
+ def setup
+ @p = MockPlayer.new
+ @game = MockGame.new
+ @p.game = @game
+ end
+
+ def test_call
+ cmd = ShogiServer::Monitor2OffCommand.new("%%MONITOR2OFF hoge", @p, nil)
+ rc = cmd.call
+
+ assert_equal(:continue, rc)
+ end
+end
+
+#
+#
class TestHelpCommand < Test::Unit::TestCase
def setup
@p = MockPlayer.new
end
def delete_buoy_yaml
- if File.exist?(File.join($topdir, "buoy.yaml"))
- File.delete File.join($topdir, "buoy.yaml")
- end
+ file = File.join($topdir, "buoy.yaml")
+ File.delete file if File.exist? file
end
def test_dummy
@p.name = "set_buoy_player"
end
- def test_split_moves1
- cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_hoge-1500-0", "+7776FU", 1
- rs = cmd.__send__ :split_moves, "+7776FU"
- assert_equal ["+7776FU"], rs
- end
-
- def test_split_moves2
- cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_hoge-1500-0", "+7776FU", 1
- rs = cmd.__send__ :split_moves, "+7776FU-3334FU"
- assert_equal ["+7776FU", "-3334FU"], rs
- end
-
- def test_split_moves3
- cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_hoge-1500-0", "+7776FU", 1
- assert_nothing_raised do
- cmd.__send__ :split_moves, ""
- end
- end
-
- def test_split_moves_error1
- cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_hoge-1500-0", "+7776FU", 1
- assert_raise ShogiServer::SetBuoyCommand::WrongMoves do
- cmd.__send__ :split_moves, "dummy"
- end
- end
-
- def test_call
+ def test_call_2
assert @buoy.is_new_game?("buoy_hoge-1500-0")
- cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_hoge-1500-0", "+7776FU", 1
+ cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_hoge-1500-0", "+7776FU", 2
rt = cmd.call
assert :continue, rt
assert !@buoy.is_new_game?("buoy_hoge-1500-0")
assert_equal ShogiServer::BuoyGame.new("buoy_hoge-1500-0", "+7776FU", @p.name, 1), buoy_game2
end
+ def test_call_1
+ assert @buoy.is_new_game?("buoy_hoge-1500-0")
+ cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoy_hoge-1500-0", "+7776FU", 1
+ rt = cmd.call
+ assert :continue, rt
+ assert @buoy.is_new_game?("buoy_hoge-1500-0")
+ assert !$p1.out.empty?
+ assert !$p2.out.empty?
+ end
+
def test_call_error_not_buoy_game_name
assert @buoy.is_new_game?("buoy_hoge-1500-0")
cmd = ShogiServer::SetBuoyCommand.new "%%SETBUOY", @p, "buoyhoge-1500-0", "+7776FU", 1
cmd = ShogiServer::GetBuoyCountCommand.new "%%GETBUOYCOUNT", @p, buoy_game.game_name
rt = cmd.call
assert :continue, rt
- assert_equal ["##[GETBUOYCOUNT] 0\n", "##[GETBUOYCOUNT] +OK\n"], @p.out
+ assert_equal ["##[GETBUOYCOUNT] -1\n", "##[GETBUOYCOUNT] +OK\n"], @p.out
+ end
+end
+
+#
+#
+class TestMonitorHandler < Test::Unit::TestCase
+ def test_not_equal_players
+ @player1 = MockPlayer.new
+ @handler1 = ShogiServer::MonitorHandler1.new @player1
+ @player2 = MockPlayer.new
+ @handler2 = ShogiServer::MonitorHandler1.new @player2
+
+ assert_not_equal(@handler1, @handler2)
+ end
+
+ def test_equal
+ @player1 = MockPlayer.new
+ @handler1 = ShogiServer::MonitorHandler1.new @player1
+ @handler2 = ShogiServer::MonitorHandler1.new @player1
+
+ assert_equal(@handler1, @handler2)
end
end
+#
+#
+class TestMonitorHandler1 < Test::Unit::TestCase
+ def setup
+ @player = MockPlayer.new
+ @handler = ShogiServer::MonitorHandler1.new @player
+ end
+
+ def test_type
+ assert_equal(1, @handler.type)
+ end
+
+ def test_header
+ assert_equal("MONITOR", @handler.header)
+ end
+
+ def test_equal
+ assert_equal @handler, @handler
+ assert_not_equal @handler, nil
+ end
+
+ def test_not_equal
+ assert_not_equal(@handler, ShogiServer::MonitorHandler2.new(@player))
+ end
+
+ def test_write_safe
+ @handler.write_safe("game_id", "hoge")
+ assert_equal("##[MONITOR][game_id] hoge\n##[MONITOR][game_id] +OK\n",
+ @player.out.join)
+ end
+end
+
+#
+#
+class TestMonitorHandler2 < Test::Unit::TestCase
+ def setup
+ @player = MockPlayer.new
+ @handler = ShogiServer::MonitorHandler2.new @player
+ end
+
+ def test_type
+ assert_equal(2, @handler.type)
+ end
+
+ def test_header
+ assert_equal("MONITOR2", @handler.header)
+ end
+
+ def test_equal
+ assert_equal @handler, @handler
+ assert_not_equal @handler, nil
+ end
+
+ def test_not_equal
+ assert_not_equal(@handler, ShogiServer::MonitorHandler1.new(@player))
+ end
+
+ def test_write_safe
+ @handler.write_safe("game_id", "hoge")
+ assert_equal("##[MONITOR2][game_id] hoge\n##[MONITOR2][game_id] +OK\n",
+ @player.out.join)
+ end
+
+ def test_write_safe2
+ @handler.write_safe("game_id", "hoge\nfoo")
+ assert_equal("##[MONITOR2][game_id] hoge\n##[MONITOR2][game_id] foo\n##[MONITOR2][game_id] +OK\n",
+ @player.out.join)
+ end
+end