ruby-poker 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: 9070959501edf045c9d745325c51573314ecbc11
4
- data.tar.gz: 8616e190cbcce32c2ad4f9455df760f0649fbb59
3
+ metadata.gz: 75efea8a8c606fa75f028780bdefac44f3855d2f
4
+ data.tar.gz: 3f20045773339569ba68d5bc94ea2308245cd110
5
5
  SHA512:
6
- metadata.gz: f0dae2e671b57b3c98d092b200544b8e4423adedf4d66a4c360f202e2df39b9ef96f1e62b66286c1a78d1bd8f2cbd4f335df2c8831bffbd14fbccf292bc6a0ba
7
- data.tar.gz: deb4dba594571df9ec74a1b368f11d86e10db12003bc849cecf19810eed73d94c252d14c4d77354332399d3876dfb2c5bfd3ef0b8346d0badc893019ddf001bc
6
+ metadata.gz: 4a9b9fe4f0e15e16981cc377ff0ba96f172537c9c9ea619b2f076515570c29bc27fccdb7d7a0e550cbf4d61581db8181aaac572a007254b6cd84e350ee629f62
7
+ data.tar.gz: e90a2a1661cfbc8457ff3bac50c945cea85071b6dd3611a98d4f52d947553cbccb8aa474153e142849bf8c5bc540af1269c955e9e51b9d9fd99f07a0dc5fec05
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 2014-09-01 (1.0.1)
2
+ * Rearrange full house cards to return correct order when low pairs. (Stuart Hanscombe)
3
+
1
4
  2013-12-28 (1.0.0)
2
5
  * Add Gemfile
3
6
  * Add "Empty Hand" rank for empty hands. Fixes #1.
