bridge 0.1.4 → 0.2.0

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.
metadata CHANGED
@@ -1,108 +1,115 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bridge
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 4
9
- version: 0.1.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
10
5
  platform: ruby
11
- authors:
12
- - "Jakub Ku\xC5\xBAma"
13
- - "Wojciech Wn\xC4\x99trzak"
6
+ authors:
7
+ - Jakub Kuźma
8
+ - Wojciech Wnętrzak
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-09-15 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2013-05-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: bundler
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 0
31
- - 0
32
- version: 1.0.0
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '1.3'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
33
35
  type: :development
34
36
  prerelease: false
35
- version_requirements: *id001
36
- description: Useful contract bridge utilities - deal generator, id to deal and deal to id conversion
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ description: Useful contract bridge utilities - deal generator, id to deal and deal
43
+ to id conversion
37
44
  email: qoobaa+github@gmail.com
38
45
  executables: []
39
-
40
46
  extensions: []
41
-
42
47
  extra_rdoc_files: []
43
-
44
- files:
48
+ files:
45
49
  - .gitignore
50
+ - .travis.yml
46
51
  - Gemfile
47
- - Gemfile.lock
48
52
  - LICENSE
49
- - README.rdoc
53
+ - README.md
50
54
  - Rakefile
51
55
  - bridge.gemspec
52
56
  - lib/bridge.rb
57
+ - lib/bridge/auction.rb
53
58
  - lib/bridge/bid.rb
54
59
  - lib/bridge/card.rb
55
60
  - lib/bridge/constants.rb
56
61
  - lib/bridge/deal.rb
62
+ - lib/bridge/play.rb
57
63
  - lib/bridge/points.rb
58
64
  - lib/bridge/points/chicago.rb
59
65
  - lib/bridge/points/duplicate.rb
60
66
  - lib/bridge/score.rb
61
67
  - lib/bridge/trick.rb
62
68
  - lib/bridge/version.rb
69
+ - test/auction_test.rb
70
+ - test/bid_test.rb
71
+ - test/bridge_test.rb
72
+ - test/card_test.rb
73
+ - test/chicago_test.rb
74
+ - test/deal_test.rb
75
+ - test/duplicate_test.rb
63
76
  - test/helper.rb
64
- - test/test_bid.rb
65
- - test/test_bridge.rb
66
- - test/test_card.rb
67
- - test/test_chicago.rb
68
- - test/test_deal.rb
69
- - test/test_duplicate.rb
70
- - test/test_score.rb
71
- - test/test_trick.rb
72
- has_rdoc: true
73
- homepage: http://github.com/qoobaa/bridge
74
- licenses: []
75
-
77
+ - test/play_test.rb
78
+ - test/score_test.rb
79
+ - test/trick_test.rb
80
+ homepage: https://github.com/qoobaa/bridge
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
76
84
  post_install_message:
77
85
  rdoc_options: []
78
-
79
- require_paths:
86
+ require_paths:
80
87
  - lib
81
- required_ruby_version: !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: -2291621128807536229
87
- segments:
88
- - 0
89
- version: "0"
90
- required_rubygems_version: !ruby/object:Gem::Requirement
91
- none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- segments:
96
- - 1
97
- - 3
98
- - 6
99
- version: 1.3.6
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: 1.9.3
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
100
98
  requirements: []
101
-
102
- rubyforge_project: bridge
103
- rubygems_version: 1.3.7
99
+ rubyforge_project:
100
+ rubygems_version: 2.0.2
104
101
  signing_key:
105
- specification_version: 3
102
+ specification_version: 4
106
103
  summary: Contract bridge utilities
