holdem 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0754af8abb3299e3d216afe08268d3a598d36b7f
4
- data.tar.gz: 94286f69b8e84cf14d20c5592cef849621d3ddf0
3
+ metadata.gz: 6926800d2c8e0220fe8dca45c426cd377616245a
4
+ data.tar.gz: ea61981ed82d2d411d4ae02ba1b1302f8fd526cc
5
5
  SHA512:
6
- metadata.gz: b32781200a316d37424ea3723c49ef28fdaf2dc0f13db71a64e213008ab7bb064c08edb21cd59bf3d0b4d6215dd0a108400c98dd7f4bbfb35f93bebdaa1265c7
7
- data.tar.gz: aec81c6ca0f148bc738482434c1dc1b8ad2f135beeaba5b3095093ec164c21fe5d5c18a0ea7f219eeaeccc9e8354059d86343a7ff6ac23e0c52468d6d3218f60
6
+ metadata.gz: 6e588537a1e5971709de0a98ee550c1962fe3134f5677a06d3c9d69d0db57bacb5dec0dc25754eea27775b183356ffdcc3c8b9869d4169f47acdaac6750e1c9a
7
+ data.tar.gz: 011bd038663f9f731f427fb4e98747f0ff9e3fd59156b796c968a491febdcfb8dc5dbad352bfeaa14af22f046eaeeb6acb69d6815e0b43b1cc662e2e3783c336
data/holdem.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.6"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency 'minitest', '~> 5.4.3'
24
+ spec.add_development_dependency 'minitest-reporters', '~> 1.0.8'
24
25
  end
data/lib/holdem/card.rb CHANGED
@@ -8,8 +8,8 @@ class Card
8
8
  FACE_CARDS = { 'T' => 10, 'J' => 11, 'Q' => 12, 'K' => 13, 'A' => 14 }
9
9
 
10
10
  def initialize(card)
