acpc_poker_player_proxy 1.1.3 → 1.2.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.
- checksums.yaml +4 -4
- data/acpc_poker_player_proxy.gemspec +3 -5
- data/lib/acpc_poker_player_proxy/player_proxy.rb +70 -71
- data/lib/acpc_poker_player_proxy/version.rb +1 -1
- data/spec/player_proxy_spec.rb +39 -78
- data/spec/support/spec_helper.rb +1 -16
- metadata +12 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28c7fe64970dadc53c1be54bb537c41ed4ea88b8
|
4
|
+
data.tar.gz: 6c6c7cacd9a0ace29552cc7aaba9015b44dd664d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c457fcdd2b66938335689b1bb09ab3c0e7e8619101f013174b6b6cc07036988aed2313de39de97b5d3a2a47fe9b58c6510d758a781fa1be78ffbbe12fae50f28
|
7
|
+
data.tar.gz: f7bc6000a7e58cb0bed053d322c5ea33ed492ba6ed10148c3b9b4de2d3857fb0e54cec2ffc1604716238ad6b05e3285e567e18deb8418d44bf81d906a177d827
|
@@ -11,9 +11,8 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = %q{ACPC Poker Player Proxy}
|
12
12
|
s.description = %q{A smart proxy for a poker player that connects to the ACPC Dealer and manages match state data}
|
13
13
|
|
14
|
-
s.add_dependency 'acpc_poker_match_state', '~> 2.0'
|
15
14
|
s.add_dependency 'acpc_poker_basic_proxy', '~> 3.0'
|
16
|
-
s.add_dependency 'acpc_poker_types', '~>
|
15
|
+
s.add_dependency 'acpc_poker_types', '~> 7.0'
|
17
16
|
s.add_dependency 'contextual_exceptions', '~> 0.0'
|
18
17
|
s.add_dependency 'methadone', '~> 1.2'
|
19
18
|
s.add_dependency 'acpc_dealer', '~> 2.0'
|
@@ -25,10 +24,9 @@ Gem::Specification.new do |s|
|
|
25
24
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
26
25
|
s.require_paths = ["lib"]
|
27
26
|
|
28
|
-
s.add_development_dependency '
|
29
|
-
s.add_development_dependency '
|
27
|
+
s.add_development_dependency 'minitest', '~> 5.0.6'
|
28
|
+
s.add_development_dependency 'mocha', '~> 0.13'
|
30
29
|
s.add_development_dependency 'awesome_print', '~> 1.0'
|
31
30
|
s.add_development_dependency 'pry-rescue', '~> 1.0'
|
32
31
|
s.add_development_dependency 'simplecov', '~> 0.7'
|
33
|
-
s.add_development_dependency 'mocha', '~> 0.13'
|
34
32
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
require '
|
1
|
+
require 'delegate'
|
2
|
+
|
3
|
+
require 'acpc_poker_types/players_at_the_table'
|
2
4
|
require 'acpc_poker_types/player'
|
3
5
|
require 'acpc_poker_types/game_definition'
|
4
6
|
require 'acpc_poker_basic_proxy/basic_proxy'
|
@@ -7,101 +9,98 @@ require 'contextual_exceptions'
|
|
7
9
|
using ContextualExceptions::ClassRefinement
|
8
10
|
|
9
11
|
module AcpcPokerPlayerProxy
|
10
|
-
class PlayerProxy
|
11
|
-
include AcpcPokerTypes
|
12
|
-
include AcpcPokerMatchState
|
13
|
-
include AcpcPokerBasicProxy
|
14
12
|
|
15
|
-
|
13
|
+
class PlayerProxy < DelegateClass(AcpcPokerTypes::PlayersAtTheTable)
|
14
|
+
include AcpcPokerTypes
|
15
|
+
include AcpcPokerBasicProxy
|
16
16
|
|
17
|
-
|
18
|
-
# in which, this player is participating, since this object's instantiation.
|
19
|
-
attr_reader :players_at_the_table
|
17
|
+
exceptions :match_ended
|
20
18
|
|
21
|
-
|
19
|
+
# @return [PlayersAtTheTable] Summary of the progression of the match
|
20
|
+
# in which, this player is participating, since this object's instantiation.
|
21
|
+
attr_reader :players_at_the_table
|
22
22
|
|
23
|
-
|
23
|
+
attr_reader :match_has_ended
|
24
24
|
|
25
|
-
|
25
|
+
attr_reader :game_def
|
26
26
|
|
27
|
-
|
27
|
+
# @param [DealerInformation] dealer_information Information about the dealer to which this bot should connect.
|
28
|
+
# @param [GameDefinition, #to_s] game_definition_argument A game definition; either a +GameDefinition+ or the name of the file containing a game definition.
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
game_definition_argument,
|
37
|
-
player_names='user p2',
|
38
|
-
number_of_hands=1
|
30
|
+
def initialize(
|
31
|
+
dealer_information,
|
32
|
+
game_definition_argument,
|
33
|
+
users_seat = nil
|
34
|
+
)
|
35
|
+
game_def = if game_definition_argument.kind_of?(
|
36
|
+
GameDefinition
|
39
37
|
)
|
40
|
-
|
41
|
-
|
42
|
-
)
|
43
|
-
|
44
|
-
|
45
|
-
GameDefinition.parse_file(game_definition_argument)
|
46
|
-
end
|
47
|
-
@basic_proxy = BasicProxy.new dealer_information
|
48
|
-
|
49
|
-
@player_names = player_names.split(/,?\s+/)
|
50
|
-
|
51
|
-
@users_seat = users_seat
|
38
|
+
game_definition_argument
|
39
|
+
else
|
40
|
+
GameDefinition.parse_file(game_definition_argument)
|
41
|
+
end
|
42
|
+
@basic_proxy = BasicProxy.new dealer_information
|
52
43
|
|
53
|
-
|
44
|
+
@players_at_the_table = if users_seat
|
45
|
+
PlayersAtTheTable.seat_players game_def, users_seat
|
46
|
+
else
|
47
|
+
PlayersAtTheTable.seat_players game_def
|
48
|
+
end
|
54
49
|
|
55
|
-
|
50
|
+
@match_has_ended = false
|
56
51
|
|
57
|
-
|
52
|
+
yield @players_at_the_table if block_given?
|
58
53
|
|
59
|
-
|
60
|
-
|
61
|
-
end
|
54
|
+
update_match_state_if_necessary! do |players_at_the_table|
|
55
|
+
yield players_at_the_table if block_given?
|
62
56
|
end
|
63
57
|
|
64
|
-
|
65
|
-
|
66
|
-
def play!(action)
|
67
|
-
if @players_at_the_table.match_ended?
|
68
|
-
raise MatchEnded, "Cannot take action #{action} because the match has ended!"
|
69
|
-
end
|
58
|
+
super @players_at_the_table
|
59
|
+
end
|
70
60
|
|
61
|
+
# Player action interface
|
62
|
+
# @param [PokerAction] action The action to take.
|
63
|
+
def play!(action)
|
64
|
+
begin
|
71
65
|
@basic_proxy.send_action action
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
66
|
+
rescue AcpcPokerBasicProxy::DealerStream::UnableToWriteToDealer => e
|
67
|
+
raise MatchEnded.new.with_context(
|
68
|
+
"Cannot take action #{action} because the match has ended!",
|
69
|
+
e
|
70
|
+
)
|
76
71
|
end
|
77
72
|
|
78
|
-
|
73
|
+
update_match_state! do |players_at_the_table|
|
74
|
+
__setobj__ @players_at_the_table = players_at_the_table
|
79
75
|
|
80
|
-
|
81
|
-
return self if @players_at_the_table.users_turn_to_act? || @players_at_the_table.match_ended?
|
82
|
-
|
83
|
-
update_match_state! do |players_at_the_table|
|
84
|
-
yield players_at_the_table
|
85
|
-
end
|
76
|
+
yield @players_at_the_table if block_given?
|
86
77
|
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def match_ended?
|
81
|
+
@match_has_ended
|
82
|
+
end
|
87
83
|
|
88
|
-
|
89
|
-
@players_at_the_table.update!(@basic_proxy.receive_match_state!)
|
84
|
+
private
|
90
85
|
|
91
|
-
|
86
|
+
def update_match_state_if_necessary!
|
87
|
+
return self if @players_at_the_table.users_turn_to_act? || match_ended?
|
92
88
|
|
93
|
-
|
94
|
-
|
95
|
-
end
|
89
|
+
update_match_state! do |players_at_the_table|
|
90
|
+
yield players_at_the_table if block_given?
|
96
91
|
end
|
92
|
+
end
|
97
93
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
94
|
+
def update_match_state!
|
95
|
+
begin
|
96
|
+
yield @players_at_the_table.update!(@basic_proxy.receive_match_state!) if block_given?
|
97
|
+
rescue AcpcPokerBasicProxy::DealerStream::UnableToGetFromDealer
|
98
|
+
@match_has_ended = true
|
99
|
+
end
|
100
|
+
|
101
|
+
update_match_state_if_necessary! do |players_at_the_table|
|
102
|
+
yield players_at_the_table if block_given?
|
105
103
|
end
|
106
104
|
end
|
105
|
+
end
|
107
106
|
end
|
data/spec/player_proxy_spec.rb
CHANGED
@@ -9,14 +9,14 @@ require 'acpc_dealer'
|
|
9
9
|
require 'acpc_poker_player_proxy/player_proxy'
|
10
10
|
|
11
11
|
include AcpcPokerTypes
|
12
|
-
include
|
12
|
+
include DealerData
|
13
13
|
include AcpcPokerBasicProxy
|
14
14
|
include AcpcPokerPlayerProxy
|
15
15
|
|
16
16
|
describe PlayerProxy do
|
17
17
|
PORT_NUMBER = 9001
|
18
18
|
HOST_NAME = 'localhost'
|
19
|
-
DEALER_INFO = AcpcDealer::ConnectionInformation.new
|
19
|
+
DEALER_INFO = AcpcDealer::ConnectionInformation.new PORT_NUMBER, HOST_NAME
|
20
20
|
|
21
21
|
describe '#update!' do
|
22
22
|
describe "keeps track of state for a sequence of match states and actions in Doyle's game" do
|
@@ -25,28 +25,23 @@ describe PlayerProxy do
|
|
25
25
|
# Some interesting three player hands occur after 120
|
26
26
|
# Careful though, even 10 hands takes about 7 seconds,
|
27
27
|
# and it scales more than linearly
|
28
|
-
num_hands =
|
28
|
+
num_hands = 200
|
29
29
|
each_match(num_hands) do |match|
|
30
30
|
@match = match
|
31
31
|
@match.for_every_seat! do |users_seat|
|
32
32
|
|
33
33
|
@basic_proxy = init_basic_proxy
|
34
34
|
|
35
|
-
@patient = PlayerProxy.new(
|
36
|
-
DEALER_INFO,
|
37
|
-
users_seat,
|
38
|
-
@match.match_def.game_def,
|
39
|
-
@match.players.map { |player| player.name }.join(' '),
|
40
|
-
num_hands
|
41
|
-
) do |patt|
|
42
|
-
|
35
|
+
@patient = PlayerProxy.new(DEALER_INFO, @match.match_def.game_def, users_seat) do |patt|
|
43
36
|
check_players_at_the_table patt
|
44
37
|
|
45
38
|
@match.next_hand! unless @match.hand_number
|
46
39
|
|
47
40
|
if @match.current_hand.final_turn?
|
48
41
|
@match.current_hand.end_hand!
|
42
|
+
|
49
43
|
break if @match.final_hand?
|
44
|
+
|
50
45
|
@match.next_hand!
|
51
46
|
end
|
52
47
|
@match.next_turn!
|
@@ -104,87 +99,67 @@ describe PlayerProxy do
|
|
104
99
|
def check_players_at_the_table(patient)
|
105
100
|
patient.player_acting_sequence.must_equal @match.player_acting_sequence
|
106
101
|
patient.players.length.must_equal @match.players.length
|
107
|
-
check_last_action patient
|
108
102
|
check_next_to_act patient
|
109
103
|
check_last_turn patient
|
110
|
-
patient.
|
111
|
-
patient.
|
112
|
-
patient
|
104
|
+
patient.player_acting_sequence_string.must_equal @match.player_acting_sequence_string
|
105
|
+
patient.users_turn_to_act?.must_equal @match.users_turn_to_act?
|
106
|
+
check_betting_sequence patient
|
113
107
|
|
114
108
|
if @match.current_hand
|
115
109
|
patient.hand_ended?.must_equal @match.current_hand.final_turn?
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
@match.final_hand?
|
110
|
+
unless @match.current_hand.final_turn?
|
111
|
+
patient.match_state.all_hands.each do |hand|
|
112
|
+
hand.each do |card|
|
113
|
+
card.must_be_kind_of AcpcPokerTypes::Card
|
114
|
+
end
|
115
|
+
end
|
123
116
|
end
|
124
|
-
|
125
|
-
patient.player_acting_sequence_string.must_equal @match.player_acting_sequence_string
|
126
|
-
patient.users_turn_to_act?.must_equal @match.users_turn_to_act?
|
127
|
-
check_betting_sequence patient
|
117
|
+
end
|
128
118
|
# @todo Test this eventually
|
129
119
|
# patient.min_wager.to_i.must_equal @min_wager.to_i
|
130
120
|
end
|
121
|
+
|
131
122
|
def check_player_blind_relation(patient)
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
123
|
+
patient.position_relative_to_dealer(patient.big_blind_payer).must_equal(
|
124
|
+
@match.match_def.game_def.blinds.index(@match.match_def.game_def.blinds.max)
|
125
|
+
)
|
126
|
+
patient.position_relative_to_dealer(patient.small_blind_payer).must_equal(
|
127
|
+
@match.match_def.game_def.blinds.index do |blind|
|
128
|
+
blind < @match.match_def.game_def.blinds.max && blind > 0
|
136
129
|
end
|
137
|
-
|
138
|
-
expected_player = expected_player_and_blind.first
|
139
|
-
expected_blind = expected_player_and_blind.last
|
140
|
-
|
141
|
-
player.close_enough?(expected_player).must_equal true
|
142
|
-
blind.must_equal expected_blind
|
143
|
-
end
|
130
|
+
)
|
144
131
|
end
|
145
132
|
def check_betting_sequence(patient)
|
146
|
-
|
147
|
-
|
148
|
-
end
|
149
|
-
expected_betting_sequence = @match.betting_sequence.map do |actions|
|
150
|
-
actions.map { |action| action.to_s }
|
133
|
+
x_betting_sequence = @match.betting_sequence.map do |actions|
|
134
|
+
actions.map { |action| AcpcPokerTypes::PokerAction.new(action).to_s }
|
151
135
|
end
|
152
|
-
patient_betting_sequence.must_equal expected_betting_sequence
|
153
136
|
|
154
|
-
|
137
|
+
return x_betting_sequence.flatten.empty?.must_equal(true) unless patient.match_state
|
138
|
+
|
139
|
+
patient.match_state.betting_sequence.map do |actions|
|
140
|
+
actions.map { |action| AcpcPokerTypes::PokerAction.new(action).to_s }
|
141
|
+
end.must_equal x_betting_sequence
|
142
|
+
|
143
|
+
patient.match_state.betting_sequence_string.scan(/([a-z]\d*|\/)/).flatten.map do |action|
|
155
144
|
if action.match(/\//)
|
156
145
|
action
|
157
146
|
else
|
158
|
-
PokerAction.new(action).to_s
|
147
|
+
AcpcPokerTypes::PokerAction.new(action).to_s
|
159
148
|
end
|
160
149
|
end.join('').must_equal @match.betting_sequence_string
|
161
150
|
end
|
162
|
-
def check_last_action(patient)
|
163
|
-
if @match.current_hand && @match.current_hand.last_action
|
164
|
-
patient.player_who_acted_last.seat.must_equal @match.current_hand.last_action.seat
|
165
|
-
else
|
166
|
-
patient.player_who_acted_last.must_be_nil
|
167
|
-
end
|
168
|
-
end
|
169
151
|
def check_next_to_act(patient)
|
170
152
|
if @match.current_hand && @match.current_hand.next_action
|
171
153
|
patient.next_player_to_act.seat.must_equal @match.current_hand.next_action.seat
|
172
154
|
else
|
173
|
-
patient.next_player_to_act.must_be_nil
|
155
|
+
patient.next_player_to_act.seat.must_be_nil
|
174
156
|
end
|
175
157
|
end
|
176
158
|
def check_last_turn(patient)
|
177
159
|
return unless @match.current_hand && @match.current_hand.final_turn?
|
160
|
+
|
178
161
|
patient.players.players_close_enough?(@match.players).must_equal true
|
179
|
-
patient
|
180
|
-
patient.opponents.players_close_enough?(@match.opponents).must_equal true
|
181
|
-
patient.non_folded_players.players_close_enough?(@match.non_folded_players).must_equal true
|
182
|
-
patient.active_players.players_close_enough?(@match.active_players).must_equal true
|
183
|
-
patient.player_with_dealer_button.close_enough?(@match.player_with_dealer_button).must_equal true
|
184
|
-
check_player_blind_relation patient
|
185
|
-
patient.chip_stacks.must_equal @match.chip_stacks
|
186
|
-
patient.chip_balances.must_equal @match.chip_balances
|
187
|
-
patient.chip_contributions.flatten.inject(:+).must_equal @match.chip_contributions.flatten.inject(:+)
|
162
|
+
check_player_blind_relation(patient)
|
188
163
|
end
|
189
164
|
end
|
190
165
|
|
@@ -204,22 +179,8 @@ class Array
|
|
204
179
|
end
|
205
180
|
|
206
181
|
class AcpcPokerTypes::Player
|
207
|
-
def acpc_actions_taken_this_hand
|
208
|
-
acpc_actions = @actions_taken_this_hand.map do |actions_per_turn|
|
209
|
-
actions_per_turn.map { |action| AcpcPokerTypes::PokerAction.new(action).to_s }
|
210
|
-
end
|
211
|
-
if acpc_actions.first.empty?
|
212
|
-
acpc_actions
|
213
|
-
else
|
214
|
-
acpc_actions.reject_empty_elements
|
215
|
-
end
|
216
|
-
end
|
217
|
-
|
218
182
|
def close_enough?(other)
|
219
|
-
@name == other.name &&
|
220
183
|
@seat == other.seat &&
|
221
|
-
|
222
|
-
@chip_balance == other.chip_balance &&
|
223
|
-
acpc_actions_taken_this_hand == other.acpc_actions_taken_this_hand
|
184
|
+
balance == other.balance
|
224
185
|
end
|
225
|
-
end
|
186
|
+
end
|
data/spec/support/spec_helper.rb
CHANGED
@@ -1,24 +1,10 @@
|
|
1
1
|
require 'simplecov'
|
2
2
|
SimpleCov.start
|
3
3
|
|
4
|
+
require 'minitest/autorun'
|
4
5
|
require 'minitest/spec'
|
5
|
-
require 'minitest/pride'
|
6
6
|
require 'minitest/mock'
|
7
7
|
|
8
|
-
require 'turn'
|
9
|
-
Turn.config do |c|
|
10
|
-
# use one of output formats:
|
11
|
-
# :outline - turn's original case/test outline mode [default]
|
12
|
-
# :progress - indicates progress with progress bar
|
13
|
-
# :dotted - test/unit's traditional dot-progress mode
|
14
|
-
# :pretty - new pretty reporter
|
15
|
-
# :marshal - dump output as YAML (normal run mode only)
|
16
|
-
# :cue - interactive testing
|
17
|
-
c.format = :dotted
|
18
|
-
# use humanized test names (works only with :outline format)
|
19
|
-
c.natural = true
|
20
|
-
end
|
21
|
-
|
22
8
|
require 'awesome_print'
|
23
9
|
module Minitest::Assertions
|
24
10
|
def mu_pp(obj)
|
@@ -27,7 +13,6 @@ module Minitest::Assertions
|
|
27
13
|
end
|
28
14
|
|
29
15
|
require 'mocha/setup'
|
30
|
-
require 'pry-rescue/minitest'
|
31
16
|
|
32
17
|
# Match log information in dealer_logs
|
33
18
|
class MatchLog
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acpc_poker_player_proxy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dustin Morrill
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: acpc_poker_match_state
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: acpc_poker_basic_proxy
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +30,14 @@ dependencies:
|
|
44
30
|
requirements:
|
45
31
|
- - ~>
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '7.0'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - ~>
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '7.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: contextual_exceptions
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,33 +81,33 @@ dependencies:
|
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '2.0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
84
|
+
name: minitest
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - ~>
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
89
|
+
version: 5.0.6
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - ~>
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
96
|
+
version: 5.0.6
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: mocha
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
103
|
+
version: '0.13'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - ~>
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
110
|
+
version: '0.13'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: awesome_print
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,20 +150,6 @@ dependencies:
|
|
164
150
|
- - ~>
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: '0.7'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: mocha
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ~>
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0.13'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ~>
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0.13'
|
181
153
|
description: A smart proxy for a poker player that connects to the ACPC Dealer and
|
182
154
|
manages match state data
|
183
155
|
email:
|
@@ -227,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
199
|
version: '0'
|
228
200
|
requirements: []
|
229
201
|
rubyforge_project: acpc_poker_player_proxy
|
230
|
-
rubygems_version: 2.0.
|
202
|
+
rubygems_version: 2.0.3
|
231
203
|
signing_key:
|
232
204
|
specification_version: 4
|
233
205
|
summary: ACPC Poker Player Proxy
|
@@ -242,3 +214,4 @@ test_files:
|
|
242
214
|
- spec/support/dealer_logs/3p.nolimit.h1000.r0.actions.log
|
243
215
|
- spec/support/dealer_logs/3p.nolimit.h1000.r0.log
|
244
216
|
- spec/support/spec_helper.rb
|
217
|
+
has_rdoc:
|