107
- test_files: []
108
-
104
+ test_files:
105
+ - test/auction_test.rb
106
+ - test/bid_test.rb
107
+ - test/bridge_test.rb
108
+ - test/card_test.rb
109
+ - test/chicago_test.rb
110
+ - test/deal_test.rb
111
+ - test/duplicate_test.rb
112
+ - test/helper.rb
113
+ - test/play_test.rb
114
+ - test/score_test.rb
115
+ - test/trick_test.rb
@@ -1,12 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- rake (0.8.7)
5
- test-unit (2.1.1)
6
-
7
- PLATFORMS
8
- ruby
9
-
10
- DEPENDENCIES
11
- rake
12
- test-unit (>= 2)
@@ -1,62 +0,0 @@
1
- = bridge
2
-
3
- Contract bridge utils.
4
-
5
- == Bid
6
-
7
- == Card
8
-
9
- == Deal
10
-
11
- == Trick
12
-
13
- == Score
14
-
15
- You can create Score object passing 3 arguments:
16
- Bridge::Score.new(:contract => "6NTX", :vulnerable => true, :tricks => "=")
17
-
18
- Arguments:
19
- * :contract -- String, where first sign is level, second suit (C D H S NT) and optional double or redouble (X or XX)
20
- * :vulnerable -- Boolean, declarer is vulnerable? (default is false)
21
- * :tricks -- Integer or String, when Integer is passed it's number of tricks taken by declarer side, String can be relative to contract level i.e. "+1", "-2", "="
22
-
23
- Methods:
24
- * Score#made? -- Boolean
25
- * Score#result -- Integer, relative to contract level i.e. -1 (one down), 1 (overtrick), 0 (contract made)
26
- * Score#result_string -- String, relative to contract level i.e "+1", "=", "-3"
27
- * Score#points -- Integer, calculated full value
28
-
29
- You can also ask for all possible contracts finished with given points:
30
- Bridge::Score.with_points(980)
31
- #=> ["1NTX+4v", "2C/DX+4v", "6H/S="]
32
-
33
- You can use regexp to check if contract with result is valid:
34
- Bridge::Score::REGEXP
35
- will match i.e.
36
- "1NT=", "2SX+1", "6NTXX-2"
37
-
38
- == Points
39
-
40
- === Chicago
41
-
42
- You can calculate how many IMP points you won by:
43
- Bridge::Points::Chicago.new(:hcp => 25, :points => 420, :vulnerable => false).imps
44
-
45
- Arguments:
46
- * :hcp -- Integer (range between 20 and 40), which means how many honour card points has side
47
- * :vulnerable -- Boolean, side with given hcp is vulnerable?
48
- * :points -- Integer, the result at the end of board (can be calculated by Bridge::Score)
49
-
50
- == Note on Patches/Pull Requests
51
-
52
- * Fork the project.
53
- * Make your feature addition or bug fix.
54
- * Add tests for it. This is important so I don't break it in a
55
- future version unintentionally.
56
- * Commit, do not mess with rakefile, version, or history.
57
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
58
- * Send me a pull request. Bonus points for topic branches.
59
-
60
- == Copyright
61
-
62
- Copyright (c) 2010 Jakub Kuźma. See LICENSE for details.
@@ -1,135 +0,0 @@
1
- require "helper"
2
-
3
- class TestBid < Test::Unit::TestCase
4
- test "pas is not a valid bid" do
5
- assert_raises(ArgumentError) do
6
- Bridge::Bid.new("pas")
7
- end
8
- end
9
-
10
- test "case doesn't matter in bid" do
11
- Bridge::Bid.new("pass")
12
- Bridge::Bid.new("x")
13
- Bridge::Bid.new("xx")
14
- Bridge::Bid.new("1nt")
15
- end
16
-
17
- test "pass is a valid bid" do
18
- bid = Bridge::Bid.new("PASS")
19
- assert bid.pass?
20
- assert_false bid.double?
21
- assert_false bid.redouble?
22
- assert_false bid.modifier?
23
- assert_false bid.contract?
24
- assert_nil bid.level
25
- assert_nil bid.suit
26
- end
27
-
28
- test "double is a valid bid" do
29
- bid = Bridge::Bid.new("X")
30
- assert_false bid.pass?
31
- assert bid.double?
32
- assert_false bid.redouble?
33
- assert bid.modifier?
34
- assert_false bid.contract?
35
- assert_nil bid.level
36
- assert_nil bid.suit
37
- end
38
-
39
- test "redouble is a valid bid" do
40
- bid = Bridge::Bid.new("XX")
41
- assert_false bid.pass?
42
- assert_false bid.double?
43
- assert bid.redouble?
44
- assert bid.modifier?
45
- assert_false bid.contract?
46
- assert_nil bid.level
47
- assert_nil bid.suit
48
- end
49
-
50
- test "1H is a valid bid" do
51
- bid = Bridge::Bid.new("1H")
52
- assert_false bid.pass?
53
- assert_false bid.double?
54
- assert_false bid.redouble?
55
- assert_false bid.modifier?
56
- assert bid.contract?
57
- assert_equal "1", bid.level
58
- assert_equal "H", bid.suit
59
- end
60
-
61
- test "7NT is a valid bid" do
62
- bid = Bridge::Bid.new("7NT")
63
- assert_false bid.pass?
64
- assert_false bid.double?
65
- assert_false bid.redouble?
66
- assert_false bid.modifier?
67
- assert bid.contract?
68
- assert_equal "7", bid.level
69
- assert_equal "NT", bid.suit
70
- end
71
-
72
- test "7NT is greater than 1C" do
73
- assert Bridge::Bid.new("7NT") > Bridge::Bid.new("1C")
74
- assert_false Bridge::Bid.new("7NT") < Bridge::Bid.new("1C")
75
- assert_false Bridge::Bid.new("7NT") == Bridge::Bid.new("1C")
76
- end
77
-
78
- test "1S is greater than 1H" do
79
- assert Bridge::Bid.new("1S") > Bridge::Bid.new("1H")
80
- assert_false Bridge::Bid.new("1S") < Bridge::Bid.new("1H")
81
- assert_false Bridge::Bid.new("1S") == Bridge::Bid.new("1H")
82
- end
83
-
84
- test "comparison of PASS and 1S raises an error" do
85
- assert_raises(ArgumentError) do
86
- Bridge::Bid.new("PASS") > Bridge::Bid.new("1S")
87
- end
88
- end
89
-
90
- test "comparison of X and PASS raises an error" do
91
- assert_raises(ArgumentError) do
92
- Bridge::Bid.new("X") > Bridge::Bid.new("PASS")
93
- end
94
- end
95
-
96
- test "PASS and XX are not equal" do
97
- assert_not_equal Bridge::Bid.new("PASS"), Bridge::Bid.new("XX")
98
- end
99
-
100
- test "1S returns S trump" do
101
- assert_equal "S", Bridge::Bid.new("1S").trump
102
- end
103
-
104
- test "5NT returns nil trump" do
105
- assert_nil Bridge::Bid.new("5NT").trump
106
- end
107
-
108
- test "1H is a major bid" do
109
- assert Bridge::Bid.new("1H").major?
110
- end
111
-
112
- test "5S is a major bid" do
113
- assert Bridge::Bid.new("5S").major?
114
- end
115
-
116
- test "2C is a minor bid" do
117
- assert Bridge::Bid.new("2C").minor?
118
- end
119
-
120
- test "6D is a minor bid" do
121
- assert Bridge::Bid.new("6D").minor?
122
- end
123
-
124
- test "1NT is a nt bid" do
125
- assert Bridge::Bid.new("1NT").nt?
126
- end
127
-
128
- test "6NT is a small slam" do
129
- assert Bridge::Bid.new("6NT").small_slam?
130
- end
131
-
132
- test "7NT is a grand slam" do
133
- assert Bridge::Bid.new("7NT").grand_slam?
134
- end
135
- end
@@ -1,62 +0,0 @@
1
- require "helper"
2
-
3
- class TestBridge < Test::Unit::TestCase
4
- test "negative number is not valid deal id" do
5
- assert_false Bridge.deal_id?(-1)
6
- end
7
-
8
- test "number of possible bridge deals is not valid deal id" do
9
- assert_false Bridge.deal_id?(Bridge::DEALS)
10
- end
11
-
12
- test "return partner of direction" do
13
- assert_equal "N", Bridge.partner_of("S")
14
- assert_equal "S", Bridge.partner_of("N")
15
- assert_equal "E", Bridge.partner_of("W")
16
- assert_equal "W", Bridge.partner_of("E")
17
- end
18
-
19
- test "return side of direction" do
20
- assert_equal "NS", Bridge.side_of("S")
21
- assert_equal "NS", Bridge.side_of("N")
22
- assert_equal "EW", Bridge.side_of("W")
23
- assert_equal "EW", Bridge.side_of("E")
24
- end
25
-
26
- test "return next direction" do
27
- assert_equal "E", Bridge.next_direction("N")
28
- assert_equal "S", Bridge.next_direction("E")
29
- assert_equal "W", Bridge.next_direction("S")
30
- assert_equal "N", Bridge.next_direction("W")
31
- assert_equal "N", Bridge.next_direction(nil)
32
- end
33
-
34
- test "return vulnerable for given deal nr" do
35
- assert_equal "NONE", Bridge.vulnerable_in_deal(nil)
36
-
37
- assert_equal "NONE", Bridge.vulnerable_in_deal(1)
38
- assert_equal "NS", Bridge.vulnerable_in_deal(2)
39
- assert_equal "EW", Bridge.vulnerable_in_deal(3)
40
- assert_equal "BOTH", Bridge.vulnerable_in_deal(4)
41
-
42
- assert_equal "NS", Bridge.vulnerable_in_deal(5)
43
- assert_equal "EW", Bridge.vulnerable_in_deal(6)
44
- assert_equal "BOTH", Bridge.vulnerable_in_deal(7)
45
- assert_equal "NONE", Bridge.vulnerable_in_deal(8)
46
-
47
- assert_equal "EW", Bridge.vulnerable_in_deal(9)
48
- assert_equal "BOTH", Bridge.vulnerable_in_deal(10)
49
- assert_equal "NONE", Bridge.vulnerable_in_deal(11)
50
- assert_equal "NS", Bridge.vulnerable_in_deal(12)
51
-
52
- assert_equal "BOTH", Bridge.vulnerable_in_deal(13)
53
- assert_equal "NONE", Bridge.vulnerable_in_deal(14)
54
- assert_equal "NS", Bridge.vulnerable_in_deal(15)
55
- assert_equal "EW", Bridge.vulnerable_in_deal(16)
56
-
57
- assert_equal "NONE", Bridge.vulnerable_in_deal(17)
58
- assert_equal "NS", Bridge.vulnerable_in_deal(18)
59
- assert_equal "EW", Bridge.vulnerable_in_deal(19)
60
- assert_equal "BOTH", Bridge.vulnerable_in_deal(20)
61
- end
62
- end