acpc_poker_basic_proxy 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e362ce7f2796d6a1dc1b1905e9651abf064ac4ca
4
- data.tar.gz: 61a6d8823a269da8e878fc79a82c5f8a519ea6a8
3
+ metadata.gz: c75b02eafb76e6ecd4895bad73bf7abdeb0377e1
4
+ data.tar.gz: 13699952e83f7ed0812880b7de60eed4ede2bacb
5
5
  SHA512:
6
- metadata.gz: c2d00ac00fdb9190c10f1bf1ecbac9a15eae3e75dc4877ad224dc5da70c89b04e73b85fb1f6e0b54f56006413fc0fa474370a609648bb223c38f6761cc7ed99f
7
- data.tar.gz: e9974f98efcd84cec40a42dcb4699efb781a2470a6339e38dd0da7c2f3a4a1caf3690f388da44a4e8a55a171b461c88baf1d4b2031b4d305e9ea630cedb7e29f
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.0'
14
- s.add_dependency 'dmorrill10-utils', '~> 1.0'
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', '~> 0.0'
30
- end
28
+ s.add_development_dependency 'acpc_dealer', '~> 1.0'
29
+ end
@@ -1,6 +1,7 @@
1
1
  require 'acpc_poker_basic_proxy/version'
2
2
 
3
3
  require 'acpc_poker_basic_proxy/basic_proxy'
4
+ require 'acpc_poker_basic_proxy/communication_logic'
4
5
 
5
6
  module AcpcPokerBasicProxy
6
7
  end
@@ -1,17 +1,20 @@
1
+ require 'acpc_dealer'
1
2
 
2
- require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator'
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 [AcpcDealerInformation] dealer_information Information about the dealer to which this bot should connect.
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::AcpcDealerCommunicator.new dealer_information.port_number, dealer_information.host_name, dealer_information.millisecond_response_timeout
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/acpc_dealer_communicator'
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
@@ -1,3 +1,3 @@
1
1
  module AcpcPokerBasicProxy
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -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'
@@ -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 = AcpcDealerInformation.new host_name, port_number, millisecond_response_timeout
23
- @dealer_communicator = mock 'AcpcDealerCommunicator'
22
+ delaer_info = AcpcDealer::ConnectionInformation.new port_number, host_name, millisecond_response_timeout
23
+ @dealer_communicator = mock 'DealerStream'
24
24
 
25
- AcpcDealerCommunicator.expects(:new).once.with(port_number, host_name, millisecond_response_timeout).returns(@dealer_communicator)
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
@@ -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-05T23:25:43-07:00">2013-05-05T23:25:43-07:00</abbr></div>
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="green">
28
- 498.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>4</b> files in total.
35
- <b>108</b> relevant lines.
36
- <span class="green"><b>108</b> lines covered</span> and
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 &#39;support/spec_helper&#39;</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 &#39;acpc_poker_basic_proxy/communication_logic/acpc_dealer_information&#39;</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 &#39;&#39; 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 &quot;Since this class only holds data right now, there&#39;s no need for tests&quot;</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 &#39;support/spec_helper&#39;</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 &#39;acpc_poker_types/poker_action&#39;</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 &#39;acpc_poker_types/match_state&#39;</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 &#39;acpc_poker_types/acpc_dealer_data/poker_match_data&#39;</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 &#39;acpc_dealer&#39;</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 &#39;acpc_poker_basic_proxy/communication_logic/action_sender&#39;</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 &quot;#send_action&quot; 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 &#39;does not send an illegal action and raises an exception&#39; do</code>
361
- </li>
362
-
363
- <li class="never" data-hits="" data-linenumber="28">
364
-
365
-
366
- <code class="ruby"> -&gt; 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, &#39;illegal action format&#39;)</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 &#39;raises an exception if the given match state does not have the proper format&#39; do</code>
391
- </li>
392
-
393
- <li class="never" data-hits="" data-linenumber="33">
394
-
395
-
396
- <code class="ruby"> -&gt; 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, &#39;illegal match state format&#39;, 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 &#39;can send all legal actions through the provided connection without a modifier&#39; 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 + &quot;:#{action}&quot;</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 &#39;does not send legal unmodifiable actions that have a modifier and raises an exception&#39; 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"> -&gt; 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 &#39;can send all legal modifiable actions through the provided connection with a modifier&#39; 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 + &quot;:#{action_string}&quot;</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 &#39;works for all test data examples&#39; 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 = &quot;#{from_player_message.to_s}:#{action.to_acpc}&quot;</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 &#39;support/spec_helper&#39;</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 &#39;acpc_poker_types/match_state&#39;</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 &#39;acpc_poker_types/poker_action&#39;</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 &#39;acpc_poker_types/acpc_dealer_data/poker_match_data&#39;</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 &#39;acpc_dealer&#39;</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 &#39;acpc_poker_basic_proxy/basic_proxy&#39;</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 &#39;acpc_poker_basic_proxy/communication_logic/action_sender&#39;</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 = &#39;localhost&#39;</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 &#39;AcpcDealerCommunicator&#39;</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 &#39;given a sequence of match states and actions, it properly sends and receives them&#39; 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 &amp;&amp; match_state == match.current_hand.next_action.state &amp;&amp; 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 &#39;#send_action&#39; 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 &#39;raises an exception if a match state was not received before an action was sent&#39; 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"> -&gt; {@patient.send_action(mock(&#39;PokerAction&#39;))}.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 &#39;support/spec_helper&#39;</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 &#39;acpc_dealer&#39;</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 &#39;acpc_poker_types&#39;</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 &#39;acpc_poker_basic_proxy/communication_logic/match_state_receiver&#39;</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 &#39;acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator&#39;</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 &quot;#receive_matchstate_string&quot; 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 &#39;receives matchstate strings properly&#39; 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>