acpc_dealer_data 0.0.1 → 0.1.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.
@@ -6,23 +6,50 @@ require_relative 'match_definition'
|
|
6
6
|
|
7
7
|
class ActionMessages
|
8
8
|
|
9
|
-
attr_reader
|
9
|
+
attr_reader(
|
10
|
+
:data, :final_score, :match_def
|
11
|
+
)
|
12
|
+
|
13
|
+
ToMessage = Struct.new(
|
14
|
+
# @returns [Integer] Seat of the player receiving the message
|
15
|
+
:seat,
|
16
|
+
# @returns [MatchState] Match state received by the player
|
17
|
+
:state
|
18
|
+
)
|
10
19
|
|
20
|
+
FromMessage = Struct.new(
|
21
|
+
# @returns [Integer] Seat of the player acting
|
22
|
+
:seat,
|
23
|
+
# @returns [MatchState] Match state on which the action was taken
|
24
|
+
:state,
|
25
|
+
# @returns [PokerAction] Action taken
|
26
|
+
:action
|
27
|
+
)
|
28
|
+
|
29
|
+
# @param [String] to_message TO message (message to player)
|
11
30
|
def self.parse_to_message(to_message)
|
12
31
|
if to_message.strip.match(
|
13
32
|
/^TO\s*(\d+)\s*at\s*[\d\.]+\s+(\S+)$/
|
14
33
|
)
|
15
|
-
|
34
|
+
ToMessage.new(
|
35
|
+
$1.to_i - 1,
|
36
|
+
MatchState.parse($2)
|
37
|
+
)
|
16
38
|
else
|
17
39
|
nil
|
18
40
|
end
|
19
41
|
end
|
20
42
|
|
43
|
+
# @param [String] from_message FROM message (message from player)
|
21
44
|
def self.parse_from_message(from_message)
|
22
45
|
if from_message.strip.match(
|
23
46
|
/^FROM\s*(\d+)\s*at\s*[\d\.]+\s*(#{MatchState::LABEL}\S+):([#{PokerAction::LEGAL_ACPC_CHARACTERS.to_a.join('')}]\s*\d*)$/
|
24
47
|
)
|
25
|
-
|
48
|
+
FromMessage.new(
|
49
|
+
$1.to_i - 1,
|
50
|
+
MatchState.parse($2),
|
51
|
+
PokerAction.new($3)
|
52
|
+
)
|
26
53
|
else
|
27
54
|
nil
|
28
55
|
end
|
@@ -14,10 +14,26 @@ class HandData
|
|
14
14
|
|
15
15
|
exceptions :match_definitions_do_not_match, :invalid_data
|
16
16
|
|
17
|
-
attr_reader
|
17
|
+
attr_reader(
|
18
|
+
# @returns [Array<Numeric>] Chip distribution at the end of the hand
|
19
|
+
:chip_distribution,
|
20
|
+
# @returns [MatchDefinition] Game definition and match parameters
|
21
|
+
:match_def,
|
22
|
+
# @returns [Integer] Zero-index turn number within the hand
|
23
|
+
:turn_number,
|
24
|
+
# @returns [Turn] Turn data
|
25
|
+
:data,
|
26
|
+
# @returns [Integer] Seat of the active player
|
27
|
+
:seat
|
28
|
+
)
|
18
29
|
|
19
30
|
# State messages are organized by seat
|
20
|
-
Turn = Struct.new
|
31
|
+
Turn = Struct.new(
|
32
|
+
# @returns [Array<MatchState>] Match states sent during this turn
|
33
|
+
:state_messages,
|
34
|
+
# @returns [ActionMessages::FromMessage] Action message sent during this turn
|
35
|
+
:action_message
|
36
|
+
)
|
21
37
|
|
22
38
|
def initialize(match_def, action_data, result)
|
23
39
|
@match_def = match_def
|
@@ -56,6 +72,7 @@ class HandData
|
|
56
72
|
end
|
57
73
|
end
|
58
74
|
|
75
|
+
# @return [ActionMessage] Next action in the hand to be taken in the current turn.
|
59
76
|
def next_action
|
60
77
|
if @turn_number
|
61
78
|
@data[@turn_number].action_message
|
@@ -118,7 +135,7 @@ class HandData
|
|
118
135
|
message_number += number_of_state_messages
|
119
136
|
|
120
137
|
action_message = if action_data.in_bounds?(message_number) &&
|
121
|
-
action_data[message_number]
|
138
|
+
action_data[message_number].respond_to?(:action)
|
122
139
|
|
123
140
|
message_number += 1
|
124
141
|
action_data[message_number-1]
|
@@ -136,15 +153,15 @@ class HandData
|
|
136
153
|
|
137
154
|
def process_state_messages(state_messages)
|
138
155
|
state_messages.inject([]) do |messages, raw_messages|
|
139
|
-
messages[raw_messages
|
156
|
+
messages[raw_messages.seat] = raw_messages.state
|
140
157
|
messages
|
141
158
|
end
|
142
159
|
end
|
143
160
|
|
144
161
|
def assert_messages_have_no_actions(state_messages)
|
145
|
-
if state_messages.any? { |message|
|
162
|
+
if state_messages.any? { |message| message.respond_to?(:action) }
|
146
163
|
raise InvalidData, state_messages.find do |message|
|
147
|
-
!message
|
164
|
+
!message.action.nil?
|
148
165
|
end.inspect
|
149
166
|
end
|
150
167
|
end
|
@@ -157,7 +174,7 @@ class HandData
|
|
157
174
|
|
158
175
|
def assert_message_is_from_final_turn(action_data, message_number, state_messages)
|
159
176
|
if action_data.in_bounds?(message_number+1) &&
|
160
|
-
state_messages.last.round == action_data[message_number+1]
|
177
|
+
state_messages.last.round == action_data[message_number+1].state.round
|
161
178
|
raise InvalidData, action_data[message_number].inspect
|
162
179
|
end
|
163
180
|
end
|
@@ -14,9 +14,24 @@ class PokerMatchData
|
|
14
14
|
|
15
15
|
exceptions :match_definitions_do_not_match, :final_scores_do_not_match, :player_data_inconsistent
|
16
16
|
|
17
|
-
attr_reader
|
18
|
-
|
19
|
-
|
17
|
+
attr_reader(
|
18
|
+
# @returns [Array<Numeric>] Chip distribution at the end of the match
|
19
|
+
:chip_distribution,
|
20
|
+
# @returns [MatchDefinition] Game definition and match parameters
|
21
|
+
:match_def,
|
22
|
+
# @returns [Integer] Zero-index turn number within the hand
|
23
|
+
:hand_number,
|
24
|
+
# @returns [HandData] Data from each hand
|
25
|
+
:data,
|
26
|
+
# @returns [Array<Player>] Player information
|
27
|
+
:players
|
28
|
+
)
|
29
|
+
attr_accessor(
|
30
|
+
# @returns [Integer] Seat of the active player
|
31
|
+
:seat
|
32
|
+
)
|
33
|
+
|
34
|
+
# @returns [PokerMatchData]
|
20
35
|
def self.parse_files(action_messages_file, result_messages_file, player_names, dealer_directory)
|
21
36
|
parsed_action_messages = Celluloid::Future.new { ActionMessages.parse_file action_messages_file, player_names, dealer_directory }
|
22
37
|
parsed_hand_results = Celluloid::Future.new { HandResults.parse_file result_messages_file, player_names, dealer_directory }
|
@@ -24,11 +39,12 @@ class PokerMatchData
|
|
24
39
|
PokerMatchData.new parsed_action_messages.value, parsed_hand_results.value, player_names, dealer_directory
|
25
40
|
end
|
26
41
|
|
42
|
+
# @returns [PokerMatchData]
|
27
43
|
def self.parse(action_messages, result_messages, player_names, dealer_directory)
|
28
|
-
parsed_action_messages = ActionMessages.parse action_messages, player_names, dealer_directory
|
29
|
-
parsed_hand_results = HandResults.parse result_messages, player_names, dealer_directory
|
44
|
+
parsed_action_messages = Celluloid::Future.new { ActionMessages.parse action_messages, player_names, dealer_directory }
|
45
|
+
parsed_hand_results = Celluloid::Future.new { HandResults.parse result_messages, player_names, dealer_directory }
|
30
46
|
|
31
|
-
PokerMatchData.new parsed_action_messages, parsed_hand_results, player_names, dealer_directory
|
47
|
+
PokerMatchData.new parsed_action_messages.value, parsed_hand_results.value, player_names, dealer_directory
|
32
48
|
end
|
33
49
|
|
34
50
|
def initialize(parsed_action_messages, parsed_hand_results, player_names, dealer_directory)
|
@@ -54,14 +70,10 @@ class PokerMatchData
|
|
54
70
|
|
55
71
|
set_data! parsed_action_messages, parsed_hand_results
|
56
72
|
|
73
|
+
# Zero-indexed seat
|
57
74
|
@seat = 0
|
58
|
-
|
59
|
-
|
60
|
-
@match_def.player_names[seat],
|
61
|
-
seat,
|
62
|
-
@match_def.game_def.chip_stacks[seat]
|
63
|
-
)
|
64
|
-
end
|
75
|
+
|
76
|
+
initialize_players!
|
65
77
|
end
|
66
78
|
|
67
79
|
def for_every_seat!
|
@@ -150,6 +162,16 @@ class PokerMatchData
|
|
150
162
|
|
151
163
|
protected
|
152
164
|
|
165
|
+
def initialize_players!
|
166
|
+
@players = @match_def.player_names.length.times.map do |seat|
|
167
|
+
Player.join_match(
|
168
|
+
@match_def.player_names[seat],
|
169
|
+
seat,
|
170
|
+
@match_def.game_def.chip_stacks[seat]
|
171
|
+
)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
153
175
|
def set_chip_distribution!(final_score)
|
154
176
|
@chip_distribution = []
|
155
177
|
final_score.each do |player_name, amount|
|
@@ -24,13 +24,25 @@ describe ActionMessages do
|
|
24
24
|
it 'properly parses a ACPC log "TO . . ." line' do
|
25
25
|
[
|
26
26
|
"TO 1 at 1341695999.222281 MATCHSTATE:0:0::5d5c|\n" =>
|
27
|
-
|
27
|
+
ActionMessages::ToMessage.new(
|
28
|
+
0,
|
29
|
+
MatchState.parse('MATCHSTATE:0:0::5d5c|')
|
30
|
+
),
|
28
31
|
"TO 2 at 1341695920.914907 MATCHSTATE:1:0:r19686:|9hQd\n" =>
|
29
|
-
|
32
|
+
ActionMessages::ToMessage.new(
|
33
|
+
1,
|
34
|
+
MatchState.parse('MATCHSTATE:1:0:r19686:|9hQd')
|
35
|
+
),
|
30
36
|
"TO 3 at 1341696044.566738 MATCHSTATE:2:0:rf:||8dAs\n" =>
|
31
|
-
|
37
|
+
ActionMessages::ToMessage.new(
|
38
|
+
2,
|
39
|
+
MatchState.parse('MATCHSTATE:2:0:rf:||8dAs')
|
40
|
+
),
|
32
41
|
"TO 1 at 1341715418.808925 MATCHSTATE:0:0:fcr17162:5d5c||\n" =>
|
33
|
-
|
42
|
+
ActionMessages::ToMessage.new(
|
43
|
+
0,
|
44
|
+
MatchState.parse('MATCHSTATE:0:0:fcr17162:5d5c||')
|
45
|
+
)
|
34
46
|
].each do |to_message_to_data|
|
35
47
|
to_message_to_data.each do |to_message, expected_values|
|
36
48
|
ActionMessages.parse_to_message(to_message).must_equal expected_values
|
@@ -46,29 +58,29 @@ describe ActionMessages do
|
|
46
58
|
it 'properly parses a ACPC log "FROM . . ." line' do
|
47
59
|
[
|
48
60
|
"FROM 2 at 1341695999.222410 MATCHSTATE:1:0::|9hQd:c\n" =>
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
61
|
+
ActionMessages::FromMessage.new(
|
62
|
+
1,
|
63
|
+
MatchState.parse('MATCHSTATE:1:0::|9hQd'),
|
64
|
+
PokerAction.new('c')
|
65
|
+
),
|
54
66
|
"FROM 1 at 1341695920.914935 MATCHSTATE:0:0:r19686:5d5c|:r20000\n" =>
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
67
|
+
ActionMessages::FromMessage.new(
|
68
|
+
0,
|
69
|
+
MatchState.parse('MATCHSTATE:0:0:r19686:5d5c|'),
|
70
|
+
PokerAction.new('r20000')
|
71
|
+
),
|
60
72
|
"FROM 3 at 1341696044.566938 MATCHSTATE:2:0:rfr:||8dAs:r\n" =>
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
73
|
+
ActionMessages::FromMessage.new(
|
74
|
+
2,
|
75
|
+
MatchState.parse('MATCHSTATE:2:0:rfr:||8dAs'),
|
76
|
+
PokerAction.new('r')
|
77
|
+
),
|
66
78
|
"FROM 2 at 1341715418.808896 MATCHSTATE:1:0:fc:|9hQd|:r17162\n" =>
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
79
|
+
ActionMessages::FromMessage.new(
|
80
|
+
1,
|
81
|
+
MatchState.parse('MATCHSTATE:1:0:fc:|9hQd|'),
|
82
|
+
PokerAction.new('r17162')
|
83
|
+
)
|
72
84
|
].each do |from_message_to_data|
|
73
85
|
from_message_to_data.each do |from_message, expected_values|
|
74
86
|
ActionMessages.parse_from_message(from_message).must_equal expected_values
|
@@ -173,24 +185,42 @@ describe ActionMessages do
|
|
173
185
|
],
|
174
186
|
data: [
|
175
187
|
[
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
188
|
+
ActionMessages::ToMessage.new(
|
189
|
+
0,
|
190
|
+
MatchState.parse('MATCHSTATE:1:998:crc/cc/cc/:|TdQd/As6d6h/7h/4s')
|
191
|
+
),
|
192
|
+
ActionMessages::ToMessage.new(
|
193
|
+
1,
|
194
|
+
MatchState.parse('MATCHSTATE:0:998:crc/cc/cc/:Jc8d|/As6d6h/7h/4s')
|
195
|
+
),
|
196
|
+
ActionMessages::FromMessage.new(
|
197
|
+
1,
|
198
|
+
MatchState.parse('MATCHSTATE:0:998:crc/cc/cc/:Jc8d|/As6d6h/7h/4s'),
|
199
|
+
PokerAction.new('r')
|
200
|
+
)
|
183
201
|
],
|
184
202
|
[
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
203
|
+
ActionMessages::ToMessage.new(
|
204
|
+
0,
|
205
|
+
MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/r:|TdQd/As6d6h/7h/4s')
|
206
|
+
),
|
207
|
+
ActionMessages::ToMessage.new(
|
208
|
+
1,
|
209
|
+
MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/r:Jc8d|/As6d6h/7h/4s')
|
210
|
+
),
|
211
|
+
ActionMessages::FromMessage.new(
|
212
|
+
0,
|
213
|
+
MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/r:|TdQd/As6d6h/7h/4s'),
|
214
|
+
PokerAction.new('c')
|
215
|
+
),
|
216
|
+
ActionMessages::ToMessage.new(
|
217
|
+
0,
|
218
|
+
MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/rc:Jc8d|TdQd/As6d6h/7h/4s')
|
219
|
+
),
|
220
|
+
ActionMessages::ToMessage.new(
|
221
|
+
1,
|
222
|
+
MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/rc:Jc8d|TdQd/As6d6h/7h/4s')
|
223
|
+
)
|
194
224
|
]
|
195
225
|
],
|
196
226
|
final_score: {p1: 455, p2: -455},
|
@@ -214,26 +244,50 @@ describe ActionMessages do
|
|
214
244
|
],
|
215
245
|
data: [
|
216
246
|
[
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
247
|
+
ActionMessages::ToMessage.new(
|
248
|
+
0,
|
249
|
+
MatchState.parse('MATCHSTATE:0:998:cc/r5841r19996r20000:Kc6h|/QhAh8d')
|
250
|
+
),
|
251
|
+
ActionMessages::ToMessage.new(
|
252
|
+
1,
|
253
|
+
MatchState.parse('MATCHSTATE:1:998:cc/r5841r19996r20000:|Qc3s/QhAh8d')
|
254
|
+
),
|
255
|
+
ActionMessages::FromMessage.new(
|
256
|
+
1,
|
257
|
+
MatchState.parse('MATCHSTATE:1:998:cc/r5841r19996r20000:|Qc3s/QhAh8d:c'),
|
258
|
+
PokerAction.new('c')
|
259
|
+
),
|
260
|
+
ActionMessages::ToMessage.new(
|
261
|
+
0,
|
262
|
+
MatchState.parse('MATCHSTATE:0:998:cc/r5841r19996r20000c//:Kc6h|Qc3s/QhAh8d/Th/9d')
|
263
|
+
),
|
264
|
+
ActionMessages::ToMessage.new(
|
265
|
+
1,
|
266
|
+
MatchState.parse('MATCHSTATE:1:998:cc/r5841r19996r20000c//:Kc6h|Qc3s/QhAh8d/Th/9d')
|
267
|
+
)
|
226
268
|
],
|
227
269
|
[
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
270
|
+
ActionMessages::ToMessage.new(
|
271
|
+
0,
|
272
|
+
MatchState.parse('MATCHSTATE:1:999::|TdQd')
|
273
|
+
),
|
274
|
+
ActionMessages::ToMessage.new(
|
275
|
+
1,
|
276
|
+
MatchState.parse('MATCHSTATE:0:999::Jc8d|')
|
277
|
+
),
|
278
|
+
ActionMessages::FromMessage.new(
|
279
|
+
0,
|
280
|
+
MatchState.parse('MATCHSTATE:1:999::|TdQd'),
|
281
|
+
PokerAction.new('f')
|
282
|
+
),
|
283
|
+
ActionMessages::ToMessage.new(
|
284
|
+
0,
|
285
|
+
MatchState.parse('MATCHSTATE:1:999:f:|TdQd')
|
286
|
+
),
|
287
|
+
ActionMessages::ToMessage.new(
|
288
|
+
1,
|
289
|
+
MatchState.parse('MATCHSTATE:0:999:f:Jc8d|')
|
290
|
+
)
|
237
291
|
]
|
238
292
|
],
|
239
293
|
final_score: {p1: -64658, p2: 64658},
|
@@ -254,17 +308,35 @@ describe ActionMessages do
|
|
254
308
|
],
|
255
309
|
data: [
|
256
310
|
[
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
311
|
+
ActionMessages::ToMessage.new(
|
312
|
+
0,
|
313
|
+
MatchState.parse('MATCHSTATE:0:999:ccc/ccc/rrcc/rrrfr:QsAs||/4d6d2d/5d/2c')
|
314
|
+
),
|
315
|
+
ActionMessages::ToMessage.new(
|
316
|
+
1,
|
317
|
+
MatchState.parse('MATCHSTATE:1:999:ccc/ccc/rrcc/rrrfr:|3s8h|/4d6d2d/5d/2c')
|
318
|
+
),
|
319
|
+
ActionMessages::ToMessage.new(
|
320
|
+
2,
|
321
|
+
MatchState.parse('MATCHSTATE:2:999:ccc/ccc/rrcc/rrrfr:||Qd3c/4d6d2d/5d/2c')
|
322
|
+
),
|
323
|
+
ActionMessages::FromMessage.new(
|
324
|
+
2,
|
325
|
+
MatchState.parse('MATCHSTATE:2:999:ccc/ccc/rrcc/rrrfr:||Qd3c/4d6d2d/5d/2c'),
|
326
|
+
PokerAction.new('c')
|
327
|
+
),
|
328
|
+
ActionMessages::ToMessage.new(
|
329
|
+
0,
|
330
|
+
MatchState.parse('MATCHSTATE:0:999:ccc/ccc/rrcc/rrrfrc:QsAs|3s8h|Qd3c/4d6d2d/5d/2c')
|
331
|
+
),
|
332
|
+
ActionMessages::ToMessage.new(
|
333
|
+
1,
|
334
|
+
MatchState.parse('MATCHSTATE:1:999:ccc/ccc/rrcc/rrrfrc:|3s8h|Qd3c/4d6d2d/5d/2c')
|
335
|
+
),
|
336
|
+
ActionMessages::ToMessage.new(
|
337
|
+
2,
|
338
|
+
MatchState.parse('MATCHSTATE:2:999:ccc/ccc/rrcc/rrrfrc:|3s8h|Qd3c/4d6d2d/5d/2c')
|
339
|
+
)
|
268
340
|
]
|
269
341
|
],
|
270
342
|
final_score: {p1: -4330, p2: 625, p3: 3705},
|
@@ -285,19 +357,37 @@ describe ActionMessages do
|
|
285
357
|
],
|
286
358
|
data: [
|
287
359
|
[
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
360
|
+
ActionMessages::ToMessage.new(
|
361
|
+
0,
|
362
|
+
MatchState.parse('MATCHSTATE:0:998:ccr12926r20000c:QsAs||')
|
363
|
+
),
|
364
|
+
ActionMessages::ToMessage.new(
|
365
|
+
1,
|
366
|
+
MatchState.parse('MATCHSTATE:1:998:ccr12926r20000c:|3s8h|')
|
367
|
+
),
|
368
|
+
ActionMessages::ToMessage.new(
|
369
|
+
2,
|
370
|
+
MatchState.parse('MATCHSTATE:2:998:ccr12926r20000c:||Qd3c')
|
371
|
+
),
|
372
|
+
ActionMessages::FromMessage.new(
|
373
|
+
1,
|
374
|
+
MatchState.parse('MATCHSTATE:1:998:ccr12926r20000c:|3s8h|'),
|
375
|
+
PokerAction.new('c')
|
376
|
+
)
|
296
377
|
],
|
297
378
|
[
|
298
|
-
|
299
|
-
|
300
|
-
|
379
|
+
ActionMessages::ToMessage.new(
|
380
|
+
0,
|
381
|
+
MatchState.parse('MATCHSTATE:0:999:ccr12926r20000cc///:QsAs|3s8h|Qd3c/4d6d2d/5d/2c')
|
382
|
+
),
|
383
|
+
ActionMessages::ToMessage.new(
|
384
|
+
1,
|
385
|
+
MatchState.parse('MATCHSTATE:1:999:ccr12926r20000cc///:QsAs|3s8h|Qd3c/4d6d2d/5d/2c')
|
386
|
+
),
|
387
|
+
ActionMessages::ToMessage.new(
|
388
|
+
2,
|
389
|
+
MatchState.parse('MATCHSTATE:2:999:ccr12926r20000cc///:QsAs|3s8h|Qd3c/4d6d2d/5d/2c')
|
390
|
+
)
|
301
391
|
]
|
302
392
|
],
|
303
393
|
final_score: {p1: 684452, p2: 552584.5, p3: -1237036.5},
|
data/spec/hand_data_spec.rb
CHANGED
@@ -142,22 +142,22 @@ describe HandData do
|
|
142
142
|
MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/:|TdQd/As6d6h/7h/4s'),
|
143
143
|
MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/:Jc8d|/As6d6h/7h/4s')
|
144
144
|
],
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
145
|
+
ActionMessages::FromMessage.new(
|
146
|
+
1,
|
147
|
+
MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/:Jc8d|/As6d6h/7h/4s'),
|
148
|
+
PokerAction.new('r')
|
149
|
+
)
|
150
150
|
),
|
151
151
|
HandData::Turn.new(
|
152
152
|
[
|
153
153
|
MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/r:|TdQd/As6d6h/7h/4s'),
|
154
154
|
MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/r:Jc8d|/As6d6h/7h/4s')
|
155
155
|
],
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
156
|
+
ActionMessages::FromMessage.new(
|
157
|
+
0,
|
158
|
+
MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/r:|TdQd/As6d6h/7h/4s'),
|
159
|
+
PokerAction.new('c')
|
160
|
+
)
|
161
161
|
),
|
162
162
|
HandData::Turn.new(
|
163
163
|
[
|
@@ -191,11 +191,11 @@ describe HandData do
|
|
191
191
|
MatchState.parse('MATCHSTATE:1:999::|TdQd'),
|
192
192
|
MatchState.parse('MATCHSTATE:0:999::Jc8d|')
|
193
193
|
],
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
194
|
+
ActionMessages::FromMessage.new(
|
195
|
+
0,
|
196
|
+
MatchState.parse('MATCHSTATE:1:999::|TdQd'),
|
197
|
+
PokerAction.new('f')
|
198
|
+
)
|
199
199
|
),
|
200
200
|
HandData::Turn.new(
|
201
201
|
[
|
@@ -232,11 +232,11 @@ describe HandData do
|
|
232
232
|
MatchState.parse('MATCHSTATE:1:999:ccc/ccc/rrcc/rrrfr:|3s8h|/4d6d2d/5d/2c'),
|
233
233
|
MatchState.parse('MATCHSTATE:2:999:ccc/ccc/rrcc/rrrfr:||Qd3c/4d6d2d/5d/2c')
|
234
234
|
],
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
235
|
+
ActionMessages::FromMessage.new(
|
236
|
+
2,
|
237
|
+
MatchState.parse('MATCHSTATE:2:999:ccc/ccc/rrcc/rrrfr:||Qd3c/4d6d2d/5d/2c'),
|
238
|
+
PokerAction.new('c')
|
239
|
+
)
|
240
240
|
),
|
241
241
|
HandData::Turn.new(
|
242
242
|
[
|
@@ -274,11 +274,11 @@ describe HandData do
|
|
274
274
|
MatchState.parse('MATCHSTATE:1:999:ccr12926r20000c:|3s8h|'),
|
275
275
|
MatchState.parse('MATCHSTATE:2:999:ccr12926r20000c:||Qd3c')
|
276
276
|
],
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
277
|
+
ActionMessages::FromMessage.new(
|
278
|
+
1,
|
279
|
+
MatchState.parse('MATCHSTATE:1:999:ccr12926r20000c:|3s8h|'),
|
280
|
+
PokerAction.new('c')
|
281
|
+
)
|
282
282
|
),
|
283
283
|
HandData::Turn.new(
|
284
284
|
[
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acpc_dealer_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: acpc_dealer
|
@@ -164,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
164
164
|
version: '0'
|
165
165
|
segments:
|
166
166
|
- 0
|
167
|
-
hash: -
|
167
|
+
hash: -2795180141698548601
|
168
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
169
|
none: false
|
170
170
|
requirements:
|
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
173
|
version: '0'
|
174
174
|
segments:
|
175
175
|
- 0
|
176
|
-
hash: -
|
176
|
+
hash: -2795180141698548601
|
177
177
|
requirements: []
|
178
178
|
rubyforge_project:
|
179
179
|
rubygems_version: 1.8.24
|