games_dice 0.3.9 → 0.4.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.
- checksums.yaml +7 -0
- data/.rubocop.yml +15 -0
- data/.travis.yml +9 -12
- data/CHANGELOG.md +29 -13
- data/Gemfile +2 -0
- data/README.md +5 -5
- data/Rakefile +14 -11
- data/ext/games_dice/extconf.rb +4 -22
- data/ext/games_dice/probabilities.c +1 -1
- data/games_dice.gemspec +26 -28
- data/lib/games_dice/bunch.rb +241 -247
- data/lib/games_dice/complex_die.rb +287 -303
- data/lib/games_dice/complex_die_helpers.rb +68 -0
- data/lib/games_dice/constants.rb +10 -10
- data/lib/games_dice/dice.rb +146 -143
- data/lib/games_dice/die.rb +101 -97
- data/lib/games_dice/die_result.rb +193 -189
- data/lib/games_dice/map_rule.rb +72 -70
- data/lib/games_dice/marshal.rb +18 -13
- data/lib/games_dice/parser.rb +219 -218
- data/lib/games_dice/reroll_rule.rb +76 -77
- data/lib/games_dice/version.rb +3 -1
- data/lib/games_dice.rb +19 -16
- data/spec/bunch_spec.rb +399 -421
- data/spec/complex_die_spec.rb +314 -306
- data/spec/dice_spec.rb +33 -34
- data/spec/die_result_spec.rb +163 -170
- data/spec/die_spec.rb +81 -82
- data/spec/helpers.rb +26 -22
- data/spec/map_rule_spec.rb +40 -44
- data/spec/parser_spec.rb +106 -82
- data/spec/probability_spec.rb +530 -527
- data/spec/readme_spec.rb +404 -384
- data/spec/reroll_rule_spec.rb +40 -44
- metadata +63 -74
- data/lib/games_dice/probabilities.rb +0 -445
data/spec/reroll_rule_spec.rb
CHANGED
@@ -1,44 +1,40 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
it
|
8
|
-
GamesDice::RerollRule.new(
|
9
|
-
GamesDice::RerollRule.new(
|
10
|
-
end
|
11
|
-
|
12
|
-
it
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
it
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
rule.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
rule.
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'helpers'
|
4
|
+
|
5
|
+
describe GamesDice::RerollRule do
|
6
|
+
describe '#new' do
|
7
|
+
it 'should accept self-consistent operator/value pairs as a trigger' do
|
8
|
+
GamesDice::RerollRule.new(5, :>, :reroll_subtract)
|
9
|
+
GamesDice::RerollRule.new((1..5), :member?, :reroll_replace)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should reject inconsistent operator/value pairs for a trigger' do
|
13
|
+
expect(-> { GamesDice::RerollRule.new(5, :member?, :reroll_subtract) }).to raise_error(ArgumentError)
|
14
|
+
expect(-> { GamesDice::RerollRule.new((1..5), :>, :reroll_replace) }).to raise_error(ArgumentError)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should reject bad re-roll types' do
|
18
|
+
expect(-> { GamesDice::RerollRule.new(5, :>, :reroll_again) }).to raise_error(ArgumentError)
|
19
|
+
expect(-> { GamesDice::RerollRule.new((1..5), :member?, 42) }).to raise_error(ArgumentError)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#applies?' do
|
24
|
+
it 'should return true if a trigger condition is met' do
|
25
|
+
rule = GamesDice::RerollRule.new(5, :>, :reroll_subtract)
|
26
|
+
expect(rule.applies?(4)).to be true
|
27
|
+
|
28
|
+
rule = GamesDice::RerollRule.new((1..5), :member?, :reroll_subtract)
|
29
|
+
expect(rule.applies?(4)).to be true
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should return false if a trigger condition is not met' do
|
33
|
+
rule = GamesDice::RerollRule.new(5, :>, :reroll_subtract)
|
34
|
+
expect(rule.applies?(7)).to be false
|
35
|
+
|
36
|
+
rule = GamesDice::RerollRule.new((1..5), :member?, :reroll_subtract)
|
37
|
+
expect(rule.applies?(6)).to be false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,142 +1,139 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: games_dice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Neil Slater
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2021-09-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: coveralls
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 0.6.7
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
26
|
+
version: 0.6.7
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.7.7
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.7.7
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: rake
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - ">="
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: 1.9.1
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - ">="
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: 1.9.1
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
56
|
+
name: rake-compiler
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - ">="
|
52
60
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.8.
|
61
|
+
version: 0.8.3
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ">="
|
60
67
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.8.
|
68
|
+
version: 0.8.3
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
70
|
+
name: rspec
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - ">="
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
75
|
+
version: 2.13.0
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - ">="
|
76
81
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
82
|
+
version: 2.13.0
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
84
|
+
name: rubocop
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- -
|
87
|
+
- - ">="
|
84
88
|
- !ruby/object:Gem::Version
|
85
|
-
version: 1.
|
89
|
+
version: 1.2.1
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - ">="
|
92
95
|
- !ruby/object:Gem::Version
|
93
|
-
version: 1.
|
96
|
+
version: 1.2.1
|
94
97
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
98
|
+
name: yard
|
96
99
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
100
|
requirements:
|
99
|
-
- -
|
101
|
+
- - ">="
|
100
102
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
103
|
+
version: 0.8.6
|
102
104
|
type: :development
|
103
105
|
prerelease: false
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
107
|
requirements:
|
107
|
-
- -
|
108
|
+
- - ">="
|
108
109
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
110
|
+
version: 0.8.6
|
110
111
|
- !ruby/object:Gem::Dependency
|
111
112
|
name: redcarpet
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 3.5.1
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
121
|
requirements:
|
123
|
-
- -
|
122
|
+
- - ">="
|
124
123
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
124
|
+
version: 3.5.1
|
126
125
|
- !ruby/object:Gem::Dependency
|
127
126
|
name: parslet
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
128
|
requirements:
|
131
|
-
- -
|
129
|
+
- - ">="
|
132
130
|
- !ruby/object:Gem::Version
|
133
131
|
version: 1.5.0
|
134
132
|
type: :runtime
|
135
133
|
prerelease: false
|
136
134
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
135
|
requirements:
|
139
|
-
- -
|
136
|
+
- - ">="
|
140
137
|
- !ruby/object:Gem::Version
|
141
138
|
version: 1.5.0
|
142
139
|
description: A library for simulating dice. Use it to construct dice-rolling systems
|
@@ -148,9 +145,10 @@ extensions:
|
|
148
145
|
- ext/games_dice/extconf.rb
|
149
146
|
extra_rdoc_files: []
|
150
147
|
files:
|
151
|
-
- .gitignore
|
152
|
-
- .
|
153
|
-
- .
|
148
|
+
- ".gitignore"
|
149
|
+
- ".rubocop.yml"
|
150
|
+
- ".travis.yml"
|
151
|
+
- ".yardopts"
|
154
152
|
- CHANGELOG.md
|
155
153
|
- Gemfile
|
156
154
|
- LICENSE.txt
|
@@ -164,6 +162,7 @@ files:
|
|
164
162
|
- lib/games_dice.rb
|
165
163
|
- lib/games_dice/bunch.rb
|
166
164
|
- lib/games_dice/complex_die.rb
|
165
|
+
- lib/games_dice/complex_die_helpers.rb
|
167
166
|
- lib/games_dice/constants.rb
|
168
167
|
- lib/games_dice/dice.rb
|
169
168
|
- lib/games_dice/die.rb
|
@@ -171,7 +170,6 @@ files:
|
|
171
170
|
- lib/games_dice/map_rule.rb
|
172
171
|
- lib/games_dice/marshal.rb
|
173
172
|
- lib/games_dice/parser.rb
|
174
|
-
- lib/games_dice/probabilities.rb
|
175
173
|
- lib/games_dice/reroll_rule.rb
|
176
174
|
- lib/games_dice/version.rb
|
177
175
|
- spec/bunch_spec.rb
|
@@ -189,33 +187,25 @@ files:
|
|
189
187
|
homepage: https://github.com/neilslater/games_dice
|
190
188
|
licenses:
|
191
189
|
- MIT
|
192
|
-
|
190
|
+
metadata: {}
|
191
|
+
post_install_message:
|
193
192
|
rdoc_options: []
|
194
193
|
require_paths:
|
195
194
|
- lib
|
196
195
|
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
-
none: false
|
198
196
|
requirements:
|
199
|
-
- -
|
197
|
+
- - ">="
|
200
198
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
202
|
-
segments:
|
203
|
-
- 0
|
204
|
-
hash: -3597732090146629653
|
199
|
+
version: 2.6.0
|
205
200
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
|
-
none: false
|
207
201
|
requirements:
|
208
|
-
- -
|
202
|
+
- - ">="
|
209
203
|
- !ruby/object:Gem::Version
|
210
204
|
version: '0'
|
211
|
-
segments:
|
212
|
-
- 0
|
213
|
-
hash: -3597732090146629653
|
214
205
|
requirements: []
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
specification_version: 3
|
206
|
+
rubygems_version: 3.2.3
|
207
|
+
signing_key:
|
208
|
+
specification_version: 4
|
219
209
|
summary: Simulates and explains dice rolls from simple "1d6" to complex "roll 7 ten-sided
|
220
210
|
dice, take best 3, results of 10 roll again and add on".
|
221
211
|
test_files:
|
@@ -231,4 +221,3 @@ test_files:
|
|
231
221
|
- spec/probability_spec.rb
|
232
222
|
- spec/readme_spec.rb
|
233
223
|
- spec/reroll_rule_spec.rb
|
234
|
-
has_rdoc:
|