OSDN Git Service

Added a test case for Floodgate::History
authorbeatles <beatles@b8c68f68-1e22-0410-b08e-880e1f8202b4>
Thu, 18 Jun 2009 13:28:09 +0000 (13:28 +0000)
committerbeatles <beatles@b8c68f68-1e22-0410-b08e-880e1f8202b4>
Thu, 18 Jun 2009 13:28:09 +0000 (13:28 +0000)
shogi_server/player.rb
test/TC_ALL.rb
test/TC_floodgate_history.rb [new file with mode: 0644]

index fc19cd8..9257874 100644 (file)
@@ -28,6 +28,7 @@ class BasicPlayer
     @win  = 0
     @loss = 0
     @last_game_win = false
+    @sente = nil
   end
 
   # Idetifier of the player in the rating system
@@ -54,6 +55,9 @@ class BasicPlayer
   # Whether win the previous game or not
   attr_accessor :last_game_win
 
+  # true for Sente; false for Gote
+  attr_accessor :sente
+
   def modified_at
     @modified_at || Time.now
   end
@@ -108,7 +112,6 @@ class Player < BasicPlayer
     @game = nil
     @game_name = ""
     @mytime = 0                 # set in start method also
-    @sente = nil
     @socket_buffer = []
     @main_thread = Thread::current
     @write_queue = ShogiServer::TimeoutQueue.new(WRITE_THREAD_WATCH_INTERVAL)
@@ -117,7 +120,7 @@ class Player < BasicPlayer
   end
 
   attr_accessor :socket, :status
-  attr_accessor :protocol, :eol, :game, :mytime, :game_name, :sente
+  attr_accessor :protocol, :eol, :game, :mytime, :game_name
   attr_accessor :main_thread
   attr_reader :socket_buffer
   
index 619d313..d0b88f9 100644 (file)
@@ -3,6 +3,7 @@ $:.unshift File.dirname(__FILE__)
 require 'TC_board'
 require 'TC_before_agree'
 require 'TC_floodgate'
+require 'TC_floodgate_history'
 require 'TC_functional'
 require 'TC_game_result'
 require 'TC_jishogi_kachi'
diff --git a/test/TC_floodgate_history.rb b/test/TC_floodgate_history.rb
new file mode 100644 (file)
index 0000000..fd175fd
--- /dev/null
@@ -0,0 +1,83 @@
+$:.unshift File.join(File.dirname(__FILE__), "..")
+require 'test/unit'
+require 'yaml'
+require 'shogi_server'
+require 'shogi_server/player'
+require 'shogi_server/league/floodgate'
+
+class MockGame
+  attr_accessor :game_id, :game_name
+
+  def regist_observers
+    # do nothing
+  end
+end
+
+class MockPlayer < ShogiServer::BasicPlayer
+  attr_accessor :status
+end
+
+class TestHistory < Test::Unit::TestCase
+  def setup
+    @orig_logger = $logger
+    $logger ||= Logger.new(STDERR)
+  end
+
+  def teardown
+    $logger = @orig_logger
+  end
+
+  def removed_file
+    file = Pathname.new "test_floodgate_history.yaml"
+    if file.exist?
+      file.delete
+    end
+    assert(!file.exist?)
+    return file
+  end
+
+  def test_load_no_file
+    file = removed_file
+
+    history = ShogiServer::League::Floodgate::History.new(file)
+    history.load
+    assert(true)
+  end
+
+  def test_load_empty_file
+    file = removed_file
+
+    file.open("w") {|f| f.write ""}
+    puts file
+    assert(file.exist?)
+
+    history = ShogiServer::League::Floodgate::History.new(file)
+    history.load
+    assert(true)
+
+    a = MockPlayer.new
+    a.name = "a"
+    a.win  = 1
+    a.loss = 2
+    a.rate = 0
+    a.last_game_win = false
+    a.sente = true
+    a.status = ""
+    b = MockPlayer.new
+    b.name = "b"
+    b.win  = 10
+    b.loss = 20
+    b.rate = 1500
+    b.last_game_win = true
+    b.sente = false
+    b.status = ""
+
+    game = MockGame.new
+    game.game_id = "dummy_game_id"
+    game.game_name = "dummy_game_name"
+    
+    gr = ShogiServer::GameResult.new(game, a, b)
+    history.update(gr)
+    assert true
+  end
+end