holdem 1.0.0 → 1.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.
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