bridge 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,225 +0,0 @@
1
- require "helper"
2
-
3
- class TestDeal < Test::Unit::TestCase
4
- test "first deal conversion" do
5
- id = 0
6
- deal = Bridge::Deal.from_id(id)
7
- assert deal.valid?
8
- assert_equal %w(SA SK SQ SJ ST S9 S8 S7 S6 S5 S4 S3 S2).map { |c| Bridge::Card.new(c) }, deal.n
9
- assert_equal %w(HA HK HQ HJ HT H9 H8 H7 H6 H5 H4 H3 H2).map { |c| Bridge::Card.new(c) }, deal.e
10
- assert_equal %w(DA DK DQ DJ DT D9 D8 D7 D6 D5 D4 D3 D2).map { |c| Bridge::Card.new(c) }, deal.s
11
- assert_equal %w(CA CK CQ CJ CT C9 C8 C7 C6 C5 C4 C3 C2).map { |c| Bridge::Card.new(c) }, deal.w
12
- assert_equal id, deal.id
13
- end
14
-
15
- test "first deal hcp" do
16
- deal = Bridge::Deal.from_id(0)
17
- assert_equal 10, deal.hcp("N")
18
- assert_equal 10, deal.hcp("E")
19
- assert_equal 10, deal.hcp("S")
20
- assert_equal 10, deal.hcp("W")
21
- assert_equal 20, deal.hcp("NS")
22
- assert_equal 20, deal.hcp("EW")
23
- end
24
-
25
- test "last deal conversion" do
26
- id = Bridge::DEALS - 1
27
- deal = Bridge::Deal.from_id(id)
28
- assert deal.valid?
29
- assert_equal %w(CA CK CQ CJ CT C9 C8 C7 C6 C5 C4 C3 C2).map { |c| Bridge::Card.new(c) }, deal.n
30
- assert_equal %w(DA DK DQ DJ DT D9 D8 D7 D6 D5 D4 D3 D2).map { |c| Bridge::Card.new(c) }, deal.e
31
- assert_equal %w(HA HK HQ HJ HT H9 H8 H7 H6 H5 H4 H3 H2).map { |c| Bridge::Card.new(c) }, deal.s
32
- assert_equal %w(SA SK SQ SJ ST S9 S8 S7 S6 S5 S4 S3 S2).map { |c| Bridge::Card.new(c) }, deal.w
33
- assert_equal id, deal.id
34
- end
35
-
36
- test "last deal hcp" do
37
- deal = Bridge::Deal.from_id(Bridge::DEALS - 1)
38
- assert_equal 10, deal.hcp("N")
39
- assert_equal 10, deal.hcp("E")
40
- assert_equal 10, deal.hcp("S")
41
- assert_equal 10, deal.hcp("W")
42
- assert_equal 20, deal.hcp("NS")
43
- assert_equal 20, deal.hcp("EW")
44
- end
45
-
46
- test "deal no 1 000 000 000 000" do
47
- id = 1_000_000_000_000
48
- deal = Bridge::Deal.from_id(id)
49
- assert deal.valid?
50
- assert_equal id, deal.id
51
- end
52
-
53
- test "sample deal to id conversion" do
54
- deal = Bridge::Deal.new("N" => %w(SA SK SQ SJ HA HK HQ DA DK DQ CA CK CQ),
55
- "E" => %w(ST S9 S8 S7 S6 S5 S4 S3 S2 HJ HT H9 H8),
56
- "S" => %w(H7 H6 H5 H4 H3 H2 DJ DT D9 D8 D7 D6 D5),
57
- "W" => %w(D4 D3 D2 CJ CT C9 C8 C7 C6 C5 C4 C3 C2))
58
- assert deal.valid?
59
- id = deal.id
60
- assert_equal deal, Bridge::Deal.from_id(id)
61
- end
62
-
63
- test "deal with doubled cards is not valid deal" do
64
- deal = Bridge::Deal.new("N" => %w(SA SA SQ SJ HA HK HQ DA DK DQ CA CK CQ),
65
- "E" => %w(ST S9 S8 S7 S6 S5 S4 S3 S2 HJ HT H9 H8),
66
- "S" => %w(H7 H6 H5 H4 H3 H2 DJ DT D9 D8 D7 D6 D5),
67
- "W" => %w(D4 D3 D2 CJ CT C9 C8 C7 C6 C5 C4 C3 C2))
68
- assert_false deal.valid?
69
- end
70
-
71
- test "deal with different length hands is not valid deal" do
72
- deal = Bridge::Deal.new("N" => %w(SA SK SQ SJ HA HK HQ DA DK DQ CA CK CQ ST),
73
- "E" => %w(S9 S8 S7 S6 S5 S4 S3 S2 HJ HT H9 H8),
74
- "S" => %w(H7 H6 H5 H4 H3 H2 DJ DT D9 D8 D7 D6 D5),
75
- "W" => %w(D4 D3 D2 CJ CT C9 C8 C7 C6 C5 C4 C3 C2))
76
- assert_false deal.valid?
77
- end
78
-
79
- test "random deal id is valid deal id" do
80
- id = Bridge::Deal.random_id
81
- assert Bridge.deal_id?(id)
82
- end
83
-
84
- test "random deal is valid deal" do
85
- deal = Bridge::Deal.random
86
- assert deal.valid?
87
- end
88
-
89
- test "comparison of two deals" do
90
- deal1 = Bridge::Deal.from_id(1_000_000_000_000_000)
91
- deal2 = Bridge::Deal.from_id(9_000_000_000_000_000)
92
- assert deal1 < deal2
93
- end
94
-
95
- test "fetching wrong direction raises an error" do
96
- deal = Bridge::Deal.random
97
- assert_raises(ArgumentError) do
98
- deal[:h]
99
- end
100
- end
101
-
102
- test "passing incorrect id to from_id raises an error" do
103
- assert_raises(ArgumentError) do
104
- Bridge::Deal.from_id(-1)
105
- end
106
- end
107
-
108
- test "owner returns correct direction" do
109
- deal = Bridge::Deal.new({ "N" => ["SK", "S9", "S7", "S6", "S4", "S2", "HA", "HJ", "H2", "D7", "D2", "C6", "C3"],
110
- "E" => ["SA", "SJ", "ST", "H3", "DA", "DK", "DT", "D9", "D8", "D5", "D4", "CK", "CJ"],
111
- "S" => ["S8", "S5", "S3", "HK", "HQ", "HT", "H8", "H4", "DQ", "D3", "CQ", "C4", "C2"],
112
- "W" => ["SQ", "H9", "H7", "H6", "H5", "DJ", "D6", "CA", "CT", "C9", "C8", "C7", "C5"] })
113
-
114
- assert_equal "N", deal.owner("SK")
115
- assert_equal "N", deal.owner("C3")
116
- assert_equal "E", deal.owner("SJ")
117
- assert_equal "E", deal.owner("CK")
118
- assert_equal "S", deal.owner("S3")
119
- assert_equal "S", deal.owner("CQ")
120
- assert_equal "W", deal.owner("H6")
121
- assert_equal "W", deal.owner("C9")
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
128
-
129
- test "to_hash returns hash with arrays of strings" do
130
- deal = Bridge::Deal.from_id(0)
131
- assert_equal String, deal.to_hash["N"].first.class
132
- end
133
- end
134
-
135
- class TestDealSort < Test::Unit::TestCase
136
- def setup
137
- @deal = Bridge::Deal.new({ "N" => ["SK", "S9", "S7", "S6", "S4", "HA", "HJ", "H3", "H2", "D7", "D2", "C6", "C3"],
138
- "E" => ["SA", "SQ", "SJ", "ST", "S2", "DA", "DK", "DT", "D9", "D8", "D5", "CK", "CJ"],
139
- "S" => ["S8", "S5", "S3", "HK", "HQ", "HT", "H8", "H4", "DQ", "D3", "CQ", "C4", "C2"],
140
- "W" => ["H9", "H7", "H6", "H5", "DJ", "D6", "D4", "CA", "CT", "C9", "C8", "C7", "C5"] })
141
- end
142
-
143
- test "split cards by color for given direction" do
144
- expected = { "S" => @deal.n.select { |c| c.suit == "S" },
145
- "H" => @deal.n.select { |c| c.suit == "H" },
146
- "D" => @deal.n.select { |c| c.suit == "D" },
147
- "C" => @deal.n.select { |c| c.suit == "C" } }
148
- assert_equal expected, @deal.cards_for("N")
149
- end
150
-
151
- test "return colors as key only if cards are present on hand" do
152
- expected = { "S" => @deal.e.select { |c| c.suit == "S" },
153
- "H" => [],
154
- "D" => @deal.e.select { |c| c.suit == "D" },
155
- "C" => @deal.e.select { |c| c.suit == "C" } }
156
- assert_equal expected, @deal.cards_for("E")
157
- end
158
-
159
- test "return sorted 4 colors" do
160
- assert_equal ["S", "H", "C", "D"], @deal.send(:sort_colors, ["S", "H", "D", "C"])
161
- assert_equal ["S", "H", "C", "D"], @deal.send(:sort_colors, ["H", "D", "S", "C"])
162
- assert_equal ["S", "H", "C", "D"], @deal.send(:sort_colors, ["D", "S", "C", "H"])
163
- end
164
-
165
- test "return sorted 3 colors" do
166
- assert_equal ["S", "H", "C"], @deal.send(:sort_colors, ["S", "H", "C"])
167
- assert_equal ["H", "C", "D"], @deal.send(:sort_colors, ["H", "D", "C"])
168
- assert_equal ["H", "S", "D"], @deal.send(:sort_colors, ["S", "H", "D"])
169
- assert_equal ["S", "D", "C"], @deal.send(:sort_colors, ["S", "D", "C"])
170
- end
171
-
172
- test "return sorted 2 colors" do
173
- assert_equal ["S", "H"], @deal.send(:sort_colors, ["S", "H"])
174
- assert_equal ["S", "D"], @deal.send(:sort_colors, ["S", "D"])
175
- assert_equal ["C", "D"], @deal.send(:sort_colors, ["D", "C"])
176
- # assert_equal ["H", "C"], @deal.sort_colors(["H", "C"])
177
- end
178
-
179
- test "return sorted 4 colors with trump" do
180
- assert_equal ["S", "H", "C", "D"], @deal.send(:sort_colors, ["S", "H", "D", "C"], "S")
181
- assert_equal ["H", "S", "D", "C"], @deal.send(:sort_colors, ["H", "D", "S", "C"], "H")
182
- assert_equal ["D", "S", "H", "C"], @deal.send(:sort_colors, ["D", "S", "C", "H"], "D")
183
- assert_equal ["C", "H", "S", "D"], @deal.send(:sort_colors, ["D", "S", "C", "H"], "C")
184
- end
185
-
186
- test "return sorted 3 colors with trump" do
187
- assert_equal ["S", "H", "C"], @deal.send(:sort_colors, ["S", "H", "C"], "S")
188
- assert_equal ["H", "S", "C"], @deal.send(:sort_colors, ["S", "H", "C"], "H")
189
- assert_equal ["S", "H", "D"], @deal.send(:sort_colors, ["S", "H", "D"], "S")
190
- assert_equal ["D", "S", "H"], @deal.send(:sort_colors, ["S", "H", "D"], "D")
191
- end
192
-
193
- test "return sorted 2 colors with trump" do
194
- assert_equal ["S", "H"], @deal.send(:sort_colors, ["S", "H"], "S")
195
- assert_equal ["H", "S"], @deal.send(:sort_colors, ["S", "H"], "H")
196
- assert_equal ["C", "S"], @deal.send(:sort_colors, ["S", "C"], "C")
197
- assert_equal ["D", "H"], @deal.send(:sort_colors, ["H", "D"], "D")
198
- end
199
-
200
- test "sort hands by colors" do
201
- expected = {
202
- "N" => ["SK", "S9", "S7", "S6", "S4", "HA", "HJ", "H3", "H2", "C6", "C3", "D7", "D2"],
203
- "E" => ["SA", "SQ", "SJ", "ST", "S2", "DA", "DK", "DT", "D9", "D8", "D5", "CK", "CJ"],
204
- "S" => ["S8", "S5", "S3", "HK", "HQ", "HT", "H8", "H4", "CQ", "C4", "C2", "DQ", "D3"],
205
- "W" => ["H9", "H7", "H6", "H5", "CA", "CT", "C9", "C8", "C7", "C5", "DJ", "D6", "D4"]
206
- }
207
- assert_equal expected, @deal.sort_by_color!.to_hash
208
- end
209
-
210
- test "sort hands by colors with trump" do
211
- expected = {
212
- "N" => ["C6", "C3", "HA", "HJ", "H3", "H2", "SK", "S9", "S7", "S6", "S4", "D7", "D2"],
213
- "E" => ["CK", "CJ", "DA", "DK", "DT", "D9", "D8", "D5", "SA", "SQ", "SJ", "ST", "S2"],
214
- "S" => ["CQ", "C4", "C2", "HK", "HQ", "HT", "H8", "H4", "S8", "S5", "S3", "DQ", "D3"],
215
- "W" => ["CA", "CT", "C9", "C8", "C7", "C5", "H9", "H7", "H6", "H5", "DJ", "D6", "D4"]
216
- }
217
- assert_equal expected, @deal.sort_by_color!("C").to_hash
218
- end
219
-
220
- test "not modify hands if sorted by color without !" do
221
- old_deal = @deal.to_hash
222
- @deal.sort_by_color
223
- assert_equal old_deal, @deal.to_hash
224
- end
225
- end
@@ -1,330 +0,0 @@
1
- require "helper"
2
-
3
- class TestScore < Test::Unit::TestCase
4
-
5
- def setup
6
- @score = Bridge::Score.new(:contract => "1S", :vulnerable => false, :tricks => 9)
7
- end
8
-
9
- test "valid score" do
10
- assert_false @score.contract.nil?
11
- assert_false @score.vulnerable.nil?
12
- assert_false @score.tricks.nil?
13
- end
14
-
15
- test "default vulnerable set to false" do
16
- score = Bridge::Score.new(:contract => "1S", :tricks => 9)
17
- assert_equal false, score.vulnerable
18
- end
19
-
20
- test "return modifier and contract when doubled" do
21
- score = Bridge::Score.new(:contract => "4SX", :tricks => 9)
22
- assert_equal 2, score.instance_variable_get(:@modifier)
23
- assert_equal "4S", score.contract.to_s
24
- end
25
-
26
- test "return modifier and contract when redoubled" do
27
- score = Bridge::Score.new(:contract => "4SXX", :tricks => 9)
28
- assert_equal 4, score.instance_variable_get(:@modifier)
29
- assert_equal "4S", score.contract.to_s
30
- end
31
-
32
- test "return tricks to make contract" do
33
- assert_equal 7, @score.tricks_to_make_contract
34
- score = Bridge::Score.new(:contract => "6S", :tricks => 9)
35
- assert_equal 12, score.tricks_to_make_contract
36
- end
37
-
38
- test "return made contract?" do
39
- score = Bridge::Score.new(:contract => "6S", :tricks => 9)
40
- assert_false score.made?
41
- score = Bridge::Score.new(:contract => "3NT", :tricks => 3)
42
- assert_false score.made?
43
- score = Bridge::Score.new(:contract => "7NT", :tricks => 13)
44
- assert score.made?
45
- score = Bridge::Score.new(:contract => "3NT", :tricks => 11)
46
- assert score.made?
47
- end
48
-
49
- test "return result" do
50
- assert_equal 2, @score.result
51
- score = Bridge::Score.new(:contract => "6S", :tricks => 12)
52
- assert_equal 0, score.result
53
- score = Bridge::Score.new(:contract => "6S", :tricks => 10)
54
- assert_equal -2, score.result
55
- end
56
-
57
- test "return result string" do
58
- assert_equal "+2", @score.result_string
59
- score = Bridge::Score.new(:contract => "6S", :tricks => 12)
60
- assert_equal "=", score.result_string
61
- score = Bridge::Score.new(:contract => "6S", :tricks => 10)
62
- assert_equal "-2", score.result_string
63
- end
64
-
65
- test "return vulnerable" do
66
- assert_false @score.vulnerable?
67
- score = Bridge::Score.new(:contract => "6S", :vulnerable => true, :tricks => 12)
68
- assert score.vulnerable?
69
- score = Bridge::Score.new(:contract => "6S", :vulnerable => false, :tricks => 10)
70
- assert_false score.vulnerable?
71
- end
72
-
73
- test "calculate tricks with plus" do
74
- score = Bridge::Score.new(:contract => "4S", :tricks => "+1")
75
- assert_equal 11, score.tricks
76
- end
77
-
78
- test "calculate tricks with minus" do
79
- score = Bridge::Score.new(:contract => "4S", :tricks => "-4")
80
- assert_equal 6, score.tricks
81
- end
82
-
83
- test "calculate tricks with equal sign" do
84
- score = Bridge::Score.new(:contract => "4S", :tricks => "=")
85
- assert_equal 10, score.tricks
86
- end
87
-
88
- test "15 is not a valid tricks argument" do
89
- assert_raises(ArgumentError) do
90
- Bridge::Score.new(:contract => "4S", :tricks => 15)
91
- end
92
- end
93
-
94
- test "wrong string is not a valid tricks argument" do
95
- assert_raises(ArgumentError) do
96
- Bridge::Score.new(:contract => "4S", :tricks => "wrong")
97
- end
98
- end
99
- end
100
-
101
- class TestScorePoints < Test::Unit::TestCase
102
-
103
- test "game bonus" do
104
- score = Bridge::Score.new(:contract => "3S", :vulnerable => false, :tricks => 9)
105
- assert_equal 50, score.game_bonus
106
- score = Bridge::Score.new(:contract => "4S", :vulnerable => false, :tricks => 10)
107
- assert_equal 300, score.game_bonus
108
- score = Bridge::Score.new(:contract => "6S", :vulnerable => false, :tricks => 12)
109
- assert_equal 300, score.game_bonus
110
- score = Bridge::Score.new(:contract => "3NT", :vulnerable => true, :tricks => 9)
111
- assert_equal 500, score.game_bonus
112
- score = Bridge::Score.new(:contract => "3NT", :vulnerable => true, :tricks => 3)
113
- assert_equal 0, score.game_bonus
114
- score = Bridge::Score.new(:contract => "3SX", :vulnerable => true, :tricks => 9)
115
- assert_equal 500, score.game_bonus
116
- end
117
-
118
- test "small slam bonus" do
119
- score = Bridge::Score.new(:contract => "6S", :vulnerable => false, :tricks => 12)
120
- assert_equal 500, score.small_slam_bonus
121
- score = Bridge::Score.new(:contract => "6S", :vulnerable => true, :tricks => 12)
122
- assert_equal 750, score.small_slam_bonus
123
- score = Bridge::Score.new(:contract => "6S", :vulnerable => true, :tricks => 10)
124
- assert_equal 0, score.small_slam_bonus
125
- end
126
-
127
- test "grand slam bonus" do
128
- score = Bridge::Score.new(:contract => "7S", :vulnerable => false, :tricks => 13)
129
- assert_equal 1000, score.grand_slam_bonus
130
- score = Bridge::Score.new(:contract => "7S", :vulnerable => true, :tricks => 13)
131
- assert_equal 1500, score.grand_slam_bonus
132
- score = Bridge::Score.new(:contract => "7S", :vulnerable => true, :tricks => 11)
133
- assert_equal 0, score.grand_slam_bonus
134
- score = Bridge::Score.new(:contract => "6S", :vulnerable => true, :tricks => 13)
135
- assert_equal 0, score.grand_slam_bonus
136
- end
137
-
138
- test "doubled and redoubled cotract made bonus" do
139
- score = Bridge::Score.new(:contract => "4SX", :tricks => 10)
140
- assert_equal 50, score.doubled_bonus
141
- score = Bridge::Score.new(:contract => "4SXX", :tricks => 10)
142
- assert_equal 100, score.redoubled_bonus
143
- assert_equal 0, score.doubled_bonus
144
- end
145
-
146
- test "vulnerable undertrick points" do
147
- score = Bridge::Score.new(:contract => "4S", :vulnerable => true, :tricks => 9)
148
- assert_equal -100, score.vulnerable_undertrick_points
149
- score = Bridge::Score.new(:contract => "4SX", :vulnerable => true, :tricks => 9)
150
- assert_equal -200, score.vulnerable_undertrick_points
151
- score = Bridge::Score.new(:contract => "4SX", :vulnerable => true, :tricks => 7)
152
- assert_equal -800, score.vulnerable_undertrick_points
153
- score = Bridge::Score.new(:contract => "4SXX", :vulnerable => true, :tricks => 9)
154
- assert_equal -400, score.vulnerable_undertrick_points
155
- score = Bridge::Score.new(:contract => "4SXX", :vulnerable => true, :tricks => 7)
156
- assert_equal -1600, score.vulnerable_undertrick_points
157
- end
158
-
159
- test "not vulnerable undertrick points" do
160
- score = Bridge::Score.new(:contract => "4S", :vulnerable => false, :tricks => 9)
161
- assert_equal -50, score.not_vulnerable_undertrick_points
162
- score = Bridge::Score.new(:contract => "4SX", :vulnerable => false, :tricks => 9)
163
- assert_equal -100, score.not_vulnerable_undertrick_points
164
- score = Bridge::Score.new(:contract => "4SX", :vulnerable => false, :tricks => 7)
165
- assert_equal -500, score.not_vulnerable_undertrick_points
166
- score = Bridge::Score.new(:contract => "4SXX", :vulnerable => false, :tricks => 9)
167
- assert_equal -200, score.not_vulnerable_undertrick_points
168
- score = Bridge::Score.new(:contract => "4SXX", :vulnerable => false, :tricks => 7)
169
- assert_equal -1000, score.not_vulnerable_undertrick_points
170
- score = Bridge::Score.new(:contract => "4SX", :vulnerable => false, :tricks => 6)
171
- assert_equal -800, score.not_vulnerable_undertrick_points
172
- score = Bridge::Score.new(:contract => "4SXX", :vulnerable => false, :tricks => 6)
173
- assert_equal -1600, score.not_vulnerable_undertrick_points
174
- score = Bridge::Score.new(:contract => "4S", :vulnerable => false, :tricks => 6)
175
- assert_equal -200, score.not_vulnerable_undertrick_points
176
- end
177
-
178
- test "overtrick points" do
179
- score = Bridge::Score.new(:contract => "2S", :vulnerable => false, :tricks => 10)
180
- assert_equal 60, score.overtrick_points
181
- score = Bridge::Score.new(:contract => "2SX", :vulnerable => false, :tricks => 9)
182
- assert_equal 100, score.overtrick_points
183
- score = Bridge::Score.new(:contract => "2SXX", :vulnerable => false, :tricks => 9)
184
- assert_equal 200, score.overtrick_points
185
- score = Bridge::Score.new(:contract => "2S", :vulnerable => true, :tricks => 9)
186
- assert_equal 30, score.overtrick_points
187
- score = Bridge::Score.new(:contract => "2SX", :vulnerable => true, :tricks => 9)
188
- assert_equal 200, score.overtrick_points
189
- score = Bridge::Score.new(:contract => "2SXX", :vulnerable => true, :tricks => 9)
190
- assert_equal 400, score.overtrick_points
191
- end
192
-
193
- test "return 90 points for 1S=" do
194
- score = Bridge::Score.new(:contract => "3S", :vulnerable => false, :tricks => 9)
195
- assert_equal 140, score.points
196
- end
197
-
198
- test "return 70 points for 2S=" do
199
- score = Bridge::Score.new(:contract => "2NT", :vulnerable => false, :tricks => 8)
200
- assert_equal 120, score.points
201
- end
202
-
203
- test "return 80 points for 2D+2" do
204
- score = Bridge::Score.new(:contract => "2D", :vulnerable => false, :tricks => 10)
205
- assert_equal 130, score.points
206
- end
207
-
208
- test "return 1400 points for 5CXX+1" do
209
- score = Bridge::Score.new(:contract => "5CXX", :vulnerable => true, :tricks => 12)
210
- assert_equal 1400, score.points
211
- end
212
-
213
- test "return 1700 points for 3NTX-7" do
214
- score = Bridge::Score.new(:contract => "3NTX", :vulnerable => false, :tricks => 2)
215
- assert_equal -1700, score.points
216
- end
217
-
218
- test "return -7600 points for 7NTXX-13" do
219
- score = Bridge::Score.new(:contract => "7NTXX", :vulnerable => true, :tricks => 0)
220
- assert_equal -7600, score.points
221
- end
222
-
223
- test "return -7600 points for 7NT-13" do
224
- score = Bridge::Score.new(:contract => "7NT", :vulnerable => false, :tricks => 0)
225
- assert_equal -650, score.points
226
- end
227
-
228
- test "return -1300 points for 7NT-13" do
229
- score = Bridge::Score.new(:contract => "7NT", :vulnerable => true, :tricks => 0)
230
- assert_equal -1300, score.points
231
- end
232
-
233
- test "return -3500 points for 7NTX-13" do
234
- score = Bridge::Score.new(:contract => "7NTX", :vulnerable => false, :tricks => 0)
235
- assert_equal -3500, score.points
236
- end
237
-
238
- test "return -3800 points for 7NTX-13" do
239
- score = Bridge::Score.new(:contract => "7NTX", :vulnerable => true, :tricks => 0)
240
- assert_equal -3800, score.points
241
- end
242
-
243
- test "return -7000 points for 7NTXX-13" do
244
- score = Bridge::Score.new(:contract => "7NTXX", :vulnerable => false, :tricks => 0)
245
- assert_equal -7000, score.points
246
- end
247
-
248
- test "return 1340 points for 1CX+6" do
249
- score = Bridge::Score.new(:contract => "1CX", :vulnerable => true, :tricks => 13)
250
- assert_equal 1340, score.points
251
- end
252
-
253
- test "return 740 points for 1CX+6" do
254
- score = Bridge::Score.new(:contract => "1CX", :vulnerable => false, :tricks => 13)
255
- assert_equal 740, score.points
256
- end
257
- end
258
-
259
- class TestScoreContracts < Test::Unit::TestCase
260
- test "1764 results" do
261
- assert_equal 1764, Bridge::Score.all_contracts.size
262
- end
263
-
264
- test "return contracts for 1430 points" do
265
- expected = ["1C/DXX+3v", "1C/DXX+6", "6H/S=v"]
266
- assert_equal expected, Bridge::Score.with_points(1430)
267
- end
268
-
269
- test "return no contracts if not found score with given points" do
270
- assert_equal [], Bridge::Score.with_points(100)
271
- end
272
- end
273
-
274
- class TestRegexpScore < Test::Unit::TestCase
275
- def setup
276
- @regexp = Bridge::Score::REGEXP
277
- end
278
-
279
- test "match 1S+1" do
280
- assert "1S+1" =~ @regexp
281
- end
282
-
283
- test "match 1NT=" do
284
- assert "1NT=" =~ @regexp
285
- end
286
-
287
- test "not match 8S=" do
288
- assert_nil "8S=" =~ @regexp
289
- end
290
-
291
- test "not match 1SXXX=" do
292
- assert_nil "1SXXX=" =~ @regexp
293
- end
294
-
295
- test "not match 1S+7" do
296
- assert_nil "1S+7" =~ @regexp
297
- end
298
-
299
- test "not match 1S-14" do
300
- assert_nil "1S-14" =~ @regexp
301
- end
302
-
303
- test "not match 1S-21" do
304
- assert_nil "1S-21" =~ @regexp
305
- end
306
-
307
- test "case sensitive" do
308
- assert_nil "1s-1" =~ @regexp
309
- end
310
-
311
- test "return contract for 1NT=" do
312
- result = "1NT=".match(@regexp)
313
- assert_equal "1NT", RUBY_VERSION >= "1.9" ? result[:contract] : result[1]
314
- end
315
-
316
- test "return contract for 1NTXX=" do
317
- result = "1NTXX=".match(@regexp)
318
- assert_equal "1NTXX", RUBY_VERSION >= "1.9" ? result[:contract] : result[1]
319
- end
320
-
321
- test "return result for 1NT=" do
322
- result = "1NT=".match(@regexp)
323
- assert_equal "=", RUBY_VERSION >= "1.9" ? result[:result] : result[5]
324
- end
325
-
326
- test "return result for 1NT+2" do
327
- result = "1NT+2".match(@regexp)
328
- assert_equal "+2", RUBY_VERSION >= "1.9" ? result[:result] : result[5]
329
- end
330
- end