@@ -1,4 +1,4 @@
1
- = Poker library in Ruby
1
+ = Poker library in Ruby {<img src="https://travis-ci.org/robolson/ruby-poker.png?branch=master" alt="Build Status" />}[https://travis-ci.org/robolson/ruby-poker]
2
2
  ===
3
3
 
4
4
  Author:: {Rob Olson}[https://github.com/robolson]
@@ -39,7 +39,7 @@ Place that line near the beginning of your program. The change is program wide s
39
39
 
40
40
  == Compatibility
41
41
 
42
- Ruby-Poker is compatible with Ruby 1.8, Ruby 1.9, Ruby 2.0.
42
+ Ruby-Poker is compatible with Ruby 1.8, Ruby 1.9, and Ruby 2.X.
43
43
 
44
44
  == RDoc
45
45
 
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ Rake::TestTask.new do |t|
3
3
  t.libs = ['lib']
4
4
  t.verbose = true
5
5
  t.warning = true
6
- t.test_files = FileList['test/test_card.rb', 'test/test_poker_hand.rb']
6
+ t.test_files = FileList['test/test_card.rb', 'test/test_poker_hand.rb', 'test/test_full_house.rb']
7
7
  end
8
8
 
9
9
  task :default => :test
@@ -105,15 +105,13 @@ class PokerHand
105
105
 
106
106
  def full_house?
107
107
  if (md = (by_face =~ /(.). \1. \1. (.*)(.). \3./))
108
- arranged_hand = arrange_hand(md[0] + ' ' +
109
- md.pre_match + ' ' + md[2] + ' ' + md.post_match)
108
+ arranged_hand = rearrange_full_house(by_face.cards)
110
109
  [
111
110
  [7, Card::face_value(md[1]), Card::face_value(md[3])],
112
111
  arranged_hand
113
112
  ]
114
113
  elsif (md = (by_face =~ /((.). \2.) (.*)((.). \5. \5.)/))
115
- arranged_hand = arrange_hand(md[4] + ' ' + md[1] + ' ' +
116
- md.pre_match + ' ' + md[3] + ' ' + md.post_match)
114
+ arranged_hand = rearrange_full_house(by_face.cards)
117
115
  [
118
116
  [7, Card::face_value(md[5]), Card::face_value(md[2])],
119
117
  arranged_hand
@@ -139,7 +137,6 @@ class PokerHand
139
137
  end
140
138
 
141
139
  def straight?
142
- result = false
143
140
  if hand.size >= 5
144
141
  transform = delta_transform
145
142
  # note we can have more than one delta 0 that we
@@ -154,9 +151,10 @@ class PokerHand
154
151
  if (md = (/.(.). 1.. 1.. 1.. 1../.match(transform)))
155
152
  high_card = Card::face_value(md[1])
156
153
  arranged_hand = fix_low_ace_display(md[0] + ' ' + md.pre_match + ' ' + md.post_match)
157
- result = [[5, high_card], arranged_hand]
154
+ return [[5, high_card], arranged_hand]
158
155
  end
159
156
  end
157
+ false
160
158
  end
161
159
 
162
160
  def three_of_a_kind?
@@ -505,4 +503,12 @@ class PokerHand
505
503
  arranged_hand.gsub(/\s+$/, '')
506
504
  end
507
505
 
506
+ def rearrange_full_house(cards)
507
+ card_array = cards.split.uniq
508
+ card_hash = Hash[card_array.collect{|c| [c[0], card_array.count{|n| n[0] == c[0]}]}]
509
+ arranged_hand = card_array.select{|c| c if c[0] == card_hash.key(3)}
510
+ arranged_hand += card_array.select{|c| c if c[0] == card_hash.key(2)}
511
+ (arranged_hand + (card_array - arranged_hand)).join(" ")
512
+ end
513
+
508
514
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "ruby-poker"
3
- s.version = "1.0.0"
3
+ s.version = "1.0.1"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.summary = "Poker library in Ruby"
6
6
  s.description = "Ruby library for comparing poker hands and determining the winner."
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  "Rakefile",
19
19
  "README.rdoc",
20
20
  "ruby-poker.gemspec"]
21
- s.test_files = ["test/test_helper.rb", "test/test_card.rb", "test/test_poker_hand.rb"]
21
+ s.test_files = ["test/test_helper.rb", "test/test_card.rb", "test/test_poker_hand.rb", "test/test_full_house.rb"]
22
22
  s.require_paths << 'lib'
23
23
 
24
24
  s.extra_rdoc_files = ["README.rdoc", "CHANGELOG", "LICENSE"]
@@ -0,0 +1,32 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+
3
+ class TestFullHouse < Test::Unit::TestCase
4
+
5
+ context "A Full House should return the correct cards from sort_using_rank" do
6
+
7
+ setup do
8
+ @fh_high_pair = PokerHand.new("8h 8d 8c Qh Td Kd Ks")
9
+ @fh_low_pair = PokerHand.new("8h 8d 8c Qh Td 4h 4d")
10
+ @fh_high_trips = PokerHand.new("Kh Kd Kc Qh Td 8h 8d")
11
+ @fh_low_trips = PokerHand.new("4h 4d 4c Qh Td Kd Ks")
12
+ end
13
+
14
+ should "full house #sort_using_rank from seven cards (high pair) should return correct cards" do
15
+ assert_equal("8h 8d 8c Ks Kd Qh Td", @fh_high_pair.sort_using_rank)
16
+ end
17
+
18
+ should "full house #sort_using_rank from seven cards (low pair) should return correct cards" do
19
+ assert_equal("8h 8d 8c 4h 4d Qh Td", @fh_low_pair.sort_using_rank)
20
+ end
21
+
22
+ should "full house #sort_using_rank from seven cards (high trips) should return correct cards" do
23
+ assert_equal("Kh Kd Kc 8h 8d Qh Td", @fh_high_trips.sort_using_rank)
24
+ end
25
+
26
+ should "full house #sort_using_rank from seven cards (low trips) should return correct cards" do
27
+ assert_equal("4h 4d 4c Ks Kd Qh Td", @fh_low_trips.sort_using_rank)
28
+ end
29
+
30
+ end
31
+
32
+ end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-poker
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
  - Rob Olson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-28 00:00:00.000000000 Z
11
+ date: 2014-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shoulda-context
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.1'
27
27
  description: Ruby library for comparing poker hands and determining the winner.
@@ -34,17 +34,18 @@ extra_rdoc_files:
34
34
  - LICENSE
35
35
  files:
36
36
  - CHANGELOG
37
+ - LICENSE
38
+ - README.rdoc
39
+ - Rakefile
37
40
  - examples/deck.rb
38
41
  - examples/quick_example.rb
39
42
  - lib/ruby-poker.rb
40
43
  - lib/ruby-poker/card.rb
41
44
  - lib/ruby-poker/poker_hand.rb
42
- - LICENSE
43
- - Rakefile
44
- - README.rdoc
45
45
  - ruby-poker.gemspec
46
- - test/test_helper.rb
47
46
  - test/test_card.rb
47
+ - test/test_full_house.rb
48
+ - test/test_helper.rb
48
49
  - test/test_poker_hand.rb
49
50
  homepage: https://github.com/robolson/ruby-poker
50
51
  licenses:
@@ -52,28 +53,28 @@ licenses:
52
53
  metadata: {}
53
54
  post_install_message:
54
55
  rdoc_options:
55
- - --title
56
+ - "--title"
56
57
  - Ruby Poker Documentation
57
- - --main
58
+ - "--main"
58
59
  - README.rdoc
59
- - --inline-source
60
- - -q
60
+ - "--inline-source"
61
+ - "-q"
61
62
  require_paths:
62
63
  - lib
63
64
  - lib
64
65
  required_ruby_version: !ruby/object:Gem::Requirement
65
66
  requirements:
66
- - - '>='
67
+ - - ">="
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
69
70
  required_rubygems_version: !ruby/object:Gem::Requirement
70
71
  requirements:
71
- - - '>='
72
+ - - ">="
72
73
  - !ruby/object:Gem::Version
73
74
  version: '0'
74
75
  requirements: []
75
76
  rubyforge_project:
76
- rubygems_version: 2.0.3
77
+ rubygems_version: 2.2.2
77
78
  signing_key:
78
79
  specification_version: 4
79
80
  summary: Poker library in Ruby
@@ -81,3 +82,4 @@ test_files:
81
82
  - test/test_helper.rb
82
83
  - test/test_card.rb
83
84
  - test/test_poker_hand.rb
85
+ - test/test_full_house.rb