X-Git-Url: http://git.sourceforge.jp/view?p=shogi-server%2Fshogi-server.git;a=blobdiff_plain;f=test%2FTC_time_clock.rb;h=e4d812ecc5fd1355092401869b82a51b74372127;hp=215fef408b56d097f448fa37e488b429130aa10f;hb=bda0cbd86a4e0e7c18fcfaf3a783c584cd7a86ad;hpb=e4a84fa22e0db1b48c9cd4efe62549895a1b7133 diff --git a/test/TC_time_clock.rb b/test/TC_time_clock.rb index 215fef4..e4d812e 100644 --- a/test/TC_time_clock.rb +++ b/test/TC_time_clock.rb @@ -9,7 +9,7 @@ class DummyPlayer def initialize(mytime) @mytime = mytime end - attr_reader :mytime + attr_accessor :mytime end class TestTimeClockFactor < Test::Unit::TestCase @@ -25,6 +25,11 @@ class TestTimeClockFactor < Test::Unit::TestCase c = ShogiServer::TimeClock::factory(1, "hoge-1500-060") assert_instance_of(ShogiServer::StopWatchClock, c) end + + def test_check_clock_fischer + c = ShogiServer::TimeClock::factory(1, "hoge-600-10F") + assert_instance_of(ShogiServer::ChessClock, c) + end end class TestChessClock < Test::Unit::TestCase @@ -113,6 +118,65 @@ class TestChessClockWithLeastZero < Test::Unit::TestCase end end +class TestChessClockWithLeastZeroFischer < Test::Unit::TestCase + def test_time_duration_within_thinking_time + tc = ShogiServer::ChessClockWithLeastZero.new(0, 600, 0, 10) + assert_equal(0, tc.time_duration(100, 100.1, 100.9)) # 0.8 + assert_equal(1, tc.time_duration(100, 100, 101)) # 1 + assert_equal(1, tc.time_duration(100, 100.1, 101.9)) # 1.8 + assert_equal(1, tc.time_duration(1, 100, 101)) # 1 + assert_equal(2, tc.time_duration(100, 100.1, 102.9)) # 2.8 + assert_equal(2, tc.time_duration(100, 100, 102)) # 2 + + assert_equal(0, tc.time_duration(100, 100, 99.9)) # -0.1 + end + + def test_time_duration_over_thinking_time + tc = ShogiServer::ChessClockWithLeastZero.new(0, 600, 0 ,10) + assert_equal(1, tc.time_duration(1, 100.1, 101.9)) # 1.8 + assert_equal(2, tc.time_duration(2, 100.1, 102.9)) # 2.8 + end + + def test_with_fischer + tc = ShogiServer::ChessClockWithLeastZero.new(0, 600, 0, 10) + + p = DummyPlayer.new 100 + assert(!tc.timeout?(p, 100, 101)) # 1 + assert(!tc.timeout?(p, 100, 209)) # 109 + assert(!tc.timeout?(p, 100, 209.9)) # 109.9 + assert(tc.timeout?(p, 100, 210)) # 110 + assert(tc.timeout?(p, 100, 210.1)) # 110.1 + assert(tc.timeout?(p, 100, 211)) # 111 + end + + def test_with_fischer2 + tc = ShogiServer::ChessClockWithLeastZero.new(0, 0, 0, 10) + + p = DummyPlayer.new 0 + assert(!tc.timeout?(p, 100, 109)) # 9 + assert(!tc.timeout?(p, 100, 109.9)) # 9.9 + assert(tc.timeout?(p, 100, 110)) # 10 + assert(tc.timeout?(p, 100, 110.1)) # 10.1 + assert(tc.timeout?(p, 100, 110)) # 10.1 + end + + def test_process_time + tc = ShogiServer::ChessClockWithLeastZero.new(0, 600, 0, 10) + + p = DummyPlayer.new 100 + tc.process_time(p, 100, 101) # 1 + assert_equal(109, p.mytime) + + p = DummyPlayer.new 100 + tc.process_time(p, 100, 111) # 11 + assert_equal(99, p.mytime) + + p = DummyPlayer.new 100 + tc.process_time(p, 100, 209) # 109 + assert_equal(1, p.mytime) + end +end + class TestStopWatchClock < Test::Unit::TestCase def test_time_duration tc = ShogiServer::StopWatchClock.new(1, 1500, 60)