bridge 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  Contract bridge utils.
4
4
 
5
+ == Bid
6
+
7
+ == Card
8
+
9
+ == Deal
10
+
11
+ == Trick
12
+
5
13
  == Score
6
14
 
7
15
  You can create Score object passing 3 arguments:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.17
1
+ 0.0.18
data/bridge.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bridge}
8
- s.version = "0.0.17"
8
+ s.version = "0.0.18"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jakub Kuźma"]
12
- s.date = %q{2010-03-05}
12
+ s.date = %q{2010-03-17}
13
13
  s.description = %q{Useful contract bridge utilities - deal generator, id to deal and deal to id conversion}
14
14
  s.email = %q{qoobaa+github@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -44,13 +44,13 @@ Gem::Specification.new do |s|
44
44
  s.rubygems_version = %q{1.3.6}
45
45
  s.summary = %q{Contract bridge utilities}
46
46
  s.test_files = [
47
- "test/test_bridge.rb",
47
+ "test/helper.rb",
48
+ "test/test_bid.rb",
49
+ "test/test_card.rb",
48
50
  "test/test_trick.rb",
49
51
  "test/test_deal.rb",
50
- "test/helper.rb",
51
- "test/test_score.rb",
52
- "test/test_bid.rb",
53
- "test/test_card.rb"
52
+ "test/test_bridge.rb",
53
+ "test/test_score.rb"
54
54
  ]
55
55
 
56
56
  if s.respond_to? :specification_version then
data/lib/bridge/deal.rb CHANGED
@@ -110,8 +110,13 @@ module Bridge
110
110
  end
111
111
  end
112
112
 
113
+ # Returns hash with hands
114
+ def to_hash
115
+ { "N" => n, "E" => e, "S" => s, "W" => w }
116
+ end
117
+
113
118
  def inspect
114
- { "N" => n, "E" => e, "S" => s, "W" => w }.inspect
119
+ to_hash.inspect
115
120
  end
116
121
 
117
122
  def honour_card_points(side = nil)
data/lib/bridge/score.rb CHANGED
@@ -8,7 +8,8 @@ module Bridge
8
8
  # Bridge::Score.new(:contract => "7SXX", :vulnerable => true, :tricks => "=")
9
9
  def initialize(options = {})
10
10
  @contract, @modifier = split_contract(options[:contract])
11
- @tricks = calculate_tricks(options[:tricks].to_s) if (0..13).to_a.include?(calculate_tricks(options[:tricks].to_s))
11
+ @tricks = calculate_tricks(options[:tricks])
12
+ raise ArgumentError, "invalid tricks: #{@tricks}" unless (0..13).include?(@tricks)
12
13
  @vulnerable = options[:vulnerable] || false
13
14
  end
14
15
 
@@ -149,13 +150,15 @@ module Bridge
149
150
  end
150
151
 
151
152
  def calculate_tricks(tricks)
152
- if tricks =~ /\A\+\d\Z/
153
+ if tricks.kind_of? Numeric
154
+ tricks
155
+ elsif tricks =~ /\A\+\d\Z/
153
156
  tricks_to_make_contract + tricks[1..1].to_i
154
157
  elsif tricks =~ /\A-\d\Z/
155
158
  tricks_to_make_contract - tricks[1..1].to_i
156
159
  elsif tricks =~ /\A=\Z/
157
- tricks_to_make_contract.to_i
158
- else
160
+ tricks_to_make_contract
161
+ elsif tricks =~ /\A\d[0-3]?\Z/
159
162
  tricks.to_i
160
163
  end
161
164
  end
@@ -168,8 +171,8 @@ module Bridge
168
171
 
169
172
  def self.all_contracts
170
173
  result = {}
171
- contracts = %w(1 2 3 4 5 6 7).inject([]) do |b, l|
172
- b += ["H/S", "C/D", "NT"].map { |s| l + s }
174
+ contracts = %w(1 2 3 4 5 6 7).inject([]) do |bids, level|
175
+ bids += ["H/S", "C/D", "NT"].map { |suit| level + suit }
173
176
  end
174
177
  (contracts + contracts.map { |c| c + "X" } + contracts.map { |c| c + "XX" }).each do |contract|
175
178
  [true, false].each do |vulnerable|
data/test/test_deal.rb CHANGED
@@ -120,4 +120,9 @@ class TestDeal < Test::Unit::TestCase
120
120
  assert_equal "W", deal.owner("H6")
121
121
  assert_equal "W", deal.owner("C9")
122
122
  end
123
+
124
+ test "to_hash returns hash" do
125
+ deal = Bridge::Deal.from_id(0)
126
+ assert_equal Hash, deal.to_hash.class
127
+ end
123
128
  end
data/test/test_score.rb CHANGED
@@ -38,11 +38,11 @@ class TestScore < Test::Unit::TestCase
38
38
  test "return made contract?" do
39
39
  score = Bridge::Score.new(:contract => "6S", :tricks => 9)
40
40
  assert_false score.made?
41
- score = Bridge::Score.new(:contract => "3NT", :vulnerable => true, :tricks => 3)
41
+ score = Bridge::Score.new(:contract => "3NT", :tricks => 3)
42
42
  assert_false score.made?
43
- score = Bridge::Score.new(:contract => "7NT", :vulnerable => true, :tricks => 13)
43
+ score = Bridge::Score.new(:contract => "7NT", :tricks => 13)
44
44
  assert score.made?
45
- score = Bridge::Score.new(:contract => "3NT", :vulnerable => true, :tricks => 11)
45
+ score = Bridge::Score.new(:contract => "3NT", :tricks => 11)
46
46
  assert score.made?
47
47
  end
48
48
 
@@ -63,23 +63,30 @@ class TestScore < Test::Unit::TestCase
63
63
  end
64
64
 
65
65
  test "calculate tricks with plus" do
66
- score = Bridge::Score.new(:contract => "4S", :vulnerable => true, :tricks => "+1")
66
+ score = Bridge::Score.new(:contract => "4S", :tricks => "+1")
67
67
  assert_equal 11, score.tricks
68
68
  end
69
69
 
70
70
  test "calculate tricks with minus" do
71
- score = Bridge::Score.new(:contract => "4S", :vulnerable => true, :tricks => "-4")
71
+ score = Bridge::Score.new(:contract => "4S", :tricks => "-4")
72
72
  assert_equal 6, score.tricks
73
73
  end
74
74
 
75
75
  test "calculate tricks with equal sign" do
76
- score = Bridge::Score.new(:contract => "4S", :vulnerable => true, :tricks => "=")
76
+ score = Bridge::Score.new(:contract => "4S", :tricks => "=")
77
77
  assert_equal 10, score.tricks
78
78
  end
79
79
 
80
- test "not set tricks if value out of range" do
81
- score = Bridge::Score.new(:contract => "4S", :vulnerable => true, :tricks => 15)
82
- assert_nil score.tricks
80
+ test "15 is not a valid tricks argument" do
81
+ assert_raises(ArgumentError) do
82
+ Bridge::Score.new(:contract => "4S", :tricks => 15)
83
+ end
84
+ end
85
+
86
+ test "wrong string is not a valid tricks argument" do
87
+ assert_raises(ArgumentError) do
88
+ Bridge::Score.new(:contract => "4S", :tricks => "wrong")
89
+ end
83
90
  end
84
91
  end
85
92
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 17
9
- version: 0.0.17
8
+ - 18
9
+ version: 0.0.18
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Jakub Ku\xC5\xBAma"
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-05 00:00:00 +01:00
17
+ date: 2010-03-17 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -90,10 +90,10 @@ signing_key:
90
90
  specification_version: 3
91
91
  summary: Contract bridge utilities
92
92
  test_files:
93
- - test/test_bridge.rb
94
- - test/test_trick.rb
95
- - test/test_deal.rb
96
93
  - test/helper.rb
97
- - test/test_score.rb
98
94
  - test/test_bid.rb
99
95
  - test/test_card.rb
96
+ - test/test_trick.rb
97
+ - test/test_deal.rb
98
+ - test/test_bridge.rb
99
+ - test/test_score.rb