+2017-09-02 Daigo Moriwaki <daigo at debian dot org>
+
+ * [shogi-server] Write more game results in record files
+ As the CSA Record Format standard states, "%TIME_UP" and
+ "%SENNICHITE" are now recorded in CSA files when a game ends for
+ timed up or sennichite respectively.
+ (Closes #37490)
+
2017-02-26 Daigo Moriwaki <daigo at debian dot org>
* utils/csa-filter.rb: Allow csa-filter.rb to filter games by a winner or loser
def process
@winner.write_safe("#TIME_UP\n#WIN\n")
@loser.write_safe( "#TIME_UP\n#LOSE\n")
- # no log
+ log("%TIME_UP") # a player in turn lost
log_summary
notify
end
@players.each do |player|
player.write_safe("#SENNICHITE\n#DRAW\n")
end
- # no log
+ log("%SENNICHITE")
log_summary
notify
end
module ShogiServer
class BasicPlayer
attr_accessor :sente, :status
+
+ def write_safe(dummy)
+ end
end
end
class TestGameResult < Test::Unit::TestCase
class DummyGame
attr_accessor :game_name
+ attr_reader :board
+
+ def initialize
+ @board = ""
+ end
end
def setup
def test_game_result_sennichite_draw
gr = ShogiServer::GameResultSennichiteDraw.new(@game, @p1, @p2)
+ $cache_state = []
+ def gr.log(s)
+ $cache_state << s
+ end
assert_equal(@p1.last_game_win, false)
assert_equal(@p2.last_game_win, false)
assert_equal("sennichite", gr.log_summary_type)
+
+ gr.delete_observers
+ gr.process
+ assert_equal("%SENNICHITE", $cache_state[0])
end
+ def test_game_result_timeout
+ gr = ShogiServer::GameResultTimeoutWin.new(@game, @p2, @p1)
+ $cache_state = []
+ def gr.log(s)
+ $cache_state << s
+ end
+ gr.delete_observers
+ gr.process
+ assert_equal("%TIME_UP", $cache_state[0])
+ end
end