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.
@@ -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