OSDN Git Service

Experimantal implementation for specified games, codenamed Buoy.
[shogi-server/shogi-server.git] / test / TC_floodgate_history.rb
1 $:.unshift File.join(File.dirname(__FILE__), "..")
2 require 'test/unit'
3 require 'yaml'
4 require 'shogi_server'
5 require 'shogi_server/player'
6 require 'shogi_server/league/floodgate'
7
8 class MockGame
9   attr_accessor :game_id, :game_name
10
11   def regist_observers
12     # do nothing
13   end
14 end
15
16 class MockPlayer < ShogiServer::BasicPlayer
17   attr_accessor :status
18 end
19
20 class TestHistory < Test::Unit::TestCase
21   def setup
22     @orig_logger = $logger
23     $logger ||= Logger.new(STDERR)
24   end
25
26   def teardown
27     $logger = @orig_logger
28   end
29
30   def removed_file
31     file = Pathname.new "test_floodgate_history.yaml"
32     if file.exist?
33       file.delete
34     end
35     assert(!file.exist?)
36     return file
37   end
38
39   def test_load_no_file
40     file = removed_file
41
42     history = ShogiServer::League::Floodgate::History.new(file)
43     history.load
44     assert(true)
45   end
46
47   def test_load_empty_file
48     file = removed_file
49
50     file.open("w") {|f| f.write ""}
51     puts file
52     assert(file.exist?)
53
54     history = ShogiServer::League::Floodgate::History.new(file)
55     history.load
56     assert(true)
57
58     a = MockPlayer.new
59     a.name = "a"
60     a.win  = 1
61     a.loss = 2
62     a.rate = 0
63     a.last_game_win = false
64     a.sente = true
65     a.status = ""
66     b = MockPlayer.new
67     b.name = "b"
68     b.win  = 10
69     b.loss = 20
70     b.rate = 1500
71     b.last_game_win = true
72     b.sente = false
73     b.status = ""
74
75     game = MockGame.new
76     game.game_id = "dummy_game_id"
77     game.game_name = "dummy_game_name"
78     
79     gr = ShogiServer::GameResult.new(game, a, b)
80     history.update(gr)
81     assert true
82   end
83 end