acpc_poker_basic_proxy 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/acpc_poker_basic_proxy.gemspec +4 -5
- data/lib/acpc_poker_basic_proxy.rb +1 -0
- data/lib/acpc_poker_basic_proxy/basic_proxy.rb +7 -4
- data/lib/acpc_poker_basic_proxy/communication_logic.rb +1 -2
- data/lib/acpc_poker_basic_proxy/communication_logic/action_sender.rb +3 -1
- data/lib/acpc_poker_basic_proxy/communication_logic/dealer_stream.rb +150 -0
- data/lib/acpc_poker_basic_proxy/version.rb +1 -1
- data/spec/action_sender_spec.rb +1 -1
- data/spec/basic_proxy_spec.rb +3 -3
- data/spec/coverage/index.html +7 -1373
- data/spec/dealer_stream_spec.rb +90 -0
- data/spec/match_state_receiver_spec.rb +1 -1
- data/spec/support/spec_helper.rb +2 -2
- metadata +98 -116
- data/lib/acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator.rb +0 -127
- data/lib/acpc_poker_basic_proxy/communication_logic/acpc_dealer_information.rb +0 -22
- data/lib/acpc_poker_basic_proxy/mixins/socket_with_ready_methods.rb +0 -32
- data/spec/acpc_dealer_communicator_spec.rb +0 -67
- data/spec/acpc_dealer_information_spec.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c75b02eafb76e6ecd4895bad73bf7abdeb0377e1
|
4
|
+
data.tar.gz: 13699952e83f7ed0812880b7de60eed4ede2bacb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d093f6987211ffa930f1231edc270861ac4afd19b360f31f0b2da6da22a49a6f6726687a5165c6458a2a67d44c38e83abcfbb7d9fbc3a3c8e12ce0dc4c5b502d
|
7
|
+
data.tar.gz: c66b69e39fa01f95b1b5aeb7eecd6b073bf6a9cd3da7f6320455b209720c553a6f7c8d47d519448a420b9024c7e2f7111adc7ea2a3254e3b0032c0cd5d0e25a1
|
@@ -10,8 +10,8 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.summary = %q{ACPC Poker Basic Proxy}
|
11
11
|
s.description = %q{Basic proxy to connect to the ACPC Dealer.}
|
12
12
|
|
13
|
-
s.add_dependency 'acpc_poker_types', '~> 3.
|
14
|
-
s.add_dependency '
|
13
|
+
s.add_dependency 'acpc_poker_types', '~> 3.1'
|
14
|
+
s.add_dependency 'contextual_exceptions', '~> 0.0'
|
15
15
|
|
16
16
|
s.rubyforge_project = "acpc_poker_basic_proxy"
|
17
17
|
|
@@ -22,9 +22,8 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_development_dependency 'turn', '~> 0.9'
|
23
23
|
s.add_development_dependency 'minitest', '~> 4.7'
|
24
24
|
s.add_development_dependency 'mocha', '~> 0.13'
|
25
|
-
s.add_development_dependency 'acpc_dealer', '~> 0.0'
|
26
25
|
s.add_development_dependency 'awesome_print', '~> 1.0'
|
27
26
|
s.add_development_dependency 'pry-rescue', '~> 1.0'
|
28
27
|
s.add_development_dependency 'simplecov', '~> 0.7'
|
29
|
-
s.add_development_dependency 'acpc_dealer', '~>
|
30
|
-
end
|
28
|
+
s.add_development_dependency 'acpc_dealer', '~> 1.0'
|
29
|
+
end
|
@@ -1,17 +1,20 @@
|
|
1
|
+
require 'acpc_dealer'
|
1
2
|
|
2
|
-
require 'acpc_poker_basic_proxy/communication_logic/
|
3
|
-
require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_information'
|
3
|
+
require 'acpc_poker_basic_proxy/communication_logic/dealer_stream'
|
4
4
|
require 'acpc_poker_basic_proxy/communication_logic/action_sender'
|
5
5
|
require 'acpc_poker_basic_proxy/communication_logic/match_state_receiver'
|
6
6
|
|
7
|
+
require 'contextual_exceptions'
|
8
|
+
using ContextualExceptions::ClassRefinement
|
9
|
+
|
7
10
|
# A bot that connects to a dealer as a proxy.
|
8
11
|
module AcpcPokerBasicProxy
|
9
12
|
class BasicProxy
|
10
13
|
exceptions :initial_match_state_not_yet_received
|
11
14
|
|
12
|
-
# @param [
|
15
|
+
# @param [AcpcDealer::ConnectionInformation] dealer_information Information about the dealer to which this bot should connect.
|
13
16
|
def initialize(dealer_information)
|
14
|
-
@dealer_communicator = CommunicationLogic::
|
17
|
+
@dealer_communicator = CommunicationLogic::DealerStream.new dealer_information.port_number, dealer_information.host_name, dealer_information.millisecond_response_timeout
|
15
18
|
end
|
16
19
|
|
17
20
|
# @param [PokerAction] action The action to be sent.
|
@@ -1,5 +1,4 @@
|
|
1
|
-
require 'acpc_poker_basic_proxy/communication_logic/
|
2
|
-
require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_information'
|
1
|
+
require 'acpc_poker_basic_proxy/communication_logic/dealer_stream'
|
3
2
|
require 'acpc_poker_basic_proxy/communication_logic/match_state_receiver'
|
4
3
|
require 'acpc_poker_basic_proxy/communication_logic/action_sender'
|
5
4
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
|
2
|
-
require 'dmorrill10-utils/class'
|
3
2
|
require 'acpc_poker_types/poker_action'
|
4
3
|
require 'acpc_poker_types/match_state'
|
5
4
|
|
5
|
+
require 'contextual_exceptions'
|
6
|
+
using ContextualExceptions::ClassRefinement
|
7
|
+
|
6
8
|
# Sends poker actions according to the ACPC protocol.
|
7
9
|
module AcpcPokerBasicProxy
|
8
10
|
module CommunicationLogic
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require 'delegate'
|
3
|
+
|
4
|
+
module AcpcPokerBasicProxy
|
5
|
+
module CommunicationLogic
|
6
|
+
module IoRefinement
|
7
|
+
refine IO do
|
8
|
+
# Checks if the socket is ready to be read from.
|
9
|
+
# @param [Integer] timeout_in_seconds Amount of time to wait for the sever to respond, in seconds. Must be positive or +nil+.
|
10
|
+
# @return [Boolean] +true+ if the socket is ready to be read from, +false+ otherwise.
|
11
|
+
def ready_to_read?(timeout_in_seconds=nil)
|
12
|
+
read_array = [self]
|
13
|
+
write_array = nil
|
14
|
+
error_array = nil
|
15
|
+
|
16
|
+
select?(read_array, write_array, error_array, timeout_in_seconds)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Checks if the socket is ready to be written to.
|
20
|
+
# @param [Integer] timeout_in_seconds Amount of time to wait for the sever to respond, in seconds. Must be positive or +nil+.
|
21
|
+
# @return [Boolean] +true+ if the socket is ready to be written to, +false+ otherwise.
|
22
|
+
def ready_to_write?(timeout_in_seconds=nil)
|
23
|
+
read_array = nil
|
24
|
+
write_array = [self]
|
25
|
+
error_array = nil
|
26
|
+
|
27
|
+
select?(read_array, write_array, error_array, timeout_in_seconds)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
# @see IO#select
|
33
|
+
def select?(read_array, write_array=[], error_array=[], timeout_in_seconds=nil)
|
34
|
+
IO.select(read_array, write_array, error_array, timeout_in_seconds) != nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
using AcpcPokerBasicProxy::CommunicationLogic::IoRefinement
|
41
|
+
|
42
|
+
require 'contextual_exceptions'
|
43
|
+
using ContextualExceptions::ClassRefinement
|
44
|
+
|
45
|
+
# Communication service to the ACPC Dealer.
|
46
|
+
# It acts solely as an abstraction of the communication protocol and
|
47
|
+
# implements the main Ruby communication interface through 'gets' and 'puts'
|
48
|
+
# methods.
|
49
|
+
module AcpcPokerBasicProxy
|
50
|
+
module CommunicationLogic
|
51
|
+
class DealerStream < DelegateClass(TCPSocket)
|
52
|
+
exceptions :unable_to_connect_to_dealer, :unable_to_write_to_dealer, :unable_to_get_from_dealer
|
53
|
+
|
54
|
+
# @return [String] The ACPC dealer version label.
|
55
|
+
VERSION_LABEL = 'VERSION'
|
56
|
+
|
57
|
+
# @return [Hash] The ACPC dealer version numbers.
|
58
|
+
VERSION_NUMBERS = {:major => 2, :minor => 0, :revision => 0}
|
59
|
+
|
60
|
+
# @return [String] Dealer specified string terminator.
|
61
|
+
TERMINATION_STRING = "\r\n"
|
62
|
+
|
63
|
+
# @param [Integer] port The port on which to connect to the dealer.
|
64
|
+
# @param [String] host_name The host on which the dealer is running. Defaults to 'localhost'
|
65
|
+
# @param [Integer] millisecond_response_timeout The dealer's response timeout, in milliseconds.
|
66
|
+
# @raise AcpcDealerConnectionError, UnableToWriteToDealer
|
67
|
+
def initialize(port, host_name='localhost', millisecond_response_timeout=nil)
|
68
|
+
begin
|
69
|
+
@dealer_socket = TCPSocket.new(host_name, port)
|
70
|
+
super @dealer_socket
|
71
|
+
|
72
|
+
@response_timeout_in_seconds = if millisecond_response_timeout
|
73
|
+
millisecond_response_timeout/(10**3).to_r
|
74
|
+
else
|
75
|
+
nil
|
76
|
+
end
|
77
|
+
|
78
|
+
send_version_string_to_dealer
|
79
|
+
rescue UnableToWriteToDealer
|
80
|
+
raise
|
81
|
+
rescue Errno::ECONNREFUSED => e
|
82
|
+
handle_error UnableToConnectToDealer, "Unable to connect to the dealer on #{host_name} through port #{port}", e
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# Retrieves a string from the dealer.
|
87
|
+
#
|
88
|
+
# @return [String] A string from the dealer.
|
89
|
+
# @raise UnableToGetFromDealer
|
90
|
+
def gets
|
91
|
+
begin
|
92
|
+
string_from_dealer
|
93
|
+
rescue => e
|
94
|
+
handle_error UnableToGetFromDealer, "Unable to get a string from the dealer", e
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Sends a given +string+ to the dealer.
|
99
|
+
#
|
100
|
+
# @param [String] string The string to send.
|
101
|
+
# @return (see #send_string_to_dealer)
|
102
|
+
# @raise UnableToWriteToDealer
|
103
|
+
def write(string)
|
104
|
+
begin
|
105
|
+
num_bytes_written = send_string_to_dealer string
|
106
|
+
rescue => e
|
107
|
+
handle_error UnableToWriteToDealer, "Unable to send the string, \"#{string}\", to the dealer", e
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
# @see TCPSocket#ready_to_write?
|
112
|
+
def ready_to_write?
|
113
|
+
@dealer_socket.ready_to_write? @response_timeout_in_seconds
|
114
|
+
end
|
115
|
+
|
116
|
+
# @see TCPSocket#ready_to_read?
|
117
|
+
def ready_to_read?
|
118
|
+
@dealer_socket.ready_to_read? @response_timeout_in_seconds
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
def handle_error(exception, message, context_exception)
|
124
|
+
close if @dealer_socket && !closed?
|
125
|
+
raise exception.with_context(message, context_exception)
|
126
|
+
end
|
127
|
+
|
128
|
+
# @return (see #send_string_to_dealer)
|
129
|
+
def send_version_string_to_dealer
|
130
|
+
version_string = "#{VERSION_LABEL}:#{VERSION_NUMBERS[:major]}.#{VERSION_NUMBERS[:minor]}.#{VERSION_NUMBERS[:revision]}"
|
131
|
+
begin
|
132
|
+
send_string_to_dealer version_string
|
133
|
+
rescue => e
|
134
|
+
handle_error UnableToWriteToDealer, "Unable to send version string, \"#{version_string}\", to the dealer", e
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# @return [Integer] The number of bytes written to the dealer.
|
139
|
+
def send_string_to_dealer(string)
|
140
|
+
raise unless ready_to_write?
|
141
|
+
@dealer_socket.write(string + TERMINATION_STRING)
|
142
|
+
end
|
143
|
+
|
144
|
+
def string_from_dealer
|
145
|
+
raise unless ready_to_read?
|
146
|
+
@dealer_socket.gets.chomp
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
data/spec/action_sender_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
|
2
2
|
require_relative 'support/spec_helper'
|
3
3
|
|
4
|
+
require 'acpc_poker_types/acpc_dealer_data/poker_match_data'
|
4
5
|
require 'acpc_poker_types/poker_action'
|
5
6
|
require 'acpc_poker_types/match_state'
|
6
|
-
require 'acpc_poker_types/acpc_dealer_data/poker_match_data'
|
7
7
|
require 'acpc_dealer'
|
8
8
|
|
9
9
|
require 'acpc_poker_basic_proxy/communication_logic/action_sender'
|
data/spec/basic_proxy_spec.rb
CHANGED
@@ -19,10 +19,10 @@ describe BasicProxy do
|
|
19
19
|
port_number = 9001
|
20
20
|
host_name = 'localhost'
|
21
21
|
millisecond_response_timeout = 0
|
22
|
-
delaer_info =
|
23
|
-
@dealer_communicator = mock '
|
22
|
+
delaer_info = AcpcDealer::ConnectionInformation.new port_number, host_name, millisecond_response_timeout
|
23
|
+
@dealer_communicator = mock 'DealerStream'
|
24
24
|
|
25
|
-
|
25
|
+
DealerStream.expects(:new).once.with(port_number, host_name, millisecond_response_timeout).returns(@dealer_communicator)
|
26
26
|
|
27
27
|
@patient = BasicProxy.new delaer_info
|
28
28
|
end
|
data/spec/coverage/index.html
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
<img src="./assets/0.7.1/loading.gif" alt="loading"/>
|
15
15
|
</div>
|
16
16
|
<div id="wrapper" style="display:none;">
|
17
|
-
<div class="timestamp">Generated <abbr class="timeago" title="2013-05-
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2013-05-08T18:52:12-06:00">2013-05-08T18:52:12-06:00</abbr></div>
|
18
18
|
<ul class="group_tabs"></ul>
|
19
19
|
|
20
20
|
<div id="content">
|
@@ -24,17 +24,17 @@
|
|
24
24
|
(<span class="covered_percent"><span class="green">100.0%</span></span>
|
25
25
|
covered at
|
26
26
|
<span class="covered_strength">
|
27
|
-
<span class="
|
28
|
-
|
27
|
+
<span class="red">
|
28
|
+
0.0
|
29
29
|
</span>
|
30
30
|
</span> hits/line)
|
31
31
|
</h2>
|
32
32
|
<a name="AllFiles"></a>
|
33
33
|
<div>
|
34
|
-
<b>
|
35
|
-
<b>
|
36
|
-
<span class="green"><b>
|
37
|
-
<span class="red"><b>0</b> lines missed </span>
|
34
|
+
<b>0</b> files in total.
|
35
|
+
<b>0.0</b> relevant lines.
|
36
|
+
<span class="green"><b>0.0</b> lines covered</span> and
|
37
|
+
<span class="red"><b>0.0</b> lines missed </span>
|
38
38
|
</div>
|
39
39
|
<table class="file_list">
|
40
40
|
<thead>
|
@@ -50,46 +50,6 @@
|
|
50
50
|
</thead>
|
51
51
|
<tbody>
|
52
52
|
|
53
|
-
<tr>
|
54
|
-
<td class="strong"><a href="#6d7eac05018d7fba2ddcb5b6be6f51e3ce2e9a59" class="src_link" title="acpc_dealer_information_spec.rb">acpc_dealer_information_spec.rb</a></td>
|
55
|
-
<td class="green strong">100.0 %</td>
|
56
|
-
<td>10</td>
|
57
|
-
<td>5</td>
|
58
|
-
<td>5</td>
|
59
|
-
<td>0</td>
|
60
|
-
<td>1.0</td>
|
61
|
-
</tr>
|
62
|
-
|
63
|
-
<tr>
|
64
|
-
<td class="strong"><a href="#2dbea4ee5e8728a37f0ffe80b3d210c1c27ea88f" class="src_link" title="action_sender_spec.rb">action_sender_spec.rb</a></td>
|
65
|
-
<td class="green strong">100.0 %</td>
|
66
|
-
<td>91</td>
|
67
|
-
<td>48</td>
|
68
|
-
<td>48</td>
|
69
|
-
<td>0</td>
|
70
|
-
<td>932.6</td>
|
71
|
-
</tr>
|
72
|
-
|
73
|
-
<tr>
|
74
|
-
<td class="strong"><a href="#481520361b6598d44a41e4d9dd50099a0ffd76c9" class="src_link" title="basic_proxy_spec.rb">basic_proxy_spec.rb</a></td>
|
75
|
-
<td class="green strong">100.0 %</td>
|
76
|
-
<td>70</td>
|
77
|
-
<td>38</td>
|
78
|
-
<td>38</td>
|
79
|
-
<td>0</td>
|
80
|
-
<td>221.2</td>
|
81
|
-
</tr>
|
82
|
-
|
83
|
-
<tr>
|
84
|
-
<td class="strong"><a href="#9fc603b73eef7325707cdadffd0b52551b49e031" class="src_link" title="match_state_receiver_spec.rb">match_state_receiver_spec.rb</a></td>
|
85
|
-
<td class="green strong">100.0 %</td>
|
86
|
-
<td>38</td>
|
87
|
-
<td>17</td>
|
88
|
-
<td>17</td>
|
89
|
-
<td>0</td>
|
90
|
-
<td>838.3</td>
|
91
|
-
</tr>
|
92
|
-
|
93
53
|
</tbody>
|
94
54
|
</table>
|
95
55
|
</div>
|
@@ -106,1332 +66,6 @@
|
|
106
66
|
|
107
67
|
<div class="source_files">
|
108
68
|
|
109
|
-
<div class="source_table" id="6d7eac05018d7fba2ddcb5b6be6f51e3ce2e9a59">
|
110
|
-
<div class="header">
|
111
|
-
<h3>acpc_dealer_information_spec.rb</h3>
|
112
|
-
<h4><span class="green">100.0 %</span> covered</h4>
|
113
|
-
<div>
|
114
|
-
<b>5</b> relevant lines.
|
115
|
-
<span class="green"><b>5</b> lines covered</span> and
|
116
|
-
<span class="red"><b>0</b> lines missed.</span>
|
117
|
-
</div>
|
118
|
-
</div>
|
119
|
-
|
120
|
-
<pre>
|
121
|
-
<ol>
|
122
|
-
|
123
|
-
<li class="never" data-hits="" data-linenumber="1">
|
124
|
-
|
125
|
-
|
126
|
-
<code class="ruby"></code>
|
127
|
-
</li>
|
128
|
-
|
129
|
-
<li class="covered" data-hits="1" data-linenumber="2">
|
130
|
-
<span class="hits">1</span>
|
131
|
-
|
132
|
-
<code class="ruby">require_relative 'support/spec_helper'</code>
|
133
|
-
</li>
|
134
|
-
|
135
|
-
<li class="never" data-hits="" data-linenumber="3">
|
136
|
-
|
137
|
-
|
138
|
-
<code class="ruby"></code>
|
139
|
-
</li>
|
140
|
-
|
141
|
-
<li class="covered" data-hits="1" data-linenumber="4">
|
142
|
-
<span class="hits">1</span>
|
143
|
-
|
144
|
-
<code class="ruby">require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_information'</code>
|
145
|
-
</li>
|
146
|
-
|
147
|
-
<li class="never" data-hits="" data-linenumber="5">
|
148
|
-
|
149
|
-
|
150
|
-
<code class="ruby"></code>
|
151
|
-
</li>
|
152
|
-
|
153
|
-
<li class="covered" data-hits="1" data-linenumber="6">
|
154
|
-
<span class="hits">1</span>
|
155
|
-
|
156
|
-
<code class="ruby">describe AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerInformation do</code>
|
157
|
-
</li>
|
158
|
-
|
159
|
-
<li class="covered" data-hits="1" data-linenumber="7">
|
160
|
-
<span class="hits">1</span>
|
161
|
-
|
162
|
-
<code class="ruby"> it '' do</code>
|
163
|
-
</li>
|
164
|
-
|
165
|
-
<li class="covered" data-hits="1" data-linenumber="8">
|
166
|
-
<span class="hits">1</span>
|
167
|
-
|
168
|
-
<code class="ruby"> skip "Since this class only holds data right now, there's no need for tests"</code>
|
169
|
-
</li>
|
170
|
-
|
171
|
-
<li class="never" data-hits="" data-linenumber="9">
|
172
|
-
|
173
|
-
|
174
|
-
<code class="ruby"> end</code>
|
175
|
-
</li>
|
176
|
-
|
177
|
-
<li class="never" data-hits="" data-linenumber="10">
|
178
|
-
|
179
|
-
|
180
|
-
<code class="ruby">end</code>
|
181
|
-
</li>
|
182
|
-
|
183
|
-
</ol>
|
184
|
-
</pre>
|
185
|
-
</div>
|
186
|
-
|
187
|
-
<div class="source_table" id="2dbea4ee5e8728a37f0ffe80b3d210c1c27ea88f">
|
188
|
-
<div class="header">
|
189
|
-
<h3>action_sender_spec.rb</h3>
|
190
|
-
<h4><span class="green">100.0 %</span> covered</h4>
|
191
|
-
<div>
|
192
|
-
<b>48</b> relevant lines.
|
193
|
-
<span class="green"><b>48</b> lines covered</span> and
|
194
|
-
<span class="red"><b>0</b> lines missed.</span>
|
195
|
-
</div>
|
196
|
-
</div>
|
197
|
-
|
198
|
-
<pre>
|
199
|
-
<ol>
|
200
|
-
|
201
|
-
<li class="never" data-hits="" data-linenumber="1">
|
202
|
-
|
203
|
-
|
204
|
-
<code class="ruby"></code>
|
205
|
-
</li>
|
206
|
-
|
207
|
-
<li class="covered" data-hits="1" data-linenumber="2">
|
208
|
-
<span class="hits">1</span>
|
209
|
-
|
210
|
-
<code class="ruby">require_relative 'support/spec_helper'</code>
|
211
|
-
</li>
|
212
|
-
|
213
|
-
<li class="never" data-hits="" data-linenumber="3">
|
214
|
-
|
215
|
-
|
216
|
-
<code class="ruby"></code>
|
217
|
-
</li>
|
218
|
-
|
219
|
-
<li class="covered" data-hits="1" data-linenumber="4">
|
220
|
-
<span class="hits">1</span>
|
221
|
-
|
222
|
-
<code class="ruby">require 'acpc_poker_types/poker_action'</code>
|
223
|
-
</li>
|
224
|
-
|
225
|
-
<li class="covered" data-hits="1" data-linenumber="5">
|
226
|
-
<span class="hits">1</span>
|
227
|
-
|
228
|
-
<code class="ruby">require 'acpc_poker_types/match_state'</code>
|
229
|
-
</li>
|
230
|
-
|
231
|
-
<li class="covered" data-hits="1" data-linenumber="6">
|
232
|
-
<span class="hits">1</span>
|
233
|
-
|
234
|
-
<code class="ruby">require 'acpc_poker_types/acpc_dealer_data/poker_match_data'</code>
|
235
|
-
</li>
|
236
|
-
|
237
|
-
<li class="covered" data-hits="1" data-linenumber="7">
|
238
|
-
<span class="hits">1</span>
|
239
|
-
|
240
|
-
<code class="ruby">require 'acpc_dealer'</code>
|
241
|
-
</li>
|
242
|
-
|
243
|
-
<li class="never" data-hits="" data-linenumber="8">
|
244
|
-
|
245
|
-
|
246
|
-
<code class="ruby"></code>
|
247
|
-
</li>
|
248
|
-
|
249
|
-
<li class="covered" data-hits="1" data-linenumber="9">
|
250
|
-
<span class="hits">1</span>
|
251
|
-
|
252
|
-
<code class="ruby">require 'acpc_poker_basic_proxy/communication_logic/action_sender'</code>
|
253
|
-
</li>
|
254
|
-
|
255
|
-
<li class="never" data-hits="" data-linenumber="10">
|
256
|
-
|
257
|
-
|
258
|
-
<code class="ruby"></code>
|
259
|
-
</li>
|
260
|
-
|
261
|
-
<li class="covered" data-hits="1" data-linenumber="11">
|
262
|
-
<span class="hits">1</span>
|
263
|
-
|
264
|
-
<code class="ruby">include AcpcPokerBasicProxy::CommunicationLogic</code>
|
265
|
-
</li>
|
266
|
-
|
267
|
-
<li class="covered" data-hits="1" data-linenumber="12">
|
268
|
-
<span class="hits">1</span>
|
269
|
-
|
270
|
-
<code class="ruby">include AcpcPokerTypes</code>
|
271
|
-
</li>
|
272
|
-
|
273
|
-
<li class="never" data-hits="" data-linenumber="13">
|
274
|
-
|
275
|
-
|
276
|
-
<code class="ruby"></code>
|
277
|
-
</li>
|
278
|
-
|
279
|
-
<li class="covered" data-hits="1" data-linenumber="14">
|
280
|
-
<span class="hits">1</span>
|
281
|
-
|
282
|
-
<code class="ruby">describe ActionSender do</code>
|
283
|
-
</li>
|
284
|
-
|
285
|
-
<li class="covered" data-hits="1" data-linenumber="15">
|
286
|
-
<span class="hits">1</span>
|
287
|
-
|
288
|
-
<code class="ruby"> before(:each) do</code>
|
289
|
-
</li>
|
290
|
-
|
291
|
-
<li class="covered" data-hits="6" data-linenumber="16">
|
292
|
-
<span class="hits">6</span>
|
293
|
-
|
294
|
-
<code class="ruby"> @connection = MiniTest::Mock.new</code>
|
295
|
-
</li>
|
296
|
-
|
297
|
-
<li class="covered" data-hits="6" data-linenumber="17">
|
298
|
-
<span class="hits">6</span>
|
299
|
-
|
300
|
-
<code class="ruby"> @match_state = AcpcDealerData::PokerMatchData.parse_files(</code>
|
301
|
-
</li>
|
302
|
-
|
303
|
-
<li class="never" data-hits="" data-linenumber="18">
|
304
|
-
|
305
|
-
|
306
|
-
<code class="ruby"> match_logs[0].actions_file_path,</code>
|
307
|
-
</li>
|
308
|
-
|
309
|
-
<li class="never" data-hits="" data-linenumber="19">
|
310
|
-
|
311
|
-
|
312
|
-
<code class="ruby"> match_logs[0].results_file_path,</code>
|
313
|
-
</li>
|
314
|
-
|
315
|
-
<li class="never" data-hits="" data-linenumber="20">
|
316
|
-
|
317
|
-
|
318
|
-
<code class="ruby"> match_logs[0].player_names,</code>
|
319
|
-
</li>
|
320
|
-
|
321
|
-
<li class="never" data-hits="" data-linenumber="21">
|
322
|
-
|
323
|
-
|
324
|
-
<code class="ruby"> AcpcDealer::DEALER_DIRECTORY,</code>
|
325
|
-
</li>
|
326
|
-
|
327
|
-
<li class="never" data-hits="" data-linenumber="22">
|
328
|
-
|
329
|
-
|
330
|
-
<code class="ruby"> 1</code>
|
331
|
-
</li>
|
332
|
-
|
333
|
-
<li class="never" data-hits="" data-linenumber="23">
|
334
|
-
|
335
|
-
|
336
|
-
<code class="ruby"> ).data[0].data[0].action_message.state</code>
|
337
|
-
</li>
|
338
|
-
|
339
|
-
<li class="never" data-hits="" data-linenumber="24">
|
340
|
-
|
341
|
-
|
342
|
-
<code class="ruby"> end</code>
|
343
|
-
</li>
|
344
|
-
|
345
|
-
<li class="never" data-hits="" data-linenumber="25">
|
346
|
-
|
347
|
-
|
348
|
-
<code class="ruby"></code>
|
349
|
-
</li>
|
350
|
-
|
351
|
-
<li class="covered" data-hits="1" data-linenumber="26">
|
352
|
-
<span class="hits">1</span>
|
353
|
-
|
354
|
-
<code class="ruby"> describe "#send_action" do</code>
|
355
|
-
</li>
|
356
|
-
|
357
|
-
<li class="covered" data-hits="1" data-linenumber="27">
|
358
|
-
<span class="hits">1</span>
|
359
|
-
|
360
|
-
<code class="ruby"> it 'does not send an illegal action and raises an exception' do</code>
|
361
|
-
</li>
|
362
|
-
|
363
|
-
<li class="never" data-hits="" data-linenumber="28">
|
364
|
-
|
365
|
-
|
366
|
-
<code class="ruby"> -> do</code>
|
367
|
-
</li>
|
368
|
-
|
369
|
-
<li class="covered" data-hits="1" data-linenumber="29">
|
370
|
-
<span class="hits">1</span>
|
371
|
-
|
372
|
-
<code class="ruby"> ActionSender.send_action(@connection, @match_state, 'illegal action format')</code>
|
373
|
-
</li>
|
374
|
-
|
375
|
-
<li class="covered" data-hits="1" data-linenumber="30">
|
376
|
-
<span class="hits">1</span>
|
377
|
-
|
378
|
-
<code class="ruby"> end.must_raise ActionSender::IllegalActionFormat</code>
|
379
|
-
</li>
|
380
|
-
|
381
|
-
<li class="never" data-hits="" data-linenumber="31">
|
382
|
-
|
383
|
-
|
384
|
-
<code class="ruby"> end</code>
|
385
|
-
</li>
|
386
|
-
|
387
|
-
<li class="covered" data-hits="1" data-linenumber="32">
|
388
|
-
<span class="hits">1</span>
|
389
|
-
|
390
|
-
<code class="ruby"> it 'raises an exception if the given match state does not have the proper format' do</code>
|
391
|
-
</li>
|
392
|
-
|
393
|
-
<li class="never" data-hits="" data-linenumber="33">
|
394
|
-
|
395
|
-
|
396
|
-
<code class="ruby"> -> do</code>
|
397
|
-
</li>
|
398
|
-
|
399
|
-
<li class="covered" data-hits="1" data-linenumber="34">
|
400
|
-
<span class="hits">1</span>
|
401
|
-
|
402
|
-
<code class="ruby"> ActionSender.send_action(@connection, 'illegal match state format', PokerAction::CALL)</code>
|
403
|
-
</li>
|
404
|
-
|
405
|
-
<li class="covered" data-hits="1" data-linenumber="35">
|
406
|
-
<span class="hits">1</span>
|
407
|
-
|
408
|
-
<code class="ruby"> end.must_raise MatchState::IncompleteMatchState</code>
|
409
|
-
</li>
|
410
|
-
|
411
|
-
<li class="never" data-hits="" data-linenumber="36">
|
412
|
-
|
413
|
-
|
414
|
-
<code class="ruby"> end</code>
|
415
|
-
</li>
|
416
|
-
|
417
|
-
<li class="covered" data-hits="1" data-linenumber="37">
|
418
|
-
<span class="hits">1</span>
|
419
|
-
|
420
|
-
<code class="ruby"> it 'can send all legal actions through the provided connection without a modifier' do</code>
|
421
|
-
</li>
|
422
|
-
|
423
|
-
<li class="covered" data-hits="1" data-linenumber="38">
|
424
|
-
<span class="hits">1</span>
|
425
|
-
|
426
|
-
<code class="ruby"> PokerAction::ACTIONS.each do |action|</code>
|
427
|
-
</li>
|
428
|
-
|
429
|
-
<li class="covered" data-hits="5" data-linenumber="39">
|
430
|
-
<span class="hits">5</span>
|
431
|
-
|
432
|
-
<code class="ruby"> action_that_should_be_sent = @match_state.to_s + ":#{action}"</code>
|
433
|
-
</li>
|
434
|
-
|
435
|
-
<li class="covered" data-hits="5" data-linenumber="40">
|
436
|
-
<span class="hits">5</span>
|
437
|
-
|
438
|
-
<code class="ruby"> @connection.expect :write, nil, [action_that_should_be_sent]</code>
|
439
|
-
</li>
|
440
|
-
|
441
|
-
<li class="never" data-hits="" data-linenumber="41">
|
442
|
-
|
443
|
-
|
444
|
-
<code class="ruby"></code>
|
445
|
-
</li>
|
446
|
-
|
447
|
-
<li class="covered" data-hits="5" data-linenumber="42">
|
448
|
-
<span class="hits">5</span>
|
449
|
-
|
450
|
-
<code class="ruby"> ActionSender.send_action @connection, @match_state, action</code>
|
451
|
-
</li>
|
452
|
-
|
453
|
-
<li class="never" data-hits="" data-linenumber="43">
|
454
|
-
|
455
|
-
|
456
|
-
<code class="ruby"> end</code>
|
457
|
-
</li>
|
458
|
-
|
459
|
-
<li class="never" data-hits="" data-linenumber="44">
|
460
|
-
|
461
|
-
|
462
|
-
<code class="ruby"> end</code>
|
463
|
-
</li>
|
464
|
-
|
465
|
-
<li class="covered" data-hits="1" data-linenumber="45">
|
466
|
-
<span class="hits">1</span>
|
467
|
-
|
468
|
-
<code class="ruby"> it 'does not send legal unmodifiable actions that have a modifier and raises an exception' do</code>
|
469
|
-
</li>
|
470
|
-
|
471
|
-
<li class="covered" data-hits="1" data-linenumber="46">
|
472
|
-
<span class="hits">1</span>
|
473
|
-
|
474
|
-
<code class="ruby"> (PokerAction::ACTIONS - PokerAction::MODIFIABLE_ACTIONS).each do |unmodifiable_action|</code>
|
475
|
-
</li>
|
476
|
-
|
477
|
-
<li class="never" data-hits="" data-linenumber="47">
|
478
|
-
|
479
|
-
|
480
|
-
<code class="ruby"> -> do</code>
|
481
|
-
</li>
|
482
|
-
|
483
|
-
<li class="covered" data-hits="3" data-linenumber="48">
|
484
|
-
<span class="hits">3</span>
|
485
|
-
|
486
|
-
<code class="ruby"> ActionSender.send_action(@connection, @match_state, unmodifiable_action + 9001.to_s)</code>
|
487
|
-
</li>
|
488
|
-
|
489
|
-
<li class="covered" data-hits="3" data-linenumber="49">
|
490
|
-
<span class="hits">3</span>
|
491
|
-
|
492
|
-
<code class="ruby"> end.must_raise ActionSender::IllegalActionFormat</code>
|
493
|
-
</li>
|
494
|
-
|
495
|
-
<li class="never" data-hits="" data-linenumber="50">
|
496
|
-
|
497
|
-
|
498
|
-
<code class="ruby"> end</code>
|
499
|
-
</li>
|
500
|
-
|
501
|
-
<li class="never" data-hits="" data-linenumber="51">
|
502
|
-
|
503
|
-
|
504
|
-
<code class="ruby"> end</code>
|
505
|
-
</li>
|
506
|
-
|
507
|
-
<li class="covered" data-hits="1" data-linenumber="52">
|
508
|
-
<span class="hits">1</span>
|
509
|
-
|
510
|
-
<code class="ruby"> it 'can send all legal modifiable actions through the provided connection with a modifier' do</code>
|
511
|
-
</li>
|
512
|
-
|
513
|
-
<li class="covered" data-hits="1" data-linenumber="53">
|
514
|
-
<span class="hits">1</span>
|
515
|
-
|
516
|
-
<code class="ruby"> PokerAction::MODIFIABLE_ACTIONS.each do |action|</code>
|
517
|
-
</li>
|
518
|
-
|
519
|
-
<li class="covered" data-hits="2" data-linenumber="54">
|
520
|
-
<span class="hits">2</span>
|
521
|
-
|
522
|
-
<code class="ruby"> arbitrary_modifier = 9001</code>
|
523
|
-
</li>
|
524
|
-
|
525
|
-
<li class="covered" data-hits="2" data-linenumber="55">
|
526
|
-
<span class="hits">2</span>
|
527
|
-
|
528
|
-
<code class="ruby"> action_string = action + arbitrary_modifier.to_s</code>
|
529
|
-
</li>
|
530
|
-
|
531
|
-
<li class="covered" data-hits="2" data-linenumber="56">
|
532
|
-
<span class="hits">2</span>
|
533
|
-
|
534
|
-
<code class="ruby"> action_that_should_be_sent = @match_state.to_s + ":#{action_string}"</code>
|
535
|
-
</li>
|
536
|
-
|
537
|
-
<li class="covered" data-hits="2" data-linenumber="57">
|
538
|
-
<span class="hits">2</span>
|
539
|
-
|
540
|
-
<code class="ruby"> @connection.expect :write, nil, [action_that_should_be_sent]</code>
|
541
|
-
</li>
|
542
|
-
|
543
|
-
<li class="never" data-hits="" data-linenumber="58">
|
544
|
-
|
545
|
-
|
546
|
-
<code class="ruby"></code>
|
547
|
-
</li>
|
548
|
-
|
549
|
-
<li class="covered" data-hits="2" data-linenumber="59">
|
550
|
-
<span class="hits">2</span>
|
551
|
-
|
552
|
-
<code class="ruby"> ActionSender.send_action @connection, @match_state, action_string</code>
|
553
|
-
</li>
|
554
|
-
|
555
|
-
<li class="never" data-hits="" data-linenumber="60">
|
556
|
-
|
557
|
-
|
558
|
-
<code class="ruby"> end</code>
|
559
|
-
</li>
|
560
|
-
|
561
|
-
<li class="never" data-hits="" data-linenumber="61">
|
562
|
-
|
563
|
-
|
564
|
-
<code class="ruby"> end</code>
|
565
|
-
</li>
|
566
|
-
|
567
|
-
<li class="covered" data-hits="1" data-linenumber="62">
|
568
|
-
<span class="hits">1</span>
|
569
|
-
|
570
|
-
<code class="ruby"> it 'works for all test data examples' do</code>
|
571
|
-
</li>
|
572
|
-
|
573
|
-
<li class="covered" data-hits="1" data-linenumber="63">
|
574
|
-
<span class="hits">1</span>
|
575
|
-
|
576
|
-
<code class="ruby"> match_logs.each do |log_description|</code>
|
577
|
-
</li>
|
578
|
-
|
579
|
-
<li class="covered" data-hits="4" data-linenumber="64">
|
580
|
-
<span class="hits">4</span>
|
581
|
-
|
582
|
-
<code class="ruby"> match = AcpcDealerData::PokerMatchData.parse_files(</code>
|
583
|
-
</li>
|
584
|
-
|
585
|
-
<li class="never" data-hits="" data-linenumber="65">
|
586
|
-
|
587
|
-
|
588
|
-
<code class="ruby"> log_description.actions_file_path,</code>
|
589
|
-
</li>
|
590
|
-
|
591
|
-
<li class="never" data-hits="" data-linenumber="66">
|
592
|
-
|
593
|
-
|
594
|
-
<code class="ruby"> log_description.results_file_path,</code>
|
595
|
-
</li>
|
596
|
-
|
597
|
-
<li class="never" data-hits="" data-linenumber="67">
|
598
|
-
|
599
|
-
|
600
|
-
<code class="ruby"> log_description.player_names,</code>
|
601
|
-
</li>
|
602
|
-
|
603
|
-
<li class="never" data-hits="" data-linenumber="68">
|
604
|
-
|
605
|
-
|
606
|
-
<code class="ruby"> AcpcDealer::DEALER_DIRECTORY,</code>
|
607
|
-
</li>
|
608
|
-
|
609
|
-
<li class="never" data-hits="" data-linenumber="69">
|
610
|
-
|
611
|
-
|
612
|
-
<code class="ruby"> 60</code>
|
613
|
-
</li>
|
614
|
-
|
615
|
-
<li class="never" data-hits="" data-linenumber="70">
|
616
|
-
|
617
|
-
|
618
|
-
<code class="ruby"> )</code>
|
619
|
-
</li>
|
620
|
-
|
621
|
-
<li class="covered" data-hits="4" data-linenumber="71">
|
622
|
-
<span class="hits">4</span>
|
623
|
-
|
624
|
-
<code class="ruby"> match.for_every_seat! do |seat|</code>
|
625
|
-
</li>
|
626
|
-
|
627
|
-
<li class="covered" data-hits="10" data-linenumber="72">
|
628
|
-
<span class="hits">10</span>
|
629
|
-
|
630
|
-
<code class="ruby"> match.for_every_hand! do</code>
|
631
|
-
</li>
|
632
|
-
|
633
|
-
<li class="covered" data-hits="600" data-linenumber="73">
|
634
|
-
<span class="hits">600</span>
|
635
|
-
|
636
|
-
<code class="ruby"> match.for_every_turn! do</code>
|
637
|
-
</li>
|
638
|
-
|
639
|
-
<li class="covered" data-hits="6811" data-linenumber="74">
|
640
|
-
<span class="hits">6811</span>
|
641
|
-
|
642
|
-
<code class="ruby"> next unless match.current_hand.next_action</code>
|
643
|
-
</li>
|
644
|
-
|
645
|
-
<li class="never" data-hits="" data-linenumber="75">
|
646
|
-
|
647
|
-
|
648
|
-
<code class="ruby"></code>
|
649
|
-
</li>
|
650
|
-
|
651
|
-
<li class="covered" data-hits="6211" data-linenumber="76">
|
652
|
-
<span class="hits">6211</span>
|
653
|
-
|
654
|
-
<code class="ruby"> from_player_message = match.current_hand.next_action.state</code>
|
655
|
-
</li>
|
656
|
-
|
657
|
-
<li class="covered" data-hits="6211" data-linenumber="77">
|
658
|
-
<span class="hits">6211</span>
|
659
|
-
|
660
|
-
<code class="ruby"> seat_taking_action = match.current_hand.next_action.seat</code>
|
661
|
-
</li>
|
662
|
-
|
663
|
-
<li class="covered" data-hits="6211" data-linenumber="78">
|
664
|
-
<span class="hits">6211</span>
|
665
|
-
|
666
|
-
<code class="ruby"> action = match.current_hand.next_action.action</code>
|
667
|
-
</li>
|
668
|
-
|
669
|
-
<li class="never" data-hits="" data-linenumber="79">
|
670
|
-
|
671
|
-
|
672
|
-
<code class="ruby"></code>
|
673
|
-
</li>
|
674
|
-
|
675
|
-
<li class="covered" data-hits="6211" data-linenumber="80">
|
676
|
-
<span class="hits">6211</span>
|
677
|
-
|
678
|
-
<code class="ruby"> action_that_should_be_sent = "#{from_player_message.to_s}:#{action.to_acpc}"</code>
|
679
|
-
</li>
|
680
|
-
|
681
|
-
<li class="never" data-hits="" data-linenumber="81">
|
682
|
-
|
683
|
-
|
684
|
-
<code class="ruby"></code>
|
685
|
-
</li>
|
686
|
-
|
687
|
-
<li class="covered" data-hits="6211" data-linenumber="82">
|
688
|
-
<span class="hits">6211</span>
|
689
|
-
|
690
|
-
<code class="ruby"> @connection.expect :write, nil, [action_that_should_be_sent]</code>
|
691
|
-
</li>
|
692
|
-
|
693
|
-
<li class="never" data-hits="" data-linenumber="83">
|
694
|
-
|
695
|
-
|
696
|
-
<code class="ruby"></code>
|
697
|
-
</li>
|
698
|
-
|
699
|
-
<li class="covered" data-hits="6211" data-linenumber="84">
|
700
|
-
<span class="hits">6211</span>
|
701
|
-
|
702
|
-
<code class="ruby"> ActionSender.send_action @connection, from_player_message, action</code>
|
703
|
-
</li>
|
704
|
-
|
705
|
-
<li class="never" data-hits="" data-linenumber="85">
|
706
|
-
|
707
|
-
|
708
|
-
<code class="ruby"> end</code>
|
709
|
-
</li>
|
710
|
-
|
711
|
-
<li class="never" data-hits="" data-linenumber="86">
|
712
|
-
|
713
|
-
|
714
|
-
<code class="ruby"> end</code>
|
715
|
-
</li>
|
716
|
-
|
717
|
-
<li class="never" data-hits="" data-linenumber="87">
|
718
|
-
|
719
|
-
|
720
|
-
<code class="ruby"> end</code>
|
721
|
-
</li>
|
722
|
-
|
723
|
-
<li class="never" data-hits="" data-linenumber="88">
|
724
|
-
|
725
|
-
|
726
|
-
<code class="ruby"> end</code>
|
727
|
-
</li>
|
728
|
-
|
729
|
-
<li class="never" data-hits="" data-linenumber="89">
|
730
|
-
|
731
|
-
|
732
|
-
<code class="ruby"> end</code>
|
733
|
-
</li>
|
734
|
-
|
735
|
-
<li class="never" data-hits="" data-linenumber="90">
|
736
|
-
|
737
|
-
|
738
|
-
<code class="ruby"> end</code>
|
739
|
-
</li>
|
740
|
-
|
741
|
-
<li class="never" data-hits="" data-linenumber="91">
|
742
|
-
|
743
|
-
|
744
|
-
<code class="ruby">end</code>
|
745
|
-
</li>
|
746
|
-
|
747
|
-
</ol>
|
748
|
-
</pre>
|
749
|
-
</div>
|
750
|
-
|
751
|
-
<div class="source_table" id="481520361b6598d44a41e4d9dd50099a0ffd76c9">
|
752
|
-
<div class="header">
|
753
|
-
<h3>basic_proxy_spec.rb</h3>
|
754
|
-
<h4><span class="green">100.0 %</span> covered</h4>
|
755
|
-
<div>
|
756
|
-
<b>38</b> relevant lines.
|
757
|
-
<span class="green"><b>38</b> lines covered</span> and
|
758
|
-
<span class="red"><b>0</b> lines missed.</span>
|
759
|
-
</div>
|
760
|
-
</div>
|
761
|
-
|
762
|
-
<pre>
|
763
|
-
<ol>
|
764
|
-
|
765
|
-
<li class="never" data-hits="" data-linenumber="1">
|
766
|
-
|
767
|
-
|
768
|
-
<code class="ruby"></code>
|
769
|
-
</li>
|
770
|
-
|
771
|
-
<li class="covered" data-hits="1" data-linenumber="2">
|
772
|
-
<span class="hits">1</span>
|
773
|
-
|
774
|
-
<code class="ruby">require_relative 'support/spec_helper'</code>
|
775
|
-
</li>
|
776
|
-
|
777
|
-
<li class="never" data-hits="" data-linenumber="3">
|
778
|
-
|
779
|
-
|
780
|
-
<code class="ruby"></code>
|
781
|
-
</li>
|
782
|
-
|
783
|
-
<li class="covered" data-hits="1" data-linenumber="4">
|
784
|
-
<span class="hits">1</span>
|
785
|
-
|
786
|
-
<code class="ruby">require 'acpc_poker_types/match_state'</code>
|
787
|
-
</li>
|
788
|
-
|
789
|
-
<li class="covered" data-hits="1" data-linenumber="5">
|
790
|
-
<span class="hits">1</span>
|
791
|
-
|
792
|
-
<code class="ruby">require 'acpc_poker_types/poker_action'</code>
|
793
|
-
</li>
|
794
|
-
|
795
|
-
<li class="covered" data-hits="1" data-linenumber="6">
|
796
|
-
<span class="hits">1</span>
|
797
|
-
|
798
|
-
<code class="ruby">require 'acpc_poker_types/acpc_dealer_data/poker_match_data'</code>
|
799
|
-
</li>
|
800
|
-
|
801
|
-
<li class="covered" data-hits="1" data-linenumber="7">
|
802
|
-
<span class="hits">1</span>
|
803
|
-
|
804
|
-
<code class="ruby">require 'acpc_dealer'</code>
|
805
|
-
</li>
|
806
|
-
|
807
|
-
<li class="never" data-hits="" data-linenumber="8">
|
808
|
-
|
809
|
-
|
810
|
-
<code class="ruby"></code>
|
811
|
-
</li>
|
812
|
-
|
813
|
-
<li class="covered" data-hits="1" data-linenumber="9">
|
814
|
-
<span class="hits">1</span>
|
815
|
-
|
816
|
-
<code class="ruby">require 'acpc_poker_basic_proxy/basic_proxy'</code>
|
817
|
-
</li>
|
818
|
-
|
819
|
-
<li class="covered" data-hits="1" data-linenumber="10">
|
820
|
-
<span class="hits">1</span>
|
821
|
-
|
822
|
-
<code class="ruby">require 'acpc_poker_basic_proxy/communication_logic/action_sender'</code>
|
823
|
-
</li>
|
824
|
-
|
825
|
-
<li class="never" data-hits="" data-linenumber="11">
|
826
|
-
|
827
|
-
|
828
|
-
<code class="ruby"></code>
|
829
|
-
</li>
|
830
|
-
|
831
|
-
<li class="covered" data-hits="1" data-linenumber="12">
|
832
|
-
<span class="hits">1</span>
|
833
|
-
|
834
|
-
<code class="ruby">include AcpcPokerBasicProxy</code>
|
835
|
-
</li>
|
836
|
-
|
837
|
-
<li class="covered" data-hits="1" data-linenumber="13">
|
838
|
-
<span class="hits">1</span>
|
839
|
-
|
840
|
-
<code class="ruby">include AcpcPokerTypes</code>
|
841
|
-
</li>
|
842
|
-
|
843
|
-
<li class="covered" data-hits="1" data-linenumber="14">
|
844
|
-
<span class="hits">1</span>
|
845
|
-
|
846
|
-
<code class="ruby">include CommunicationLogic</code>
|
847
|
-
</li>
|
848
|
-
|
849
|
-
<li class="covered" data-hits="1" data-linenumber="15">
|
850
|
-
<span class="hits">1</span>
|
851
|
-
|
852
|
-
<code class="ruby">include AcpcDealerData</code>
|
853
|
-
</li>
|
854
|
-
|
855
|
-
<li class="never" data-hits="" data-linenumber="16">
|
856
|
-
|
857
|
-
|
858
|
-
<code class="ruby"></code>
|
859
|
-
</li>
|
860
|
-
|
861
|
-
<li class="covered" data-hits="1" data-linenumber="17">
|
862
|
-
<span class="hits">1</span>
|
863
|
-
|
864
|
-
<code class="ruby">describe BasicProxy do</code>
|
865
|
-
</li>
|
866
|
-
|
867
|
-
<li class="covered" data-hits="1" data-linenumber="18">
|
868
|
-
<span class="hits">1</span>
|
869
|
-
|
870
|
-
<code class="ruby"> before(:each) do</code>
|
871
|
-
</li>
|
872
|
-
|
873
|
-
<li class="covered" data-hits="2" data-linenumber="19">
|
874
|
-
<span class="hits">2</span>
|
875
|
-
|
876
|
-
<code class="ruby"> port_number = 9001</code>
|
877
|
-
</li>
|
878
|
-
|
879
|
-
<li class="covered" data-hits="2" data-linenumber="20">
|
880
|
-
<span class="hits">2</span>
|
881
|
-
|
882
|
-
<code class="ruby"> host_name = 'localhost'</code>
|
883
|
-
</li>
|
884
|
-
|
885
|
-
<li class="covered" data-hits="2" data-linenumber="21">
|
886
|
-
<span class="hits">2</span>
|
887
|
-
|
888
|
-
<code class="ruby"> millisecond_response_timeout = 0</code>
|
889
|
-
</li>
|
890
|
-
|
891
|
-
<li class="covered" data-hits="2" data-linenumber="22">
|
892
|
-
<span class="hits">2</span>
|
893
|
-
|
894
|
-
<code class="ruby"> delaer_info = AcpcDealerInformation.new host_name, port_number, millisecond_response_timeout</code>
|
895
|
-
</li>
|
896
|
-
|
897
|
-
<li class="covered" data-hits="2" data-linenumber="23">
|
898
|
-
<span class="hits">2</span>
|
899
|
-
|
900
|
-
<code class="ruby"> @dealer_communicator = mock 'AcpcDealerCommunicator'</code>
|
901
|
-
</li>
|
902
|
-
|
903
|
-
<li class="never" data-hits="" data-linenumber="24">
|
904
|
-
|
905
|
-
|
906
|
-
<code class="ruby"></code>
|
907
|
-
</li>
|
908
|
-
|
909
|
-
<li class="covered" data-hits="2" data-linenumber="25">
|
910
|
-
<span class="hits">2</span>
|
911
|
-
|
912
|
-
<code class="ruby"> AcpcDealerCommunicator.expects(:new).once.with(port_number, host_name, millisecond_response_timeout).returns(@dealer_communicator)</code>
|
913
|
-
</li>
|
914
|
-
|
915
|
-
<li class="never" data-hits="" data-linenumber="26">
|
916
|
-
|
917
|
-
|
918
|
-
<code class="ruby"></code>
|
919
|
-
</li>
|
920
|
-
|
921
|
-
<li class="covered" data-hits="2" data-linenumber="27">
|
922
|
-
<span class="hits">2</span>
|
923
|
-
|
924
|
-
<code class="ruby"> @patient = BasicProxy.new delaer_info</code>
|
925
|
-
</li>
|
926
|
-
|
927
|
-
<li class="never" data-hits="" data-linenumber="28">
|
928
|
-
|
929
|
-
|
930
|
-
<code class="ruby"> end</code>
|
931
|
-
</li>
|
932
|
-
|
933
|
-
<li class="never" data-hits="" data-linenumber="29">
|
934
|
-
|
935
|
-
|
936
|
-
<code class="ruby"></code>
|
937
|
-
</li>
|
938
|
-
|
939
|
-
<li class="covered" data-hits="1" data-linenumber="30">
|
940
|
-
<span class="hits">1</span>
|
941
|
-
|
942
|
-
<code class="ruby"> it 'given a sequence of match states and actions, it properly sends and receives them' do</code>
|
943
|
-
</li>
|
944
|
-
|
945
|
-
<li class="covered" data-hits="1" data-linenumber="31">
|
946
|
-
<span class="hits">1</span>
|
947
|
-
|
948
|
-
<code class="ruby"> match_logs.each do |log_description|</code>
|
949
|
-
</li>
|
950
|
-
|
951
|
-
<li class="covered" data-hits="4" data-linenumber="32">
|
952
|
-
<span class="hits">4</span>
|
953
|
-
|
954
|
-
<code class="ruby"> match = PokerMatchData.parse_files(</code>
|
955
|
-
</li>
|
956
|
-
|
957
|
-
<li class="never" data-hits="" data-linenumber="33">
|
958
|
-
|
959
|
-
|
960
|
-
<code class="ruby"> log_description.actions_file_path,</code>
|
961
|
-
</li>
|
962
|
-
|
963
|
-
<li class="never" data-hits="" data-linenumber="34">
|
964
|
-
|
965
|
-
|
966
|
-
<code class="ruby"> log_description.results_file_path,</code>
|
967
|
-
</li>
|
968
|
-
|
969
|
-
<li class="never" data-hits="" data-linenumber="35">
|
970
|
-
|
971
|
-
|
972
|
-
<code class="ruby"> log_description.player_names,</code>
|
973
|
-
</li>
|
974
|
-
|
975
|
-
<li class="never" data-hits="" data-linenumber="36">
|
976
|
-
|
977
|
-
|
978
|
-
<code class="ruby"> AcpcDealer::DEALER_DIRECTORY,</code>
|
979
|
-
</li>
|
980
|
-
|
981
|
-
<li class="never" data-hits="" data-linenumber="37">
|
982
|
-
|
983
|
-
|
984
|
-
<code class="ruby"> 10</code>
|
985
|
-
</li>
|
986
|
-
|
987
|
-
<li class="never" data-hits="" data-linenumber="38">
|
988
|
-
|
989
|
-
|
990
|
-
<code class="ruby"> )</code>
|
991
|
-
</li>
|
992
|
-
|
993
|
-
<li class="covered" data-hits="4" data-linenumber="39">
|
994
|
-
<span class="hits">4</span>
|
995
|
-
|
996
|
-
<code class="ruby"> match.for_every_seat! do |seat|</code>
|
997
|
-
</li>
|
998
|
-
|
999
|
-
<li class="covered" data-hits="10" data-linenumber="40">
|
1000
|
-
<span class="hits">10</span>
|
1001
|
-
|
1002
|
-
<code class="ruby"> match.for_every_hand! do</code>
|
1003
|
-
</li>
|
1004
|
-
|
1005
|
-
<li class="covered" data-hits="100" data-linenumber="41">
|
1006
|
-
<span class="hits">100</span>
|
1007
|
-
|
1008
|
-
<code class="ruby"> match.for_every_turn! do</code>
|
1009
|
-
</li>
|
1010
|
-
|
1011
|
-
<li class="covered" data-hits="1232" data-linenumber="42">
|
1012
|
-
<span class="hits">1232</span>
|
1013
|
-
|
1014
|
-
<code class="ruby"> action = if match.current_hand.next_action</code>
|
1015
|
-
</li>
|
1016
|
-
|
1017
|
-
<li class="covered" data-hits="1132" data-linenumber="43">
|
1018
|
-
<span class="hits">1132</span>
|
1019
|
-
|
1020
|
-
<code class="ruby"> match.current_hand.next_action.action</code>
|
1021
|
-
</li>
|
1022
|
-
|
1023
|
-
<li class="never" data-hits="" data-linenumber="44">
|
1024
|
-
|
1025
|
-
|
1026
|
-
<code class="ruby"> else</code>
|
1027
|
-
</li>
|
1028
|
-
|
1029
|
-
<li class="covered" data-hits="100" data-linenumber="45">
|
1030
|
-
<span class="hits">100</span>
|
1031
|
-
|
1032
|
-
<code class="ruby"> nil</code>
|
1033
|
-
</li>
|
1034
|
-
|
1035
|
-
<li class="never" data-hits="" data-linenumber="46">
|
1036
|
-
|
1037
|
-
|
1038
|
-
<code class="ruby"> end</code>
|
1039
|
-
</li>
|
1040
|
-
|
1041
|
-
<li class="covered" data-hits="1232" data-linenumber="47">
|
1042
|
-
<span class="hits">1232</span>
|
1043
|
-
|
1044
|
-
<code class="ruby"> match_state = match.current_hand.current_match_state</code>
|
1045
|
-
</li>
|
1046
|
-
|
1047
|
-
<li class="never" data-hits="" data-linenumber="48">
|
1048
|
-
|
1049
|
-
|
1050
|
-
<code class="ruby"></code>
|
1051
|
-
</li>
|
1052
|
-
|
1053
|
-
<li class="covered" data-hits="1232" data-linenumber="49">
|
1054
|
-
<span class="hits">1232</span>
|
1055
|
-
|
1056
|
-
<code class="ruby"> @dealer_communicator.stubs(:gets).returns(match_state.to_s)</code>
|
1057
|
-
</li>
|
1058
|
-
|
1059
|
-
<li class="never" data-hits="" data-linenumber="50">
|
1060
|
-
|
1061
|
-
|
1062
|
-
<code class="ruby"></code>
|
1063
|
-
</li>
|
1064
|
-
|
1065
|
-
<li class="covered" data-hits="1232" data-linenumber="51">
|
1066
|
-
<span class="hits">1232</span>
|
1067
|
-
|
1068
|
-
<code class="ruby"> @patient.receive_match_state!.must_equal match_state</code>
|
1069
|
-
</li>
|
1070
|
-
|
1071
|
-
<li class="never" data-hits="" data-linenumber="52">
|
1072
|
-
|
1073
|
-
|
1074
|
-
<code class="ruby"></code>
|
1075
|
-
</li>
|
1076
|
-
|
1077
|
-
<li class="covered" data-hits="1232" data-linenumber="53">
|
1078
|
-
<span class="hits">1232</span>
|
1079
|
-
|
1080
|
-
<code class="ruby"> if action && match_state == match.current_hand.next_action.state && match.current_hand.next_action.seat == seat</code>
|
1081
|
-
</li>
|
1082
|
-
|
1083
|
-
<li class="never" data-hits="" data-linenumber="54">
|
1084
|
-
|
1085
|
-
|
1086
|
-
<code class="ruby"></code>
|
1087
|
-
</li>
|
1088
|
-
|
1089
|
-
<li class="covered" data-hits="431" data-linenumber="55">
|
1090
|
-
<span class="hits">431</span>
|
1091
|
-
|
1092
|
-
<code class="ruby"> ActionSender.expects(:send_action).once.with(@dealer_communicator, match_state.to_s, action)</code>
|
1093
|
-
</li>
|
1094
|
-
|
1095
|
-
<li class="never" data-hits="" data-linenumber="56">
|
1096
|
-
|
1097
|
-
|
1098
|
-
<code class="ruby"></code>
|
1099
|
-
</li>
|
1100
|
-
|
1101
|
-
<li class="covered" data-hits="431" data-linenumber="57">
|
1102
|
-
<span class="hits">431</span>
|
1103
|
-
|
1104
|
-
<code class="ruby"> @patient.send_action(action)</code>
|
1105
|
-
</li>
|
1106
|
-
|
1107
|
-
<li class="never" data-hits="" data-linenumber="58">
|
1108
|
-
|
1109
|
-
|
1110
|
-
<code class="ruby"> end</code>
|
1111
|
-
</li>
|
1112
|
-
|
1113
|
-
<li class="never" data-hits="" data-linenumber="59">
|
1114
|
-
|
1115
|
-
|
1116
|
-
<code class="ruby"> end</code>
|
1117
|
-
</li>
|
1118
|
-
|
1119
|
-
<li class="never" data-hits="" data-linenumber="60">
|
1120
|
-
|
1121
|
-
|
1122
|
-
<code class="ruby"> end</code>
|
1123
|
-
</li>
|
1124
|
-
|
1125
|
-
<li class="never" data-hits="" data-linenumber="61">
|
1126
|
-
|
1127
|
-
|
1128
|
-
<code class="ruby"> end</code>
|
1129
|
-
</li>
|
1130
|
-
|
1131
|
-
<li class="never" data-hits="" data-linenumber="62">
|
1132
|
-
|
1133
|
-
|
1134
|
-
<code class="ruby"> end</code>
|
1135
|
-
</li>
|
1136
|
-
|
1137
|
-
<li class="never" data-hits="" data-linenumber="63">
|
1138
|
-
|
1139
|
-
|
1140
|
-
<code class="ruby"> end</code>
|
1141
|
-
</li>
|
1142
|
-
|
1143
|
-
<li class="never" data-hits="" data-linenumber="64">
|
1144
|
-
|
1145
|
-
|
1146
|
-
<code class="ruby"></code>
|
1147
|
-
</li>
|
1148
|
-
|
1149
|
-
<li class="covered" data-hits="1" data-linenumber="65">
|
1150
|
-
<span class="hits">1</span>
|
1151
|
-
|
1152
|
-
<code class="ruby"> describe '#send_action' do</code>
|
1153
|
-
</li>
|
1154
|
-
|
1155
|
-
<li class="covered" data-hits="1" data-linenumber="66">
|
1156
|
-
<span class="hits">1</span>
|
1157
|
-
|
1158
|
-
<code class="ruby"> it 'raises an exception if a match state was not received before an action was sent' do</code>
|
1159
|
-
</li>
|
1160
|
-
|
1161
|
-
<li class="covered" data-hits="2" data-linenumber="67">
|
1162
|
-
<span class="hits">2</span>
|
1163
|
-
|
1164
|
-
<code class="ruby"> -> {@patient.send_action(mock('PokerAction'))}.must_raise BasicProxy::InitialMatchStateNotYetReceived</code>
|
1165
|
-
</li>
|
1166
|
-
|
1167
|
-
<li class="never" data-hits="" data-linenumber="68">
|
1168
|
-
|
1169
|
-
|
1170
|
-
<code class="ruby"> end</code>
|
1171
|
-
</li>
|
1172
|
-
|
1173
|
-
<li class="never" data-hits="" data-linenumber="69">
|
1174
|
-
|
1175
|
-
|
1176
|
-
<code class="ruby"> end</code>
|
1177
|
-
</li>
|
1178
|
-
|
1179
|
-
<li class="never" data-hits="" data-linenumber="70">
|
1180
|
-
|
1181
|
-
|
1182
|
-
<code class="ruby">end</code>
|
1183
|
-
</li>
|
1184
|
-
|
1185
|
-
</ol>
|
1186
|
-
</pre>
|
1187
|
-
</div>
|
1188
|
-
|
1189
|
-
<div class="source_table" id="9fc603b73eef7325707cdadffd0b52551b49e031">
|
1190
|
-
<div class="header">
|
1191
|
-
<h3>match_state_receiver_spec.rb</h3>
|
1192
|
-
<h4><span class="green">100.0 %</span> covered</h4>
|
1193
|
-
<div>
|
1194
|
-
<b>17</b> relevant lines.
|
1195
|
-
<span class="green"><b>17</b> lines covered</span> and
|
1196
|
-
<span class="red"><b>0</b> lines missed.</span>
|
1197
|
-
</div>
|
1198
|
-
</div>
|
1199
|
-
|
1200
|
-
<pre>
|
1201
|
-
<ol>
|
1202
|
-
|
1203
|
-
<li class="never" data-hits="" data-linenumber="1">
|
1204
|
-
|
1205
|
-
|
1206
|
-
<code class="ruby"></code>
|
1207
|
-
</li>
|
1208
|
-
|
1209
|
-
<li class="covered" data-hits="1" data-linenumber="2">
|
1210
|
-
<span class="hits">1</span>
|
1211
|
-
|
1212
|
-
<code class="ruby">require_relative 'support/spec_helper'</code>
|
1213
|
-
</li>
|
1214
|
-
|
1215
|
-
<li class="never" data-hits="" data-linenumber="3">
|
1216
|
-
|
1217
|
-
|
1218
|
-
<code class="ruby"></code>
|
1219
|
-
</li>
|
1220
|
-
|
1221
|
-
<li class="covered" data-hits="1" data-linenumber="4">
|
1222
|
-
<span class="hits">1</span>
|
1223
|
-
|
1224
|
-
<code class="ruby">require 'acpc_dealer'</code>
|
1225
|
-
</li>
|
1226
|
-
|
1227
|
-
<li class="covered" data-hits="1" data-linenumber="5">
|
1228
|
-
<span class="hits">1</span>
|
1229
|
-
|
1230
|
-
<code class="ruby">require 'acpc_poker_types'</code>
|
1231
|
-
</li>
|
1232
|
-
|
1233
|
-
<li class="never" data-hits="" data-linenumber="6">
|
1234
|
-
|
1235
|
-
|
1236
|
-
<code class="ruby"></code>
|
1237
|
-
</li>
|
1238
|
-
|
1239
|
-
<li class="covered" data-hits="1" data-linenumber="7">
|
1240
|
-
<span class="hits">1</span>
|
1241
|
-
|
1242
|
-
<code class="ruby">require 'acpc_poker_basic_proxy/communication_logic/match_state_receiver'</code>
|
1243
|
-
</li>
|
1244
|
-
|
1245
|
-
<li class="covered" data-hits="1" data-linenumber="8">
|
1246
|
-
<span class="hits">1</span>
|
1247
|
-
|
1248
|
-
<code class="ruby">require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator'</code>
|
1249
|
-
</li>
|
1250
|
-
|
1251
|
-
<li class="never" data-hits="" data-linenumber="9">
|
1252
|
-
|
1253
|
-
|
1254
|
-
<code class="ruby"></code>
|
1255
|
-
</li>
|
1256
|
-
|
1257
|
-
<li class="covered" data-hits="1" data-linenumber="10">
|
1258
|
-
<span class="hits">1</span>
|
1259
|
-
|
1260
|
-
<code class="ruby">describe AcpcPokerBasicProxy::CommunicationLogic::MatchStateReceiver do</code>
|
1261
|
-
</li>
|
1262
|
-
|
1263
|
-
<li class="covered" data-hits="1" data-linenumber="11">
|
1264
|
-
<span class="hits">1</span>
|
1265
|
-
|
1266
|
-
<code class="ruby"> before(:each) do</code>
|
1267
|
-
</li>
|
1268
|
-
|
1269
|
-
<li class="covered" data-hits="1" data-linenumber="12">
|
1270
|
-
<span class="hits">1</span>
|
1271
|
-
|
1272
|
-
<code class="ruby"> @connection = MiniTest::Mock.new</code>
|
1273
|
-
</li>
|
1274
|
-
|
1275
|
-
<li class="never" data-hits="" data-linenumber="13">
|
1276
|
-
|
1277
|
-
|
1278
|
-
<code class="ruby"> end</code>
|
1279
|
-
</li>
|
1280
|
-
|
1281
|
-
<li class="never" data-hits="" data-linenumber="14">
|
1282
|
-
|
1283
|
-
|
1284
|
-
<code class="ruby"></code>
|
1285
|
-
</li>
|
1286
|
-
|
1287
|
-
<li class="covered" data-hits="1" data-linenumber="15">
|
1288
|
-
<span class="hits">1</span>
|
1289
|
-
|
1290
|
-
<code class="ruby"> describe "#receive_matchstate_string" do</code>
|
1291
|
-
</li>
|
1292
|
-
|
1293
|
-
<li class="covered" data-hits="1" data-linenumber="16">
|
1294
|
-
<span class="hits">1</span>
|
1295
|
-
|
1296
|
-
<code class="ruby"> it 'receives matchstate strings properly' do</code>
|
1297
|
-
</li>
|
1298
|
-
|
1299
|
-
<li class="covered" data-hits="1" data-linenumber="17">
|
1300
|
-
<span class="hits">1</span>
|
1301
|
-
|
1302
|
-
<code class="ruby"> match_logs.each do |log_description|</code>
|
1303
|
-
</li>
|
1304
|
-
|
1305
|
-
<li class="covered" data-hits="4" data-linenumber="18">
|
1306
|
-
<span class="hits">4</span>
|
1307
|
-
|
1308
|
-
<code class="ruby"> match = AcpcPokerTypes::AcpcDealerData::PokerMatchData.parse_files(</code>
|
1309
|
-
</li>
|
1310
|
-
|
1311
|
-
<li class="never" data-hits="" data-linenumber="19">
|
1312
|
-
|
1313
|
-
|
1314
|
-
<code class="ruby"> log_description.actions_file_path,</code>
|
1315
|
-
</li>
|
1316
|
-
|
1317
|
-
<li class="never" data-hits="" data-linenumber="20">
|
1318
|
-
|
1319
|
-
|
1320
|
-
<code class="ruby"> log_description.results_file_path,</code>
|
1321
|
-
</li>
|
1322
|
-
|
1323
|
-
<li class="never" data-hits="" data-linenumber="21">
|
1324
|
-
|
1325
|
-
|
1326
|
-
<code class="ruby"> log_description.player_names,</code>
|
1327
|
-
</li>
|
1328
|
-
|
1329
|
-
<li class="never" data-hits="" data-linenumber="22">
|
1330
|
-
|
1331
|
-
|
1332
|
-
<code class="ruby"> AcpcDealer::DEALER_DIRECTORY,</code>
|
1333
|
-
</li>
|
1334
|
-
|
1335
|
-
<li class="never" data-hits="" data-linenumber="23">
|
1336
|
-
|
1337
|
-
|
1338
|
-
<code class="ruby"> 60</code>
|
1339
|
-
</li>
|
1340
|
-
|
1341
|
-
<li class="never" data-hits="" data-linenumber="24">
|
1342
|
-
|
1343
|
-
|
1344
|
-
<code class="ruby"> )</code>
|
1345
|
-
</li>
|
1346
|
-
|
1347
|
-
<li class="covered" data-hits="4" data-linenumber="25">
|
1348
|
-
<span class="hits">4</span>
|
1349
|
-
|
1350
|
-
<code class="ruby"> match.for_every_seat! do |seat|</code>
|
1351
|
-
</li>
|
1352
|
-
|
1353
|
-
<li class="covered" data-hits="10" data-linenumber="26">
|
1354
|
-
<span class="hits">10</span>
|
1355
|
-
|
1356
|
-
<code class="ruby"> match.for_every_hand! do</code>
|
1357
|
-
</li>
|
1358
|
-
|
1359
|
-
<li class="covered" data-hits="600" data-linenumber="27">
|
1360
|
-
<span class="hits">600</span>
|
1361
|
-
|
1362
|
-
<code class="ruby"> match.for_every_turn! do</code>
|
1363
|
-
</li>
|
1364
|
-
|
1365
|
-
<li class="covered" data-hits="6811" data-linenumber="28">
|
1366
|
-
<span class="hits">6811</span>
|
1367
|
-
|
1368
|
-
<code class="ruby"> @connection.expect(:gets, match.current_hand.current_match_state.to_s)</code>
|
1369
|
-
</li>
|
1370
|
-
|
1371
|
-
<li class="never" data-hits="" data-linenumber="29">
|
1372
|
-
|
1373
|
-
|
1374
|
-
<code class="ruby"></code>
|
1375
|
-
</li>
|
1376
|
-
|
1377
|
-
<li class="never" data-hits="" data-linenumber="30">
|
1378
|
-
|
1379
|
-
|
1380
|
-
<code class="ruby"> AcpcPokerBasicProxy::CommunicationLogic::MatchStateReceiver</code>
|
1381
|
-
</li>
|
1382
|
-
|
1383
|
-
<li class="covered" data-hits="6811" data-linenumber="31">
|
1384
|
-
<span class="hits">6811</span>
|
1385
|
-
|
1386
|
-
<code class="ruby"> .receive_match_state(@connection).must_equal match.current_hand.current_match_state</code>
|
1387
|
-
</li>
|
1388
|
-
|
1389
|
-
<li class="never" data-hits="" data-linenumber="32">
|
1390
|
-
|
1391
|
-
|
1392
|
-
<code class="ruby"> end</code>
|
1393
|
-
</li>
|
1394
|
-
|
1395
|
-
<li class="never" data-hits="" data-linenumber="33">
|
1396
|
-
|
1397
|
-
|
1398
|
-
<code class="ruby"> end</code>
|
1399
|
-
</li>
|
1400
|
-
|
1401
|
-
<li class="never" data-hits="" data-linenumber="34">
|
1402
|
-
|
1403
|
-
|
1404
|
-
<code class="ruby"> end</code>
|
1405
|
-
</li>
|
1406
|
-
|
1407
|
-
<li class="never" data-hits="" data-linenumber="35">
|
1408
|
-
|
1409
|
-
|
1410
|
-
<code class="ruby"> end</code>
|
1411
|
-
</li>
|
1412
|
-
|
1413
|
-
<li class="never" data-hits="" data-linenumber="36">
|
1414
|
-
|
1415
|
-
|
1416
|
-
<code class="ruby"> end</code>
|
1417
|
-
</li>
|
1418
|
-
|
1419
|
-
<li class="never" data-hits="" data-linenumber="37">
|
1420
|
-
|
1421
|
-
|
1422
|
-
<code class="ruby"> end</code>
|
1423
|
-
</li>
|
1424
|
-
|
1425
|
-
<li class="never" data-hits="" data-linenumber="38">
|
1426
|
-
|
1427
|
-
|
1428
|
-
<code class="ruby">end</code>
|
1429
|
-
</li>
|
1430
|
-
|
1431
|
-
</ol>
|
1432
|
-
</pre>
|
1433
|
-
</div>
|
1434
|
-
|
1435
69
|
</div>
|
1436
70
|
</div>
|
1437
71
|
</body>
|