bitpoker 0.1.1
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.
- checksums.yaml +7 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +36 -0
- data/LICENSE +21 -0
- data/README.md +50 -0
- data/Rakefile +43 -0
- data/bitpoker.gemspec +16 -0
- data/bot/README.md +1 -0
- data/bot/dummy_bot.rb +50 -0
- data/lib/bitpoker.rb +61 -0
- data/lib/bitpoker/bot_interface.rb +99 -0
- data/lib/bitpoker/bot_proxy.rb +21 -0
- data/lib/bitpoker/bot_proxy_interface.rb +18 -0
- data/lib/bitpoker/croupier.rb +99 -0
- data/lib/bitpoker/duel.rb +71 -0
- data/lib/bitpoker/game_logic.rb +186 -0
- data/lib/bitpoker/round.rb +111 -0
- data/lib/bitpoker/rules.rb +16 -0
- data/test.rb +0 -0
- data/test/support/glass_bot.rb +46 -0
- data/test/support/sleepy_bot.rb +14 -0
- data/test/test_bitpoker.rb +21 -0
- data/test/test_bot_interface.rb +59 -0
- data/test/test_bot_proxy.rb +40 -0
- data/test/test_croupier.rb +147 -0
- data/test/test_duel.rb +58 -0
- data/test/test_game_logic.rb +272 -0
- data/test/test_round.rb +97 -0
- data/test/test_rules.rb +59 -0
- metadata +100 -0
data/test/test_round.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require 'shoulda'
|
3
|
+
require "./lib/bitpoker"
|
4
|
+
|
5
|
+
class TestRound < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include BitPoker
|
8
|
+
|
9
|
+
context "a round" do
|
10
|
+
|
11
|
+
setup do
|
12
|
+
@bot = BotProxy.new( BotInterface.new )
|
13
|
+
@round = Round.new( [@bot, @bot])
|
14
|
+
end
|
15
|
+
|
16
|
+
should "start with rules introduction" do
|
17
|
+
assert_equal Round::STATE_RULES_INTRODUCTION, @round.state
|
18
|
+
end
|
19
|
+
|
20
|
+
should "know a winner index" do
|
21
|
+
@round.cards = [2,4]
|
22
|
+
assert_equal 1, @round.winner_index
|
23
|
+
end
|
24
|
+
|
25
|
+
should "know a loser index" do
|
26
|
+
@round.cards = [2,4]
|
27
|
+
assert_equal 0, @round.loser_index
|
28
|
+
end
|
29
|
+
|
30
|
+
should "know when it is a draw" do
|
31
|
+
@round.cards = [2,2]
|
32
|
+
assert @round.draw?
|
33
|
+
end
|
34
|
+
|
35
|
+
should "know when it is not a draw" do
|
36
|
+
@round.cards = [4,0]
|
37
|
+
assert ! @round.draw?
|
38
|
+
end
|
39
|
+
|
40
|
+
should "not return winner index when it is a draw" do
|
41
|
+
@round.instance_variable_set( :@cards, [2,2] )
|
42
|
+
assert_equal nil, @round.winner_index
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return loser index when it is a draw" do
|
46
|
+
@round.cards = [0,0]
|
47
|
+
assert_equal nil, @round.loser_index
|
48
|
+
end
|
49
|
+
|
50
|
+
should "know when bets are even is a draw" do
|
51
|
+
@round.bets = [10,10]
|
52
|
+
assert_equal true, @round.bets_even?
|
53
|
+
end
|
54
|
+
|
55
|
+
should "know when bets are not even" do
|
56
|
+
@round.bets = [20,10]
|
57
|
+
assert_equal false, @round.bets_even?
|
58
|
+
end
|
59
|
+
|
60
|
+
should "know higher bid" do
|
61
|
+
@round.bets = [5,8]
|
62
|
+
assert_equal 8, @round.higher_bid
|
63
|
+
end
|
64
|
+
|
65
|
+
should "know lower bid" do
|
66
|
+
@round.bets = [5,8]
|
67
|
+
assert_equal 5, @round.lower_bid
|
68
|
+
end
|
69
|
+
|
70
|
+
should "know higher bidder index" do
|
71
|
+
@round.bets = [5,8]
|
72
|
+
assert_equal 1, @round.higher_bidder_index
|
73
|
+
end
|
74
|
+
|
75
|
+
should "know lower bidder index" do
|
76
|
+
@round.bets = [5,8]
|
77
|
+
assert_equal 0, @round.lower_bidder_index
|
78
|
+
end
|
79
|
+
|
80
|
+
should "know higher bidder" do
|
81
|
+
@round.bets = [5,8]
|
82
|
+
assert_equal @round.bots[1], @round.higher_bidder
|
83
|
+
end
|
84
|
+
|
85
|
+
should "know lower bidder" do
|
86
|
+
@round.bets = [5,8]
|
87
|
+
assert_equal @round.bots[0], @round.lower_bidder
|
88
|
+
end
|
89
|
+
|
90
|
+
should "know a stake" do
|
91
|
+
@round.bets = [5,10]
|
92
|
+
assert_equal 10, @round.stake
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
data/test/test_rules.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require 'shoulda'
|
3
|
+
require "mocha/setup"
|
4
|
+
|
5
|
+
require "./lib/bitpoker"
|
6
|
+
|
7
|
+
class TestRules < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include BitPoker::Rules
|
10
|
+
|
11
|
+
context "number of rounds" do
|
12
|
+
should "be a positive integer" do
|
13
|
+
assert ROUNDS >= 1
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "minimum stake" do
|
18
|
+
should "be a positive integer" do
|
19
|
+
assert MIN_STAKE >= 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "maximum stake" do
|
24
|
+
should "be a positive integer" do
|
25
|
+
assert MAX_STAKE >= 1
|
26
|
+
end
|
27
|
+
|
28
|
+
should "higher than minimum stake" do
|
29
|
+
assert MAX_STAKE > MIN_STAKE
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "timeout" do
|
34
|
+
should "be a positive float" do
|
35
|
+
assert TIMEOUT > 0
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "card range" do
|
40
|
+
|
41
|
+
should "be a range" do
|
42
|
+
assert_kind_of Range, CARD_RANGE
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not consist of not negative number" do
|
46
|
+
assert CARD_RANGE.min >= 0
|
47
|
+
assert CARD_RANGE.max >= 0
|
48
|
+
end
|
49
|
+
|
50
|
+
should "be at least size of 2" do
|
51
|
+
assert CARD_RANGE.size >= 2
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
end
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bitpoker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Maciej Komorowski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: parallel
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.9'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.9.2
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.9'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.9.2
|
33
|
+
description: Ruby implementation of BitPoker game.
|
34
|
+
email: mckomo@gmail.com
|
35
|
+
executables: []
|
36
|
+
extensions: []
|
37
|
+
extra_rdoc_files: []
|
38
|
+
files:
|
39
|
+
- Gemfile
|
40
|
+
- Gemfile.lock
|
41
|
+
- LICENSE
|
42
|
+
- README.md
|
43
|
+
- Rakefile
|
44
|
+
- bitpoker.gemspec
|
45
|
+
- bot/README.md
|
46
|
+
- bot/dummy_bot.rb
|
47
|
+
- lib/bitpoker.rb
|
48
|
+
- lib/bitpoker/bot_interface.rb
|
49
|
+
- lib/bitpoker/bot_proxy.rb
|
50
|
+
- lib/bitpoker/bot_proxy_interface.rb
|
51
|
+
- lib/bitpoker/croupier.rb
|
52
|
+
- lib/bitpoker/duel.rb
|
53
|
+
- lib/bitpoker/game_logic.rb
|
54
|
+
- lib/bitpoker/round.rb
|
55
|
+
- lib/bitpoker/rules.rb
|
56
|
+
- test.rb
|
57
|
+
- test/support/glass_bot.rb
|
58
|
+
- test/support/sleepy_bot.rb
|
59
|
+
- test/test_bitpoker.rb
|
60
|
+
- test/test_bot_interface.rb
|
61
|
+
- test/test_bot_proxy.rb
|
62
|
+
- test/test_croupier.rb
|
63
|
+
- test/test_duel.rb
|
64
|
+
- test/test_game_logic.rb
|
65
|
+
- test/test_round.rb
|
66
|
+
- test/test_rules.rb
|
67
|
+
homepage: https://github.com/mckomo/BitPoker
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.2.1
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: Bots play poker!
|
91
|
+
test_files:
|
92
|
+
- test/test_bitpoker.rb
|
93
|
+
- test/test_bot_interface.rb
|
94
|
+
- test/test_bot_proxy.rb
|
95
|
+
- test/test_croupier.rb
|
96
|
+
- test/test_duel.rb
|
97
|
+
- test/test_game_logic.rb
|
98
|
+
- test/test_round.rb
|
99
|
+
- test/test_rules.rb
|
100
|
+
has_rdoc:
|