11
- @rank, @suit = card.split(//)
12
- @icon = ICONS[suit]
11
+ @rank, @suit = card.chars if card.respond_to?(:chars)
12
+ @icon = ICONS[suit]
13
13
  validate(card)
14
14
  end
15
15
 
data/lib/holdem/deck.rb CHANGED
@@ -1,16 +1,23 @@
1
- class Deck < Array
1
+ require 'forwardable'
2
+
3
+ class Deck
4
+ extend Forwardable
5
+ def_delegators :@deck, :shuffle, :shuffle!, :pop, :size
6
+ attr_reader :deck
7
+
2
8
  def initialize
9
+ @deck = []
3
10
  build_deck
4
11
  end
5
12
 
6
- # add test for #deal
7
13
  alias_method :deal, :pop
14
+ alias_method :count, :size
8
15
 
9
16
  private
10
17
 
11
18
  def build_deck
12
19
  Card::RANKS.each do |rank|
13
- Card::SUITS.each { |suit| self << Card.new(rank + suit) }
20
+ Card::SUITS.each { |suit| deck << Card.new(rank + suit) }
14
21
  end
15
22
  end
16
23
  end
@@ -1,10 +1,11 @@
1
+ require 'forwardable'
2
+
1
3
  class PokerHand
2
4
  include Comparable
3
5
  extend Forwardable
4
6
 
5
- def_delegators :@poker_rank, :rank, :score
6
- rank_methods = [ :straight_flush?, :quads?, :four_of_a_kind?, :boat?,
7
- :full_house?, :flush?, :straight?, :three_of_a_kind?,
7
+ rank_methods = [ :rank, :score, :straight_flush?, :quads?, :four_of_a_kind?,
8
+ :boat?, :full_house?, :flush?, :straight?, :three_of_a_kind?,
8
9
  :trips?, :two_pairs?, :two_pair?, :pair? ]
9
10
  def_delegators :@poker_rank, *rank_methods
10
11
 
@@ -30,4 +31,4 @@ class PokerHand
30
31
  def to_s
31
32
  "#{just_cards} -> #{rank}"
32
33
  end
33
- end
34
+ end
@@ -7,15 +7,6 @@ class PokerRank
7
7
  end
8
8
 
9
9
  def build_ranking
10
- # return ["Straight flush", straight_flush_score] if straight_flush?
11
- # return ["Four of a kind", four_kind_score] if four_of_a_kind?
12
- # return ["Full House", full_house_score] if full_house?
13
- # return ["Flush", flush_score] if flush?
14
- # return ["Straight", straight_score] if straight?
15
- # return ["Three of a Kind", three_kind_score] if three_of_a_kind?
16
- # return ["Two Pairs", two_pairs_score] if two_pairs?
17
- # return ["One Pair", pair_score] if pair?
18
- #
19
10
  case
20
11
  when straight_flush? then build_straight_flush
21
12
  when four_of_a_kind? then build_four_kind
@@ -136,11 +127,6 @@ class PokerRank
136
127
  end
137
128
 
138
129
  # HELPER METHODS
139
-
140
- def pair_card_values
141
- pairs.map { |_count, cards| cards.first.value }
142
- end
143
-
144
130
  def high_card
145
131
  sorted_cards.first
146
132
  end
@@ -160,11 +146,17 @@ class PokerRank
160
146
  return suit if count >= 5
161
147
  end
162
148
 
149
+ private
150
+
151
+ # helper method to retrieve card value/rank for each pair
163
152
  def pair_card(num=1)
164
153
  pairs.take(num).map { |_count, cards| cards.last }.last
165
154
  end
166
155
 
167
- #private
156
+ # helper method to calculate poker scores
157
+ def pair_card_values
158
+ pairs.map { |_count, cards| cards.first.value }
159
+ end
168
160
 
169
161
  def sorted_cards
170
162
  @sorted_cards ||= cards.sort_by { |card| card.value * -1 }
@@ -1,3 +1,3 @@
1
1
  module Holdem
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/test/card_test.rb CHANGED
@@ -1,5 +1,4 @@
1
- require 'minitest/autorun'
2
- require 'holdem'
1
+ require_relative 'test_helper'
3
2
 
4
3
  class CardTest < Minitest::Test
5
4
  def setup
@@ -22,13 +21,15 @@ class CardTest < Minitest::Test
22
21
  assert_equal 'c', @card4.suit
23
22
  end
24
23
 
25
- def test_has_icons
24
+ def test_card_icons
26
25
  assert_equal '♦', @card1.icon
27
26
  assert_equal '♥', @card2.icon
28
27
  end
29
28
 
30
29
  def test_invalid_cards
30
+ assert_raises(ArgumentError) { Card.new(56) }
31
31
  assert_raises(ArgumentError) { Card.new('9k') }
32
32
  assert_raises(ArgumentError) { Card.new('d2') }
33
+ assert_raises(ArgumentError) { Card.new('a card') }
33
34
  end
34
35
  end
data/test/deck_test.rb CHANGED
@@ -1,5 +1,4 @@
1
- require 'minitest/autorun'
2
- require 'holdem'
1
+ require_relative 'test_helper'
3
2
 
4
3
  class DeckTest < Minitest::Test
5
4
 
@@ -12,14 +11,15 @@ class DeckTest < Minitest::Test
12
11
  end
13
12
 
14
13
  def test_deck_next_card
15
- card = @deck.dup.pop
14
+ card = Deck.new.pop
16
15
  assert_equal card, @deck.pop
17
16
  assert_equal 51, @deck.size
18
17
  end
19
18
 
20
19
  def test_shuffle
21
- unshuffled = @deck.dup
20
+ unshuffled = @deck
22
21
  shuffled = @deck.shuffle
22
+
23
23
  refute_equal unshuffled, shuffled
24
24
  end
25
- end
25
+ end
@@ -1,5 +1,4 @@
1
- require 'minitest/autorun'
2
- require 'holdem'
1
+ require_relative 'test_helper'
3
2
 
4
3
  class PokerHandTest < Minitest::Test
5
4
  def setup
@@ -1,5 +1,4 @@
1
- require 'minitest/autorun'
2
- require 'holdem'
1
+ require_relative 'test_helper'
3
2
 
4
3
  class PokerRankingTest < Minitest::Test
5
4
 
@@ -0,0 +1,4 @@
1
+ require 'minitest/autorun'
2
+ require "minitest/reporters"
3
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
4
+ require 'holdem'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holdem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Berczel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-28 00:00:00.000000000 Z
11
+ date: 2015-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 5.4.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-reporters
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.8
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.0.8
55
69
  description: A ruby module for creating and comparing Texas Holdem poker hands.
56
70
  email:
57
71
  - jxberc@gmail.com
@@ -76,6 +90,7 @@ files:
76
90
  - test/deck_test.rb
77
91
  - test/poker_hand_test.rb
78
92
  - test/poker_rank_test.rb
93
+ - test/test_helper.rb
79
94
  homepage: ''
80
95
  licenses:
81
96
  - MIT
@@ -96,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
111
  version: '0'
97
112
  requirements: []
98
113
  rubyforge_project:
99
- rubygems_version: 2.4.4
114
+ rubygems_version: 2.4.5
100
115
  signing_key:
101
116
  specification_version: 4
102
117
  summary: A ruby module for creating and comparing Texas Holdem poker hands.
@@ -105,3 +120,4 @@ test_files:
105
120
  - test/deck_test.rb
106
121
  - test/poker_hand_test.rb
107
122
  - test/poker_rank_test.rb
123
+ - test/test_helper.rb