acpc_dealer_data 0.0.1
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.
- data/.gitignore +17 -0
- data/.yardopts +7 -0
- data/Gemfile +4 -0
- data/LICENSE.md +17 -0
- data/README.md +45 -0
- data/Rakefile +12 -0
- data/acpc_dealer_data.gemspec +27 -0
- data/lib/acpc_dealer_data.rb +10 -0
- data/lib/acpc_dealer_data/action_messages.rb +90 -0
- data/lib/acpc_dealer_data/hand_data.rb +164 -0
- data/lib/acpc_dealer_data/hand_results.rb +71 -0
- data/lib/acpc_dealer_data/match_definition.rb +56 -0
- data/lib/acpc_dealer_data/poker_match_data.rb +178 -0
- data/lib/acpc_dealer_data/version.rb +3 -0
- data/spec/action_messages_spec.rb +308 -0
- data/spec/hand_data_spec.rb +295 -0
- data/spec/hand_results_spec.rb +231 -0
- data/spec/match_definition_spec.rb +95 -0
- data/spec/poker_match_data_spec.rb +243 -0
- data/spec/support/spec_helper.rb +24 -0
- metadata +189 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
|
2
|
+
# Spec helper (must include first to track code coverage with SimpleCov)
|
3
|
+
require File.expand_path('../support/spec_helper', __FILE__)
|
4
|
+
|
5
|
+
require 'acpc_poker_types/game_definition'
|
6
|
+
require 'acpc_dealer'
|
7
|
+
|
8
|
+
require File.expand_path('../../lib/acpc_dealer_data/match_definition', __FILE__)
|
9
|
+
|
10
|
+
describe MatchDefinition do
|
11
|
+
before do
|
12
|
+
@name = nil
|
13
|
+
@game_def = nil
|
14
|
+
@number_of_hands = nil
|
15
|
+
@random_seed = nil
|
16
|
+
@player_names = nil
|
17
|
+
@patient = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'raises an exception if the number of player names does not match the number of players' do
|
21
|
+
init_components do
|
22
|
+
->() do
|
23
|
+
@patient = MatchDefinition.new(
|
24
|
+
@name,
|
25
|
+
@game_def,
|
26
|
+
@number_of_hands,
|
27
|
+
@random_seed,
|
28
|
+
@player_names + ['extra player']
|
29
|
+
)
|
30
|
+
end.must_raise MatchDefinition::IncorrectNumberOfPlayerNames
|
31
|
+
|
32
|
+
->() do
|
33
|
+
@patient = MatchDefinition.new(
|
34
|
+
@name,
|
35
|
+
@game_def,
|
36
|
+
@number_of_hands,
|
37
|
+
@random_seed,
|
38
|
+
[@player_names.first]
|
39
|
+
)
|
40
|
+
end.must_raise MatchDefinition::IncorrectNumberOfPlayerNames
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'can be created by providing components' do
|
45
|
+
it 'separately' do
|
46
|
+
init_components do
|
47
|
+
@patient = MatchDefinition.new(
|
48
|
+
@name,
|
49
|
+
@game_def,
|
50
|
+
@number_of_hands,
|
51
|
+
@random_seed,
|
52
|
+
@player_names
|
53
|
+
)
|
54
|
+
|
55
|
+
check_patient
|
56
|
+
end
|
57
|
+
end
|
58
|
+
it 'in string format "# name/game/hands/seed ..."' do
|
59
|
+
init_components do
|
60
|
+
string = "# name/game/hands/seed #{@name} #{@game_def_file_name} #{@number_of_hands} #{@random_seed}\n"
|
61
|
+
@patient = MatchDefinition.parse(string, @player_names, File.dirname(@game_def_file_name))
|
62
|
+
|
63
|
+
check_patient
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
it 'returns nil if asked to parse an improperly formatted string' do
|
68
|
+
string = 'improperly formatted string'
|
69
|
+
@patient = MatchDefinition.parse(string, ['p1', 'p2'], 'game def directory').must_be_nil
|
70
|
+
end
|
71
|
+
|
72
|
+
def init_components
|
73
|
+
@name = 'match_name'
|
74
|
+
AcpcDealer::GAME_DEFINITION_FILE_PATHS.each do |number_of_players, game_def_hash|
|
75
|
+
game_def_hash.each do |betting_type, file_name|
|
76
|
+
@game_def_file_name = file_name
|
77
|
+
@game_def = GameDefinition.parse_file(@game_def_file_name)
|
78
|
+
@number_of_hands = 100
|
79
|
+
@random_seed = 9001
|
80
|
+
@player_names = number_of_players.times.inject([]) do |names, i|
|
81
|
+
names << "p#{i}"
|
82
|
+
end
|
83
|
+
|
84
|
+
yield
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
def check_patient
|
89
|
+
@patient.name.must_equal @name
|
90
|
+
Set.new(@patient.game_def.to_a).must_equal Set.new(@game_def.to_a)
|
91
|
+
@patient.number_of_hands.must_equal @number_of_hands
|
92
|
+
@patient.random_seed.must_equal @random_seed
|
93
|
+
@patient.player_names.must_equal @player_names
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,243 @@
|
|
1
|
+
|
2
|
+
# Spec helper (must include first to track code coverage with SimpleCov)
|
3
|
+
require_relative 'support/spec_helper'
|
4
|
+
|
5
|
+
require 'mocha'
|
6
|
+
|
7
|
+
require 'acpc_dealer'
|
8
|
+
require 'acpc_poker_types/match_state'
|
9
|
+
require 'acpc_poker_types/poker_action'
|
10
|
+
|
11
|
+
require_relative '../lib/acpc_dealer_data/hand_data'
|
12
|
+
require_relative '../lib/acpc_dealer_data/match_definition'
|
13
|
+
require_relative '../lib/acpc_dealer_data/poker_match_data'
|
14
|
+
|
15
|
+
describe PokerMatchData do
|
16
|
+
before do
|
17
|
+
@patient = nil
|
18
|
+
@chip_distribution = nil
|
19
|
+
@match_def = nil
|
20
|
+
@match_def_line_index = nil
|
21
|
+
@player_names = nil
|
22
|
+
@hand_number = nil
|
23
|
+
@hand_data_list = nil
|
24
|
+
@final_hand = nil
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'when given action and result messages' do
|
28
|
+
describe 'raises an exception if' do
|
29
|
+
it 'match definitions do not match' do
|
30
|
+
init_data do |action_messages, result_messages|
|
31
|
+
new_action_messages = action_messages.dup
|
32
|
+
new_action_messages[@match_def_line_index] = '# name/game/hands/seed different_name holdem.limit.2p.reverse_blinds.game 2 0\n'
|
33
|
+
|
34
|
+
->() do
|
35
|
+
PokerMatchData.parse(
|
36
|
+
new_action_messages,
|
37
|
+
result_messages,
|
38
|
+
@player_names,
|
39
|
+
AcpcDealer::DEALER_DIRECTORY
|
40
|
+
)
|
41
|
+
end.must_raise PokerMatchData::MatchDefinitionsDoNotMatch
|
42
|
+
|
43
|
+
new_result_messages = result_messages.dup
|
44
|
+
new_result_messages[@match_def_line_index] = '# name/game/hands/seed different_name holdem.limit.2p.reverse_blinds.game 2 0\n'
|
45
|
+
|
46
|
+
->() do
|
47
|
+
PokerMatchData.parse(
|
48
|
+
action_messages,
|
49
|
+
new_result_messages,
|
50
|
+
@player_names,
|
51
|
+
AcpcDealer::DEALER_DIRECTORY
|
52
|
+
)
|
53
|
+
end.must_raise PokerMatchData::MatchDefinitionsDoNotMatch
|
54
|
+
end
|
55
|
+
end
|
56
|
+
it 'the final scores from each set of messages do not match' do
|
57
|
+
init_data do |action_messages, result_messages|
|
58
|
+
new_action_messages = action_messages.dup
|
59
|
+
new_action_messages.pop
|
60
|
+
new_action_messages.pop
|
61
|
+
new_action_messages << 'SCORE:9001|-9001:p1|p2'
|
62
|
+
|
63
|
+
->() do
|
64
|
+
PokerMatchData.parse(
|
65
|
+
new_action_messages,
|
66
|
+
result_messages,
|
67
|
+
@player_names,
|
68
|
+
AcpcDealer::DEALER_DIRECTORY
|
69
|
+
)
|
70
|
+
end.must_raise PokerMatchData::FinalScoresDoNotMatch
|
71
|
+
|
72
|
+
new_result_messages = result_messages.dup
|
73
|
+
new_result_messages.pop
|
74
|
+
new_result_messages.pop
|
75
|
+
new_result_messages << 'SCORE:9001|-9001:p1|p2'
|
76
|
+
|
77
|
+
->() do
|
78
|
+
PokerMatchData.parse(
|
79
|
+
action_messages,
|
80
|
+
new_result_messages,
|
81
|
+
@player_names,
|
82
|
+
AcpcDealer::DEALER_DIRECTORY
|
83
|
+
)
|
84
|
+
end.must_raise PokerMatchData::FinalScoresDoNotMatch
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
it 'works properly on every hand' do
|
89
|
+
init_data do |action_messages, result_messages|
|
90
|
+
|
91
|
+
@patient = PokerMatchData.parse(
|
92
|
+
action_messages,
|
93
|
+
result_messages,
|
94
|
+
@player_names,
|
95
|
+
AcpcDealer::DEALER_DIRECTORY
|
96
|
+
)
|
97
|
+
@patient.seat = 0
|
98
|
+
|
99
|
+
@hand_number = 0
|
100
|
+
@patient.for_every_hand! do
|
101
|
+
@final_hand = @hand_number >= @hand_data_list.length - 1
|
102
|
+
@patient.for_every_turn! do
|
103
|
+
check_patient
|
104
|
+
end
|
105
|
+
|
106
|
+
@hand_number += 1
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def check_patient
|
113
|
+
@patient.match_def.must_equal @match_def
|
114
|
+
@patient.chip_distribution.must_equal @chip_distribution
|
115
|
+
@patient.hand_number.must_equal @hand_number
|
116
|
+
@patient.current_hand.must_equal @hand_data_list[@hand_number]
|
117
|
+
@patient.final_hand?.must_equal @final_hand
|
118
|
+
end
|
119
|
+
|
120
|
+
def init_data
|
121
|
+
data.each do |game, data_hash|
|
122
|
+
@chip_distribution = data_hash[:chip_distribution]
|
123
|
+
@match_def_line_index = data_hash[:match_def_line_index]
|
124
|
+
@player_names = data_hash[:player_names]
|
125
|
+
@match_def = MatchDefinition.parse(
|
126
|
+
data_hash[:result_messages][@match_def_line_index],
|
127
|
+
@player_names,
|
128
|
+
AcpcDealer::DEALER_DIRECTORY
|
129
|
+
)
|
130
|
+
action_messages = ActionMessages.parse(
|
131
|
+
data_hash[:action_messages],
|
132
|
+
@player_names,
|
133
|
+
AcpcDealer::DEALER_DIRECTORY
|
134
|
+
)
|
135
|
+
result_messages = HandResults.parse(
|
136
|
+
data_hash[:result_messages],
|
137
|
+
@player_names,
|
138
|
+
AcpcDealer::DEALER_DIRECTORY
|
139
|
+
)
|
140
|
+
|
141
|
+
@hand_data_list = []
|
142
|
+
action_messages.data.zip(result_messages.data).each do |action_messages_by_hand, hand_result|
|
143
|
+
@hand_data_list << HandData.new(
|
144
|
+
@match_def,
|
145
|
+
action_messages_by_hand,
|
146
|
+
hand_result
|
147
|
+
)
|
148
|
+
end
|
149
|
+
|
150
|
+
yield data_hash[:action_messages], data_hash[:result_messages]
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def data
|
155
|
+
{
|
156
|
+
two_player_limit: {
|
157
|
+
action_messages:
|
158
|
+
"# name/game/hands/seed 2p.limit.h1000.r0 holdem.limit.2p.reverse_blinds.game 2 0
|
159
|
+
#--t_response 600000
|
160
|
+
#--t_hand 600000
|
161
|
+
#--t_per_hand 7000
|
162
|
+
STARTED at 1341695999.222081
|
163
|
+
TO 1 at 1341695999.222281 MATCHSTATE:0:0::5d5c|
|
164
|
+
TO 2 at 1341695999.222349 MATCHSTATE:1:0::|9hQd
|
165
|
+
FROM 2 at 1341695999.222410 MATCHSTATE:1:0::|9hQd:c
|
166
|
+
TO 1 at 1341695999.222450 MATCHSTATE:0:0:c:5d5c|
|
167
|
+
TO 2 at 1341695999.222496 MATCHSTATE:1:0:c:|9hQd
|
168
|
+
FROM 1 at 1341695999.222519 MATCHSTATE:0:0:c:5d5c|:c
|
169
|
+
TO 1 at 1341695999.222546 MATCHSTATE:0:0:cc/:5d5c|/8dAs8s
|
170
|
+
TO 2 at 1341695999.222583 MATCHSTATE:1:0:cc/:|9hQd/8dAs8s
|
171
|
+
FROM 1 at 1341695999.222605 MATCHSTATE:0:0:cc/:5d5c|/8dAs8s:c
|
172
|
+
TO 1 at 1341695999.222633 MATCHSTATE:0:0:cc/c:5d5c|/8dAs8s
|
173
|
+
TO 2 at 1341695999.222664 MATCHSTATE:1:0:cc/c:|9hQd/8dAs8s
|
174
|
+
FROM 2 at 1341695999.222704 MATCHSTATE:1:0:cc/c:|9hQd/8dAs8s:r
|
175
|
+
TO 1 at 1341695999.222734 MATCHSTATE:0:0:cc/cr:5d5c|/8dAs8s
|
176
|
+
TO 2 at 1341695999.222770 MATCHSTATE:1:0:cc/cr:|9hQd/8dAs8s
|
177
|
+
FROM 1 at 1341695999.222792 MATCHSTATE:0:0:cc/cr:5d5c|/8dAs8s:c
|
178
|
+
TO 1 at 1341695999.222820 MATCHSTATE:0:0:cc/crc/:5d5c|/8dAs8s/4h
|
179
|
+
TO 2 at 1341695999.222879 MATCHSTATE:1:0:cc/crc/:|9hQd/8dAs8s/4h
|
180
|
+
FROM 1 at 1341695999.222904 MATCHSTATE:0:0:cc/crc/:5d5c|/8dAs8s/4h:c
|
181
|
+
TO 1 at 1341695999.222932 MATCHSTATE:0:0:cc/crc/c:5d5c|/8dAs8s/4h
|
182
|
+
TO 2 at 1341695999.222964 MATCHSTATE:1:0:cc/crc/c:|9hQd/8dAs8s/4h
|
183
|
+
FROM 2 at 1341695999.223004 MATCHSTATE:1:0:cc/crc/c:|9hQd/8dAs8s/4h:c
|
184
|
+
TO 1 at 1341695999.223033 MATCHSTATE:0:0:cc/crc/cc/:5d5c|/8dAs8s/4h/6d
|
185
|
+
TO 2 at 1341695999.223069 MATCHSTATE:1:0:cc/crc/cc/:|9hQd/8dAs8s/4h/6d
|
186
|
+
FROM 1 at 1341695999.223091 MATCHSTATE:0:0:cc/crc/cc/:5d5c|/8dAs8s/4h/6d:c
|
187
|
+
TO 1 at 1341695999.223118 MATCHSTATE:0:0:cc/crc/cc/c:5d5c|/8dAs8s/4h/6d
|
188
|
+
TO 2 at 1341695999.223150 MATCHSTATE:1:0:cc/crc/cc/c:|9hQd/8dAs8s/4h/6d
|
189
|
+
FROM 2 at 1341695999.223189 MATCHSTATE:1:0:cc/crc/cc/c:|9hQd/8dAs8s/4h/6d:c
|
190
|
+
TO 1 at 1341695999.223272 MATCHSTATE:0:0:cc/crc/cc/cc:5d5c|9hQd/8dAs8s/4h/6d
|
191
|
+
TO 2 at 1341695999.223307 MATCHSTATE:1:0:cc/crc/cc/cc:5d5c|9hQd/8dAs8s/4h/6d
|
192
|
+
TO 1 at 1341695999.223333 MATCHSTATE:1:1::|5dJd
|
193
|
+
TO 2 at 1341695999.223366 MATCHSTATE:0:1::6sKs|
|
194
|
+
FROM 1 at 1341695999.223388 MATCHSTATE:1:1::|5dJd:c
|
195
|
+
TO 1 at 1341695999.223415 MATCHSTATE:1:1:c:|5dJd
|
196
|
+
TO 2 at 1341695999.223446 MATCHSTATE:0:1:c:6sKs|
|
197
|
+
FROM 2 at 1341695999.223485 MATCHSTATE:0:1:c:6sKs|:r
|
198
|
+
TO 1 at 1341695999.223513 MATCHSTATE:1:1:cr:|5dJd
|
199
|
+
TO 2 at 1341695999.223548 MATCHSTATE:0:1:cr:6sKs|
|
200
|
+
FROM 1 at 1341695999.223570 MATCHSTATE:1:1:cr:|5dJd:c
|
201
|
+
TO 1 at 1341695999.223596 MATCHSTATE:1:1:crc/:|5dJd/2sTh2h
|
202
|
+
TO 2 at 1341695999.223627 MATCHSTATE:0:1:crc/:6sKs|/2sTh2h
|
203
|
+
FROM 2 at 1341695999.223664 MATCHSTATE:0:1:crc/:6sKs|/2sTh2h:r
|
204
|
+
TO 1 at 1341695999.223692 MATCHSTATE:1:1:crc/r:|5dJd/2sTh2h
|
205
|
+
TO 2 at 1341695999.223728 MATCHSTATE:0:1:crc/r:6sKs|/2sTh2h
|
206
|
+
FROM 1 at 1341695999.223749 MATCHSTATE:1:1:crc/r:|5dJd/2sTh2h:c
|
207
|
+
TO 1 at 1341695999.223776 MATCHSTATE:1:1:crc/rc/:|5dJd/2sTh2h/Qh
|
208
|
+
TO 2 at 1341695999.223807 MATCHSTATE:0:1:crc/rc/:6sKs|/2sTh2h/Qh
|
209
|
+
FROM 2 at 1341695999.223863 MATCHSTATE:0:1:crc/rc/:6sKs|/2sTh2h/Qh:r
|
210
|
+
TO 1 at 1341695999.223897 MATCHSTATE:1:1:crc/rc/r:|5dJd/2sTh2h/Qh
|
211
|
+
TO 2 at 1341695999.223934 MATCHSTATE:0:1:crc/rc/r:6sKs|/2sTh2h/Qh
|
212
|
+
FROM 1 at 1341695999.223956 MATCHSTATE:1:1:crc/rc/r:|5dJd/2sTh2h/Qh:r
|
213
|
+
TO 1 at 1341695999.223984 MATCHSTATE:1:1:crc/rc/rr:|5dJd/2sTh2h/Qh
|
214
|
+
TO 2 at 1341695999.224015 MATCHSTATE:0:1:crc/rc/rr:6sKs|/2sTh2h/Qh
|
215
|
+
FROM 2 at 1341695999.224053 MATCHSTATE:0:1:crc/rc/rr:6sKs|/2sTh2h/Qh:c
|
216
|
+
TO 1 at 1341695999.224081 MATCHSTATE:1:1:crc/rc/rrc/:|5dJd/2sTh2h/Qh/8h
|
217
|
+
TO 2 at 1341695999.224114 MATCHSTATE:0:1:crc/rc/rrc/:6sKs|/2sTh2h/Qh/8h
|
218
|
+
FROM 2 at 1341695999.224149 MATCHSTATE:0:1:crc/rc/rrc/:6sKs|/2sTh2h/Qh/8h:r
|
219
|
+
TO 1 at 1341695999.224178 MATCHSTATE:1:1:crc/rc/rrc/r:|5dJd/2sTh2h/Qh/8h
|
220
|
+
TO 2 at 1341695999.224213 MATCHSTATE:0:1:crc/rc/rrc/r:6sKs|/2sTh2h/Qh/8h
|
221
|
+
FROM 1 at 1341695999.224235 MATCHSTATE:1:1:crc/rc/rrc/r:|5dJd/2sTh2h/Qh/8h:c
|
222
|
+
TO 1 at 1341695999.224292 MATCHSTATE:1:1:crc/rc/rrc/rc:6sKs|5dJd/2sTh2h/Qh/8h
|
223
|
+
TO 2 at 1341695999.224329 MATCHSTATE:0:1:crc/rc/rrc/rc:6sKs|5dJd/2sTh2h/Qh/8h
|
224
|
+
FINISHED at 1341696000.058664
|
225
|
+
SCORE:110|-110:p1|p2
|
226
|
+
".split("\n").map { |line| line += "\n" },
|
227
|
+
result_messages: [
|
228
|
+
"# name/game/hands/seed 2p.limit.h1000.r0 holdem.limit.2p.reverse_blinds.game 2 0\n",
|
229
|
+
"#--t_response 600000\n",
|
230
|
+
"#--t_hand 600000\n",
|
231
|
+
"#--t_per_hand 7000\n",
|
232
|
+
"STATE:0:cc/crc/cc/cc:5d5c|9hQd/8dAs8s/4h/6d:20|-20:p1|p2\n",
|
233
|
+
"STATE:1:crc/rc/rrc/rc:6sKs|5dJd/2sTh2h/Qh/8h:-90|90:p2|p1\n",
|
234
|
+
'SCORE:110|-110:p1|p2'
|
235
|
+
],
|
236
|
+
hand_start_line_indices: [6, 35],
|
237
|
+
match_def_line_index: 0,
|
238
|
+
player_names: ['p1', 'p2'],
|
239
|
+
chip_distribution: [110, -110]
|
240
|
+
}
|
241
|
+
}
|
242
|
+
end
|
243
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start
|
4
|
+
|
5
|
+
require 'minitest/spec'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
|
8
|
+
begin
|
9
|
+
require 'turn/autorun'
|
10
|
+
|
11
|
+
Turn.config do |c|
|
12
|
+
# use one of output formats:
|
13
|
+
# :outline - turn's original case/test outline mode [default]
|
14
|
+
# :progress - indicates progress with progress bar
|
15
|
+
# :dotted - test/unit's traditional dot-progress mode
|
16
|
+
# :pretty - new pretty reporter
|
17
|
+
# :marshal - dump output as YAML (normal run mode only)
|
18
|
+
# :cue - interactive testing
|
19
|
+
c.format = :pretty
|
20
|
+
# use humanized test names (works only with :outline format)
|
21
|
+
c.natural = true
|
22
|
+
end
|
23
|
+
rescue LoadError
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,189 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: acpc_dealer_data
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dustin Morrill
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-07-30 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: acpc_dealer
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: acpc_poker_types
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: celluloid
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: dmorrill10-utils
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.0.0
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.0.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: mocha
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: simplecov
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: turn
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: ACPC Dealer data
|
127
|
+
email:
|
128
|
+
- morrill@ualberta.ca
|
129
|
+
executables: []
|
130
|
+
extensions: []
|
131
|
+
extra_rdoc_files: []
|
132
|
+
files:
|
133
|
+
- .gitignore
|
134
|
+
- .yardopts
|
135
|
+
- Gemfile
|
136
|
+
- LICENSE.md
|
137
|
+
- README.md
|
138
|
+
- Rakefile
|
139
|
+
- acpc_dealer_data.gemspec
|
140
|
+
- lib/acpc_dealer_data.rb
|
141
|
+
- lib/acpc_dealer_data/action_messages.rb
|
142
|
+
- lib/acpc_dealer_data/hand_data.rb
|
143
|
+
- lib/acpc_dealer_data/hand_results.rb
|
144
|
+
- lib/acpc_dealer_data/match_definition.rb
|
145
|
+
- lib/acpc_dealer_data/poker_match_data.rb
|
146
|
+
- lib/acpc_dealer_data/version.rb
|
147
|
+
- spec/action_messages_spec.rb
|
148
|
+
- spec/hand_data_spec.rb
|
149
|
+
- spec/hand_results_spec.rb
|
150
|
+
- spec/match_definition_spec.rb
|
151
|
+
- spec/poker_match_data_spec.rb
|
152
|
+
- spec/support/spec_helper.rb
|
153
|
+
homepage: https://github.com/dmorrill10/acpc_dealer_data
|
154
|
+
licenses: []
|
155
|
+
post_install_message:
|
156
|
+
rdoc_options: []
|
157
|
+
require_paths:
|
158
|
+
- lib
|
159
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
160
|
+
none: false
|
161
|
+
requirements:
|
162
|
+
- - ! '>='
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
165
|
+
segments:
|
166
|
+
- 0
|
167
|
+
hash: -608405534229312642
|
168
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
segments:
|
175
|
+
- 0
|
176
|
+
hash: -608405534229312642
|
177
|
+
requirements: []
|
178
|
+
rubyforge_project:
|
179
|
+
rubygems_version: 1.8.24
|
180
|
+
signing_key:
|
181
|
+
specification_version: 3
|
182
|
+
summary: Gem to parse, manipulate, and use data from the ACPC Dealer program.
|
183
|
+
test_files:
|
184
|
+
- spec/action_messages_spec.rb
|
185
|
+
- spec/hand_data_spec.rb
|
186
|
+
- spec/hand_results_spec.rb
|
187
|
+
- spec/match_definition_spec.rb
|
188
|
+
- spec/poker_match_data_spec.rb
|
189
|
+
- spec/support/spec_helper.rb
|