acpc_poker_types 6.2.3 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/acpc_poker_types.rb +2 -2
- data/lib/acpc_poker_types/dealer_data.rb +9 -0
- data/lib/acpc_poker_types/{acpc_dealer_data → dealer_data}/action_messages.rb +10 -10
- data/lib/acpc_poker_types/{acpc_dealer_data → dealer_data}/hand_data.rb +4 -4
- data/lib/acpc_poker_types/{acpc_dealer_data → dealer_data}/hand_results.rb +8 -8
- data/lib/acpc_poker_types/{acpc_dealer_data → dealer_data}/log_file.rb +1 -1
- data/lib/acpc_poker_types/{acpc_dealer_data → dealer_data}/match_definition.rb +1 -1
- data/lib/acpc_poker_types/{acpc_dealer_data → dealer_data}/poker_match_data.rb +44 -56
- data/lib/acpc_poker_types/{player_group.rb → hand_player_group.rb} +1 -1
- data/lib/acpc_poker_types/match_state.rb +11 -8
- data/lib/acpc_poker_types/player.rb +50 -0
- data/lib/acpc_poker_types/players_at_the_table.rb +168 -0
- data/lib/acpc_poker_types/version.rb +1 -1
- data/spec/{action_messages_spec.rb → dealer_data/action_messages_spec.rb} +60 -61
- data/spec/{hand_data_spec.rb → dealer_data/hand_data_spec.rb} +26 -27
- data/spec/{hand_results_spec.rb → dealer_data/hand_results_spec.rb} +17 -18
- data/spec/{match_definition_spec.rb → dealer_data/match_definition_spec.rb} +10 -11
- data/spec/{poker_match_data_spec.rb → dealer_data/poker_match_data_spec.rb} +48 -7
- data/spec/{player_group_spec.rb → hand_player_group_spec.rb} +3 -10
- data/spec/hand_player_spec.rb +1 -1
- data/spec/match_state_spec.rb +118 -76
- data/spec/player_spec.rb +45 -0
- data/spec/players_at_the_table_spec.rb +133 -0
- metadata +60 -136
- data/lib/acpc_poker_types/acpc_dealer_data.rb +0 -9
- data/spec/coverage/assets/0.7.1/application.css +0 -1110
- data/spec/coverage/assets/0.7.1/application.js +0 -626
- data/spec/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
- data/spec/coverage/assets/0.7.1/favicon_green.png +0 -0
- data/spec/coverage/assets/0.7.1/favicon_red.png +0 -0
- data/spec/coverage/assets/0.7.1/favicon_yellow.png +0 -0
- data/spec/coverage/assets/0.7.1/loading.gif +0 -0
- data/spec/coverage/assets/0.7.1/magnify.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/coverage/index.html +0 -72
@@ -1,6 +1,5 @@
|
|
1
|
-
|
2
1
|
# Spec helper (must include first to track code coverage with SimpleCov)
|
3
|
-
require_relative 'support/spec_helper'
|
2
|
+
require_relative '../support/spec_helper'
|
4
3
|
|
5
4
|
require 'mocha/setup'
|
6
5
|
|
@@ -8,12 +7,12 @@ require 'acpc_dealer'
|
|
8
7
|
require 'acpc_poker_types/match_state'
|
9
8
|
require 'acpc_poker_types/poker_action'
|
10
9
|
|
11
|
-
require 'acpc_poker_types/
|
12
|
-
require 'acpc_poker_types/
|
13
|
-
require 'acpc_poker_types/
|
14
|
-
require 'acpc_poker_types/
|
10
|
+
require 'acpc_poker_types/dealer_data/action_messages'
|
11
|
+
require 'acpc_poker_types/dealer_data/hand_data'
|
12
|
+
require 'acpc_poker_types/dealer_data/hand_results'
|
13
|
+
require 'acpc_poker_types/dealer_data/match_definition'
|
15
14
|
|
16
|
-
describe AcpcPokerTypes::
|
15
|
+
describe AcpcPokerTypes::DealerData::HandData do
|
17
16
|
before do
|
18
17
|
@patient = nil
|
19
18
|
@chip_distribution = nil
|
@@ -32,19 +31,19 @@ describe AcpcPokerTypes::AcpcDealerData::HandData do
|
|
32
31
|
it 'if the given action data does not have the proper format' do
|
33
32
|
init_data do |action_data, result|
|
34
33
|
->() do
|
35
|
-
@patient = AcpcPokerTypes::
|
34
|
+
@patient = AcpcPokerTypes::DealerData::HandData.new(
|
36
35
|
@match_def,
|
37
36
|
(action_data.data.first + [action_data.data.first.last]).flatten,
|
38
37
|
result.data.first
|
39
38
|
)
|
40
|
-
end.must_raise AcpcPokerTypes::
|
39
|
+
end.must_raise AcpcPokerTypes::DealerData::HandData::InvalidData
|
41
40
|
end
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
44
|
it 'reports the chip distribution for every seat' do
|
46
45
|
init_data do |action_data, result|
|
47
|
-
@patient = AcpcPokerTypes::
|
46
|
+
@patient = AcpcPokerTypes::DealerData::HandData.new @match_def, action_data.data.first, result.data.first
|
48
47
|
|
49
48
|
check_patient
|
50
49
|
end
|
@@ -61,7 +60,7 @@ describe AcpcPokerTypes::AcpcDealerData::HandData do
|
|
61
60
|
@last_action = nil
|
62
61
|
@next_action = nil
|
63
62
|
|
64
|
-
@patient = AcpcPokerTypes::
|
63
|
+
@patient = AcpcPokerTypes::DealerData::HandData.new @match_def, action_data.data.first, result.data.first
|
65
64
|
|
66
65
|
@turn_number = 0
|
67
66
|
@patient.for_every_turn!(@seat) do
|
@@ -98,12 +97,12 @@ describe AcpcPokerTypes::AcpcDealerData::HandData do
|
|
98
97
|
data.each do |game, data_hash|
|
99
98
|
@chip_distribution = data_hash[:chip_distribution]
|
100
99
|
@turn_data = data_hash[:turn_data]
|
101
|
-
@action_data = AcpcPokerTypes::
|
100
|
+
@action_data = AcpcPokerTypes::DealerData::ActionMessages.parse(
|
102
101
|
data_hash[:action_messages],
|
103
102
|
data_hash[:player_names],
|
104
103
|
AcpcDealer::DEALER_DIRECTORY
|
105
104
|
)
|
106
|
-
@hand_result = AcpcPokerTypes::
|
105
|
+
@hand_result = AcpcPokerTypes::DealerData::HandResults.parse(
|
107
106
|
data_hash[:result_message],
|
108
107
|
data_hash[:player_names],
|
109
108
|
AcpcDealer::DEALER_DIRECTORY
|
@@ -137,29 +136,29 @@ describe AcpcPokerTypes::AcpcDealerData::HandData do
|
|
137
136
|
chip_distribution: [60, -60],
|
138
137
|
player_names: ['p1', 'p2'],
|
139
138
|
turn_data: [
|
140
|
-
AcpcPokerTypes::
|
139
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
141
140
|
[
|
142
141
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/:|TdQd/As6d6h/7h/4s'),
|
143
142
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/:Jc8d|/As6d6h/7h/4s')
|
144
143
|
],
|
145
|
-
AcpcPokerTypes::
|
144
|
+
AcpcPokerTypes::DealerData::ActionMessages::FromMessage.new(
|
146
145
|
1,
|
147
146
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/:Jc8d|/As6d6h/7h/4s'),
|
148
147
|
AcpcPokerTypes::PokerAction.new('r')
|
149
148
|
)
|
150
149
|
),
|
151
|
-
AcpcPokerTypes::
|
150
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
152
151
|
[
|
153
152
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/r:|TdQd/As6d6h/7h/4s'),
|
154
153
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/r:Jc8d|/As6d6h/7h/4s')
|
155
154
|
],
|
156
|
-
AcpcPokerTypes::
|
155
|
+
AcpcPokerTypes::DealerData::ActionMessages::FromMessage.new(
|
157
156
|
0,
|
158
157
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/r:|TdQd/As6d6h/7h/4s'),
|
159
158
|
AcpcPokerTypes::PokerAction.new('c')
|
160
159
|
)
|
161
160
|
),
|
162
|
-
AcpcPokerTypes::
|
161
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
163
162
|
[
|
164
163
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:crc/cc/cc/rc:Jc8d|TdQd/As6d6h/7h/4s'),
|
165
164
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:crc/cc/cc/rc:Jc8d|TdQd/As6d6h/7h/4s')
|
@@ -186,18 +185,18 @@ describe AcpcPokerTypes::AcpcDealerData::HandData do
|
|
186
185
|
chip_distribution: [19718, -19718],
|
187
186
|
player_names: ['p1', 'p2'],
|
188
187
|
turn_data: [
|
189
|
-
AcpcPokerTypes::
|
188
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
190
189
|
[
|
191
190
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999::|TdQd'),
|
192
191
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999::Jc8d|')
|
193
192
|
],
|
194
|
-
AcpcPokerTypes::
|
193
|
+
AcpcPokerTypes::DealerData::ActionMessages::FromMessage.new(
|
195
194
|
0,
|
196
195
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999::|TdQd'),
|
197
196
|
AcpcPokerTypes::PokerAction.new('f')
|
198
197
|
)
|
199
198
|
),
|
200
|
-
AcpcPokerTypes::
|
199
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
201
200
|
[
|
202
201
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:f:|TdQd'),
|
203
202
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:f:Jc8d|')
|
@@ -226,19 +225,19 @@ describe AcpcPokerTypes::AcpcDealerData::HandData do
|
|
226
225
|
chip_distribution: [360, -190, -170],
|
227
226
|
player_names: ['p1', 'p2', 'p3'],
|
228
227
|
turn_data: [
|
229
|
-
AcpcPokerTypes::
|
228
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
230
229
|
[
|
231
230
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:ccc/ccc/rrcc/rrrfr:QsAs||/4d6d2d/5d/2c'),
|
232
231
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:ccc/ccc/rrcc/rrrfr:|3s8h|/4d6d2d/5d/2c'),
|
233
232
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:2:999:ccc/ccc/rrcc/rrrfr:||Qd3c/4d6d2d/5d/2c')
|
234
233
|
],
|
235
|
-
AcpcPokerTypes::
|
234
|
+
AcpcPokerTypes::DealerData::ActionMessages::FromMessage.new(
|
236
235
|
2,
|
237
236
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:2:999:ccc/ccc/rrcc/rrrfr:||Qd3c/4d6d2d/5d/2c'),
|
238
237
|
AcpcPokerTypes::PokerAction.new('c')
|
239
238
|
)
|
240
239
|
),
|
241
|
-
AcpcPokerTypes::
|
240
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
242
241
|
[
|
243
242
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:ccc/ccc/rrcc/rrrfrc:QsAs|3s8h|Qd3c/4d6d2d/5d/2c'),
|
244
243
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:ccc/ccc/rrcc/rrrfrc:|3s8h|Qd3c/4d6d2d/5d/2c'),
|
@@ -268,19 +267,19 @@ describe AcpcPokerTypes::AcpcDealerData::HandData do
|
|
268
267
|
chip_distribution: [40000, -20000, -20000],
|
269
268
|
player_names: ['p1', 'p2', 'p3'],
|
270
269
|
turn_data: [
|
271
|
-
AcpcPokerTypes::
|
270
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
272
271
|
[
|
273
272
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:ccr12926r20000c:QsAs||'),
|
274
273
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:ccr12926r20000c:|3s8h|'),
|
275
274
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:2:999:ccr12926r20000c:||Qd3c')
|
276
275
|
],
|
277
|
-
AcpcPokerTypes::
|
276
|
+
AcpcPokerTypes::DealerData::ActionMessages::FromMessage.new(
|
278
277
|
1,
|
279
278
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:ccr12926r20000c:|3s8h|'),
|
280
279
|
AcpcPokerTypes::PokerAction.new('c')
|
281
280
|
)
|
282
281
|
),
|
283
|
-
AcpcPokerTypes::
|
282
|
+
AcpcPokerTypes::DealerData::HandData::Turn.new(
|
284
283
|
[
|
285
284
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:0:999:ccr12926r20000cc///:QsAs|3s8h|Qd3c/4d6d2d/5d/2c'),
|
286
285
|
AcpcPokerTypes::MatchState.parse('MATCHSTATE:1:999:ccr12926r20000cc///:QsAs|3s8h|Qd3c/4d6d2d/5d/2c'),
|
@@ -1,15 +1,14 @@
|
|
1
|
-
|
2
1
|
# Spec helper (must include first to track code coverage with SimpleCov)
|
3
|
-
require_relative 'support/spec_helper'
|
2
|
+
require_relative '../support/spec_helper'
|
4
3
|
|
5
4
|
require 'mocha/setup'
|
6
5
|
|
7
6
|
require 'acpc_dealer'
|
8
7
|
|
9
|
-
require 'acpc_poker_types/
|
10
|
-
require 'acpc_poker_types/
|
8
|
+
require 'acpc_poker_types/dealer_data/hand_results'
|
9
|
+
require 'acpc_poker_types/dealer_data/match_definition'
|
11
10
|
|
12
|
-
describe AcpcPokerTypes::
|
11
|
+
describe AcpcPokerTypes::DealerData::HandResults do
|
13
12
|
before do
|
14
13
|
@patient = nil
|
15
14
|
@data = nil
|
@@ -32,12 +31,12 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
32
31
|
{p1: -20000, p2: -20000, p3: 40000}
|
33
32
|
].each do |state_to_player_results|
|
34
33
|
state_to_player_results.each do |state_string, expected_values|
|
35
|
-
AcpcPokerTypes::
|
34
|
+
AcpcPokerTypes::DealerData::HandResults.parse_state(state_string).must_equal expected_values
|
36
35
|
end
|
37
36
|
end
|
38
37
|
end
|
39
38
|
it 'returns nil if asked to parse an improperly formatted string' do
|
40
|
-
AcpcPokerTypes::
|
39
|
+
AcpcPokerTypes::DealerData::HandResults.parse_state("improperly formatted string").must_be_nil
|
41
40
|
end
|
42
41
|
end
|
43
42
|
describe '::parse_score' do
|
@@ -47,12 +46,12 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
47
46
|
'SCORE:19835|621.5|-20455.5:p1|p2|p3' => {p1: 19835, p2: 621.5, p3: -20455.5}
|
48
47
|
].each do |score_to_player_results|
|
49
48
|
score_to_player_results.each do |score_string, expected_values|
|
50
|
-
AcpcPokerTypes::
|
49
|
+
AcpcPokerTypes::DealerData::HandResults.parse_score(score_string).must_equal expected_values
|
51
50
|
end
|
52
51
|
end
|
53
52
|
end
|
54
53
|
it 'returns nil if asked to parse an improperly formatted string' do
|
55
|
-
AcpcPokerTypes::
|
54
|
+
AcpcPokerTypes::DealerData::HandResults.parse_score("improperly formatted string").must_be_nil
|
56
55
|
end
|
57
56
|
end
|
58
57
|
|
@@ -61,17 +60,17 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
61
60
|
it 'when every hand is desired' do
|
62
61
|
init_data do |log_statements|
|
63
62
|
file_name = 'file_name'
|
64
|
-
AcpcPokerTypes::
|
63
|
+
AcpcPokerTypes::DealerData::LogFile.stubs(:open).with(file_name, 'r').yields(
|
65
64
|
log_statements
|
66
65
|
).returns(
|
67
|
-
AcpcPokerTypes::
|
66
|
+
AcpcPokerTypes::DealerData::HandResults.parse(
|
68
67
|
log_statements,
|
69
68
|
@player_names,
|
70
69
|
AcpcDealer::DEALER_DIRECTORY
|
71
70
|
)
|
72
71
|
)
|
73
72
|
|
74
|
-
@patient = AcpcPokerTypes::
|
73
|
+
@patient = AcpcPokerTypes::DealerData::HandResults.parse_file(
|
75
74
|
file_name,
|
76
75
|
@player_names,
|
77
76
|
AcpcDealer::DEALER_DIRECTORY
|
@@ -85,10 +84,10 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
85
84
|
num_hands = 3
|
86
85
|
init_data do |log_statements|
|
87
86
|
file_name = 'file_name'
|
88
|
-
AcpcPokerTypes::
|
87
|
+
AcpcPokerTypes::DealerData::LogFile.stubs(:open).with(file_name, 'r').yields(
|
89
88
|
log_statements
|
90
89
|
).returns(
|
91
|
-
AcpcPokerTypes::
|
90
|
+
AcpcPokerTypes::DealerData::HandResults.parse(
|
92
91
|
log_statements,
|
93
92
|
@player_names,
|
94
93
|
AcpcDealer::DEALER_DIRECTORY,
|
@@ -96,7 +95,7 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
96
95
|
)
|
97
96
|
)
|
98
97
|
|
99
|
-
@patient = AcpcPokerTypes::
|
98
|
+
@patient = AcpcPokerTypes::DealerData::HandResults.parse_file(
|
100
99
|
file_name,
|
101
100
|
@player_names,
|
102
101
|
AcpcDealer::DEALER_DIRECTORY,
|
@@ -114,7 +113,7 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
114
113
|
describe 'from array' do
|
115
114
|
it 'when every hand is desired' do
|
116
115
|
init_data do |log_statements|
|
117
|
-
@patient = AcpcPokerTypes::
|
116
|
+
@patient = AcpcPokerTypes::DealerData::HandResults.parse(
|
118
117
|
log_statements,
|
119
118
|
@player_names,
|
120
119
|
AcpcDealer::DEALER_DIRECTORY
|
@@ -127,7 +126,7 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
127
126
|
@no_final_score = true
|
128
127
|
num_hands = 3
|
129
128
|
init_data do |log_statements|
|
130
|
-
@patient = AcpcPokerTypes::
|
129
|
+
@patient = AcpcPokerTypes::DealerData::HandResults.parse(
|
131
130
|
log_statements,
|
132
131
|
@player_names,
|
133
132
|
AcpcDealer::DEALER_DIRECTORY,
|
@@ -155,7 +154,7 @@ describe AcpcPokerTypes::AcpcDealerData::HandResults do
|
|
155
154
|
@final_score = data_hash[:final_score]
|
156
155
|
@data = data_hash[:data]
|
157
156
|
@player_names = data_hash[:player_names]
|
158
|
-
@match_def = AcpcPokerTypes::
|
157
|
+
@match_def = AcpcPokerTypes::DealerData::MatchDefinition.parse(
|
159
158
|
data_hash[:log_statements].first,
|
160
159
|
@player_names,
|
161
160
|
AcpcDealer::DEALER_DIRECTORY
|
@@ -1,13 +1,12 @@
|
|
1
|
-
|
2
1
|
# Spec helper (must include first to track code coverage with SimpleCov)
|
3
|
-
require_relative 'support/spec_helper'
|
2
|
+
require_relative '../support/spec_helper'
|
4
3
|
|
5
4
|
require 'acpc_poker_types/game_definition'
|
6
5
|
require 'acpc_dealer'
|
7
6
|
|
8
|
-
require 'acpc_poker_types/
|
7
|
+
require 'acpc_poker_types/dealer_data/match_definition'
|
9
8
|
|
10
|
-
describe AcpcPokerTypes::
|
9
|
+
describe AcpcPokerTypes::DealerData::MatchDefinition do
|
11
10
|
before do
|
12
11
|
@name = nil
|
13
12
|
@game_def = nil
|
@@ -20,31 +19,31 @@ describe AcpcPokerTypes::AcpcDealerData::MatchDefinition do
|
|
20
19
|
it 'raises an exception if the number of player names does not match the number of players' do
|
21
20
|
init_components do
|
22
21
|
->() do
|
23
|
-
@patient = AcpcPokerTypes::
|
22
|
+
@patient = AcpcPokerTypes::DealerData::MatchDefinition.new(
|
24
23
|
@name,
|
25
24
|
@game_def,
|
26
25
|
@number_of_hands,
|
27
26
|
@random_seed,
|
28
27
|
@player_names + ['extra player']
|
29
28
|
)
|
30
|
-
end.must_raise AcpcPokerTypes::
|
29
|
+
end.must_raise AcpcPokerTypes::DealerData::MatchDefinition::IncorrectNumberOfPlayerNames
|
31
30
|
|
32
31
|
->() do
|
33
|
-
@patient = AcpcPokerTypes::
|
32
|
+
@patient = AcpcPokerTypes::DealerData::MatchDefinition.new(
|
34
33
|
@name,
|
35
34
|
@game_def,
|
36
35
|
@number_of_hands,
|
37
36
|
@random_seed,
|
38
37
|
[@player_names.first]
|
39
38
|
)
|
40
|
-
end.must_raise AcpcPokerTypes::
|
39
|
+
end.must_raise AcpcPokerTypes::DealerData::MatchDefinition::IncorrectNumberOfPlayerNames
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
44
43
|
describe 'can be created by providing components' do
|
45
44
|
it 'separately' do
|
46
45
|
init_components do
|
47
|
-
@patient = AcpcPokerTypes::
|
46
|
+
@patient = AcpcPokerTypes::DealerData::MatchDefinition.new(
|
48
47
|
@name,
|
49
48
|
@game_def,
|
50
49
|
@number_of_hands,
|
@@ -58,7 +57,7 @@ describe AcpcPokerTypes::AcpcDealerData::MatchDefinition do
|
|
58
57
|
it 'in string format "# name/game/hands/seed ..."' do
|
59
58
|
init_components do
|
60
59
|
string = "# name/game/hands/seed #{@name} #{@game_def_file_name} #{@number_of_hands} #{@random_seed}\n"
|
61
|
-
@patient = AcpcPokerTypes::
|
60
|
+
@patient = AcpcPokerTypes::DealerData::MatchDefinition.parse(string, @player_names, File.dirname(@game_def_file_name))
|
62
61
|
|
63
62
|
check_patient
|
64
63
|
end
|
@@ -66,7 +65,7 @@ describe AcpcPokerTypes::AcpcDealerData::MatchDefinition do
|
|
66
65
|
end
|
67
66
|
it 'returns nil if asked to parse an improperly formatted string' do
|
68
67
|
string = 'improperly formatted string'
|
69
|
-
@patient = AcpcPokerTypes::
|
68
|
+
@patient = AcpcPokerTypes::DealerData::MatchDefinition.parse(string, ['p1', 'p2'], 'game def directory').must_be_nil
|
70
69
|
end
|
71
70
|
|
72
71
|
def init_components
|
@@ -1,6 +1,5 @@
|
|
1
|
-
|
2
1
|
# Spec helper (must include first to track code coverage with SimpleCov)
|
3
|
-
require_relative 'support/spec_helper'
|
2
|
+
require_relative '../support/spec_helper'
|
4
3
|
|
5
4
|
require 'mocha/setup'
|
6
5
|
|
@@ -8,12 +7,12 @@ require 'acpc_dealer'
|
|
8
7
|
require 'acpc_poker_types/match_state'
|
9
8
|
require 'acpc_poker_types/poker_action'
|
10
9
|
|
11
|
-
require 'acpc_poker_types/
|
12
|
-
require 'acpc_poker_types/
|
13
|
-
require 'acpc_poker_types/
|
10
|
+
require 'acpc_poker_types/dealer_data/hand_data'
|
11
|
+
require 'acpc_poker_types/dealer_data/match_definition'
|
12
|
+
require 'acpc_poker_types/dealer_data/poker_match_data'
|
14
13
|
|
15
14
|
include AcpcPokerTypes
|
16
|
-
include AcpcPokerTypes::
|
15
|
+
include AcpcPokerTypes::DealerData
|
17
16
|
|
18
17
|
describe PokerMatchData do
|
19
18
|
before do
|
@@ -149,7 +148,7 @@ describe PokerMatchData do
|
|
149
148
|
end
|
150
149
|
end
|
151
150
|
describe '#player_acting_sequence' do
|
152
|
-
describe "doesn't append an empty array to the list when
|
151
|
+
describe "doesn't append an empty array to the list when all but one player has folded" do
|
153
152
|
it 'in two player' do
|
154
153
|
action_messages =
|
155
154
|
"# name/game/hands/seed 2p.limit.h1000.r0 holdem.limit.2p.reverse_blinds.game 1 0
|
@@ -235,6 +234,48 @@ describe PokerMatchData do
|
|
235
234
|
@patient.player_acting_sequence.must_equal player_acting_sequence
|
236
235
|
end
|
237
236
|
end
|
237
|
+
describe "appends an empty array to the list whenever a new round is encountered" do
|
238
|
+
it 'in two player' do
|
239
|
+
action_messages =
|
240
|
+
"# name/game/hands/seed 2p.nolimit.h1000.r0 /home/dmorrill/.rvm/gems/ruby-1.9.3-p194/gems/acpc_dealer-0.0.1/vendor/project_acpc_server/holdem.nolimit.2p.reverse_blinds.game 1000 0
|
241
|
+
#--t_response 600000
|
242
|
+
#--t_hand 600000
|
243
|
+
#--t_per_hand 7000
|
244
|
+
STARTED at 1341695920.914516
|
245
|
+
TO 1 at 1341695920.914700 MATCHSTATE:0:0::5d5c|
|
246
|
+
TO 2 at 1341695920.914745 MATCHSTATE:1:0::|9hQd
|
247
|
+
FROM 2 at 1341695920.914807 MATCHSTATE:1:0::|9hQd:r19686
|
248
|
+
TO 1 at 1341695920.914864 MATCHSTATE:0:0:r19686:5d5c|
|
249
|
+
TO 2 at 1341695920.914907 MATCHSTATE:1:0:r19686:|9hQd
|
250
|
+
FROM 1 at 1341695920.914935 MATCHSTATE:0:0:r19686:5d5c|:r20000
|
251
|
+
TO 1 at 1341695920.914988 MATCHSTATE:0:0:r19686r20000:5d5c|
|
252
|
+
TO 2 at 1341695920.915032 MATCHSTATE:1:0:r19686r20000:|9hQd
|
253
|
+
FROM 2 at 1341695920.915073 MATCHSTATE:1:0:r19686r20000:|9hQd:c
|
254
|
+
TO 1 at 1341695920.915193 MATCHSTATE:0:0:r19686r20000c///:5d5c|9hQd/8dAs8s/4h/6d
|
255
|
+
TO 2 at 1341695920.915232 MATCHSTATE:1:0:r19686r20000c///:5d5c|9hQd/8dAs8s/4h/6d
|
256
|
+
SCORE:20000|-20000:p1|p2".split("\n").map {|line| line += "\n" }
|
257
|
+
|
258
|
+
result_messages =
|
259
|
+
"# name/game/hands/seed 2p.nolimit.h1000.r0 /home/dmorrill/.rvm/gems/ruby-1.9.3-p194/gems/acpc_dealer-0.0.1/vendor/project_acpc_server/holdem.nolimit.2p.reverse_blinds.game 1000 0
|
260
|
+
#--t_response 600000
|
261
|
+
#--t_hand 600000
|
262
|
+
#--t_per_hand 7000
|
263
|
+
STATE:0:r19686r20000c///:5d5c|9hQd/8dAs8s/4h/6d:20000|-20000:p1|p2
|
264
|
+
SCORE:20000|-20000:p1|p2".split("\n").map {|line| line += "\n" }
|
265
|
+
|
266
|
+
player_acting_sequence = [[1, 0, 1], [], [], []]
|
267
|
+
@patient = PokerMatchData.parse(
|
268
|
+
action_messages,
|
269
|
+
result_messages,
|
270
|
+
['p1', 'p2'],
|
271
|
+
AcpcDealer::DEALER_DIRECTORY
|
272
|
+
)
|
273
|
+
|
274
|
+
@patient.hand_number = 0
|
275
|
+
@patient.current_hand.turn_number = @patient.current_hand.data.length - 1
|
276
|
+
@patient.player_acting_sequence.must_equal player_acting_sequence
|
277
|
+
end
|
278
|
+
end
|
238
279
|
end
|
239
280
|
|
240
281
|
def check_patient
|
@@ -1,14 +1,7 @@
|
|
1
1
|
require_relative 'support/spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
require_relative "../lib/acpc_poker_types/player_group"
|
6
|
-
# require_relative "../lib/acpc_poker_types/game_definition"
|
7
|
-
# require_relative "../lib/acpc_poker_types/match_state"
|
8
|
-
# require_relative "../lib/acpc_poker_types/poker_action"
|
3
|
+
require_relative "../lib/acpc_poker_types/hand_player_group"
|
9
4
|
require_relative "../lib/acpc_poker_types/hand"
|
10
|
-
# require_relative "../lib/acpc_poker_types/card"
|
11
|
-
# require_relative "../lib/acpc_poker_types/acpc_dealer_data/poker_match_data"
|
12
5
|
|
13
6
|
module MapWithIndex
|
14
7
|
refine Array do
|
@@ -26,7 +19,7 @@ using MapWithIndex
|
|
26
19
|
|
27
20
|
include AcpcPokerTypes
|
28
21
|
|
29
|
-
describe
|
22
|
+
describe HandPlayerGroup do
|
30
23
|
describe '::new' do
|
31
24
|
it 'creates HandPlayers at the start of a hand' do
|
32
25
|
stacks = [100, 200, 150]
|
@@ -37,7 +30,7 @@ describe PlayerGroup do
|
|
37
30
|
|
38
31
|
hands[position] = arbitrary_hole_card_hand
|
39
32
|
|
40
|
-
|
33
|
+
HandPlayerGroup.new(
|
41
34
|
hands,
|
42
35
|
stacks,
|
43
36
|
blinds
|