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 +8 -0
- data/VERSION +1 -1
- data/bridge.gemspec +7 -7
- data/lib/bridge/deal.rb +6 -1
- data/lib/bridge/score.rb +9 -6
- data/test/test_deal.rb +5 -0
- data/test/test_score.rb +16 -9
- metadata +7 -7
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
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.
|
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-
|
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/
|
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/
|
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
|
-
|
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]
|
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
|
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
|
158
|
-
|
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 |
|
172
|
-
|
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", :
|
41
|
+
score = Bridge::Score.new(:contract => "3NT", :tricks => 3)
|
42
42
|
assert_false score.made?
|
43
|
-
score = Bridge::Score.new(:contract => "7NT", :
|
43
|
+
score = Bridge::Score.new(:contract => "7NT", :tricks => 13)
|
44
44
|
assert score.made?
|
45
|
-
score = Bridge::Score.new(:contract => "3NT", :
|
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", :
|
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", :
|
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", :
|
76
|
+
score = Bridge::Score.new(:contract => "4S", :tricks => "=")
|
77
77
|
assert_equal 10, score.tricks
|
78
78
|
end
|
79
79
|
|
80
|
-
test "
|
81
|
-
|
82
|
-
|
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
|
-
-
|
9
|
-
version: 0.0.
|
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-
|
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
|