OSDN Git Service

Merge branch 'wdoor-stable'
[shogi-server/shogi-server.git] / test / TC_fork.rb
1 $:.unshift File.dirname(__FILE__)
2 $:.unshift File.join(File.dirname(__FILE__), "..")
3 $topdir = File.expand_path File.dirname(__FILE__)
4 require "baseclient"
5 require "shogi_server/buoy.rb"
6
7 class TestFork < BaseClient
8   def parse_game_name(player)
9     player.puts "%%LIST"
10     sleep 1
11     if /##\[LIST\] (.*)/ =~ player.message
12       return $1
13     end
14   end
15
16   def test_wrong_game
17     @admin = SocketPlayer.new "dummy", "admin", false
18     @admin.connect
19     @admin.reader
20     @admin.login
21
22     result, result2 = handshake do
23       @admin.puts "%%FORK wronggame-900-0 buoy_WrongGame-900-0"
24       sleep 1
25     end
26
27     assert /##\[ERROR\] wrong source game name/ =~ @admin.message
28     @admin.logout
29   end
30
31   def test_too_short_fork
32     @admin = SocketPlayer.new "dummy", "admin", false
33     @admin.connect
34     @admin.reader
35     @admin.login
36
37     result, result2 = handshake do
38       source_game = parse_game_name(@admin)
39       @admin.puts "%%FORK #{source_game} buoy_TooShortFork-900-0 0"
40       sleep 1
41     end
42
43     assert /##\[ERROR\] number of moves to fork is out of range/ =~ @admin.message
44     @admin.logout
45   end
46
47   def test_fork
48     buoy = ShogiServer::Buoy.new
49     
50     @admin = SocketPlayer.new "dummy", "admin", "*"
51     @admin.connect
52     @admin.reader
53     @admin.login
54     assert buoy.is_new_game?("buoy_Fork-1500-0")
55
56     result, result2 = handshake do
57       source_game = parse_game_name(@admin)
58       @admin.puts "%%FORK #{source_game} buoy_Fork-1500-0"
59       sleep 1
60     end
61
62     assert buoy.is_new_game?("buoy_Fork-1500-0")
63     @p1 = SocketPlayer.new "buoy_Fork", "p1", true
64     @p2 = SocketPlayer.new "buoy_Fork", "p2", false
65     @p1.connect
66     @p2.connect
67     @p1.reader
68     @p2.reader
69     @p1.login
70     @p2.login
71     sleep 1
72     @p1.game
73     @p2.game
74     sleep 1
75     @p1.agree
76     @p2.agree
77     sleep 1
78     assert /^Total_Time:1500/ =~ @p1.message
79     assert /^Total_Time:1500/ =~ @p2.message
80     @p2.move("-3334FU")
81     sleep 1
82     @p1.toryo
83     sleep 1
84     @p2.logout
85     @p1.logout
86
87     @admin.logout
88   end
89
90   def test_fork2
91     buoy = ShogiServer::Buoy.new
92     
93     @admin = SocketPlayer.new "dummy", "admin", "*"
94     @admin.connect
95     @admin.reader
96     @admin.login
97
98     result, result2 = handshake do
99       source_game = parse_game_name(@admin)
100       @admin.puts "%%FORK #{source_game}" # nil for new_buoy_game name
101       sleep 1
102       assert /##\[FORK\]: new buoy game name: buoy_TestFork_1-1500-0/ =~ @admin.message
103     end
104
105     assert buoy.is_new_game?("buoy_TestFork_1-1500-0")
106     @p1 = SocketPlayer.new "buoy_TestFork_1", "p1", true
107     @p2 = SocketPlayer.new "buoy_TestFork_1", "p2", false
108     @p1.connect
109     @p2.connect
110     @p1.reader
111     @p2.reader
112     @p1.login
113     @p2.login
114     sleep 1
115     @p1.game
116     @p2.game
117     sleep 1
118     @p1.agree
119     @p2.agree
120     sleep 1
121     assert /^Total_Time:1500/ =~ @p1.message
122     assert /^Total_Time:1500/ =~ @p2.message
123     @p2.move("-3334FU")
124     sleep 1
125     @p1.toryo
126     sleep 1
127     @p2.logout
128     @p1.logout
129
130     @admin.logout
131   end
132 end