gravitheque 0.3.0 → 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.
- data/.travis.yml +0 -3
- data/README.md +210 -43
- data/bin/test +2 -0
- data/gravitheque.gemspec +1 -1
- data/lib/calculators/alcohol.rb +41 -28
- data/lib/calculators/calories.rb +63 -45
- data/lib/calculators/hops.rb +146 -76
- data/lib/calculators/mash.rb +54 -23
- data/lib/calculators/yeast.rb +46 -22
- data/test/calculators/test_alcohol.rb +31 -8
- data/test/calculators/test_calories.rb +53 -12
- data/test/calculators/test_hops.rb +46 -27
- data/test/calculators/test_mash.rb +52 -8
- data/test/calculators/test_yeast.rb +89 -18
- data/test/test_helper.rb +2 -2
- metadata +54 -98
@@ -4,32 +4,55 @@ require "calculators/alcohol"
|
|
4
4
|
describe Calculate do
|
5
5
|
|
6
6
|
it "must calculate alcohol by weight from original and terminal Plato" do
|
7
|
-
|
7
|
+
Calculate.alcohol_by_weight({ original: 13, terminal: 2.5 }).must_equal 4.5
|
8
8
|
end
|
9
9
|
|
10
10
|
it "must calculate alcohol by weight from original and terminal gravities" do
|
11
|
-
|
11
|
+
Calculate.alcohol_by_weight({
|
12
|
+
original: 1.055,
|
13
|
+
terminal: 1.011
|
14
|
+
}, :specific_gravity).must_equal 4.6
|
12
15
|
end
|
13
16
|
|
14
17
|
it "must calculate alcohol by weight from original and terminal Brix" do
|
15
|
-
|
18
|
+
Calculate.alcohol_by_weight({
|
19
|
+
original: 15.5,
|
20
|
+
terminal: 7.2
|
21
|
+
}, :brix).must_equal 5.9
|
16
22
|
end
|
17
23
|
|
18
24
|
it "must calculate alcohol by volume from original and terminal Plato" do
|
19
|
-
|
25
|
+
Calculate.alcohol_by_volume({ original: 13, terminal: 2.5 }).must_equal 5.7
|
20
26
|
end
|
21
27
|
|
22
28
|
it "must calculate alcohol by volume from original and terminal gravities" do
|
23
|
-
|
29
|
+
Calculate.alcohol_by_volume({
|
30
|
+
original: 1.055,
|
31
|
+
terminal: 1.011
|
32
|
+
}, :specific_gravity).must_equal 5.8
|
24
33
|
end
|
25
34
|
|
26
35
|
it "must calculate alcohol by volume from original and terminal Brix" do
|
27
|
-
|
36
|
+
Calculate.alcohol_by_volume({
|
37
|
+
original: 15.5,
|
38
|
+
terminal: 7.2
|
39
|
+
}, :brix).must_equal 7.4
|
28
40
|
end
|
29
41
|
|
30
42
|
it "must raise an exception when the extract unit is unrecognized" do
|
31
|
-
lambda {
|
32
|
-
|
43
|
+
lambda {
|
44
|
+
Calculate.alcohol_by_volume({
|
45
|
+
original: 392,
|
46
|
+
terminal: 739
|
47
|
+
}, :wtf)
|
48
|
+
}.must_raise ArgumentError
|
49
|
+
|
50
|
+
lambda {
|
51
|
+
Calculate.alcohol_by_weight({
|
52
|
+
original: 392,
|
53
|
+
terminal: 739
|
54
|
+
}, :wtf)
|
55
|
+
}.must_raise ArgumentError
|
33
56
|
end
|
34
57
|
|
35
58
|
end
|
@@ -4,45 +4,86 @@ require "calculators/calories"
|
|
4
4
|
describe Calculate do
|
5
5
|
|
6
6
|
it "must calculate calories from alcohol using original and terminal Plato" do
|
7
|
-
|
7
|
+
Calculate.calories_from_alcohol({ original: 13, terminal: 2.5 }).must_equal 151
|
8
8
|
end
|
9
9
|
|
10
10
|
it "must calculate calories from alcohol using original and terminal gravities" do
|
11
|
-
|
11
|
+
Calculate.calories_from_alcohol({
|
12
|
+
original: 1.05,
|
13
|
+
terminal: 1.01
|
14
|
+
}, :specific_gravity).must_equal 139
|
12
15
|
end
|
13
16
|
|
14
17
|
it "must calculate calories from alcohol using original and terminal Brix" do
|
15
|
-
|
18
|
+
Calculate.calories_from_alcohol({
|
19
|
+
original: 15.5,
|
20
|
+
terminal: 7.2
|
21
|
+
}, :brix).must_equal 202
|
16
22
|
end
|
17
23
|
|
18
24
|
it "must calculate calories from extract using original and terminal Plato" do
|
19
|
-
|
25
|
+
Calculate.calories_from_extract({
|
26
|
+
original: 13,
|
27
|
+
terminal: 2.5
|
28
|
+
}).must_equal 83
|
20
29
|
end
|
21
30
|
|
22
31
|
it "must calculate calories from extract using original and terminal gravities" do
|
23
|
-
|
32
|
+
Calculate.calories_from_extract({
|
33
|
+
original: 1.05,
|
34
|
+
terminal: 1.01
|
35
|
+
}, :specific_gravity).must_equal 80
|
24
36
|
end
|
25
37
|
|
26
38
|
it "must calculate calories from extract using original and terminal Brix" do
|
27
|
-
|
39
|
+
Calculate.calories_from_extract({
|
40
|
+
original: 15.5,
|
41
|
+
terminal: 7.2
|
42
|
+
}, :brix).must_equal 80
|
28
43
|
end
|
29
44
|
|
30
45
|
it "must calculate calories per serving using original and terminal Plato" do
|
31
|
-
|
46
|
+
Calculate.calories_per_serving({
|
47
|
+
original: 13,
|
48
|
+
terminal: 2.5
|
49
|
+
}).must_equal 234
|
32
50
|
end
|
33
51
|
|
34
52
|
it "must calculate calories per serving using original and terminal gravities" do
|
35
|
-
|
53
|
+
Calculate.calories_per_serving({
|
54
|
+
original: 1.05,
|
55
|
+
terminal: 1.01
|
56
|
+
}, :specific_gravity).must_equal 219
|
36
57
|
end
|
37
58
|
|
38
59
|
it "must calculate calories per serving using original and terminal Brix" do
|
39
|
-
|
60
|
+
Calculate.calories_per_serving({
|
61
|
+
original: 15.5,
|
62
|
+
terminal: 7.2
|
63
|
+
}, :brix).must_equal 282
|
40
64
|
end
|
41
65
|
|
42
66
|
it "must raise an exception when the extract unit is unrecognized" do
|
43
|
-
lambda {
|
44
|
-
|
45
|
-
|
67
|
+
lambda {
|
68
|
+
Calculate.calories_from_alcohol({
|
69
|
+
original: 392,
|
70
|
+
terminal: 739
|
71
|
+
}, :wtf)
|
72
|
+
}.must_raise ArgumentError
|
73
|
+
|
74
|
+
lambda {
|
75
|
+
Calculate.calories_from_extract({
|
76
|
+
original: 392,
|
77
|
+
terminal: 739
|
78
|
+
}, :wtf)
|
79
|
+
}.must_raise ArgumentError
|
80
|
+
|
81
|
+
lambda {
|
82
|
+
Calculate.calories_per_serving({
|
83
|
+
original: 392,
|
84
|
+
terminal: 739
|
85
|
+
}, :wtf)
|
86
|
+
}.must_raise ArgumentError
|
46
87
|
end
|
47
88
|
|
48
89
|
end
|
@@ -20,15 +20,24 @@ describe Calculate do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "must calculate hop utilization from Plato" do
|
23
|
-
|
23
|
+
Calculate.hop_utilization({
|
24
|
+
at: 60,
|
25
|
+
extract: 15
|
26
|
+
}).must_equal 0.21
|
24
27
|
end
|
25
28
|
|
26
29
|
it "must calculate hop utilization from Brix" do
|
27
|
-
|
30
|
+
Calculate.hop_utilization({
|
31
|
+
at: 30,
|
32
|
+
extract: 12
|
33
|
+
}, :brix).must_equal 0.18
|
28
34
|
end
|
29
35
|
|
30
36
|
it "must calculate hop utilization from specific gravity" do
|
31
|
-
|
37
|
+
Calculate.hop_utilization({
|
38
|
+
at: 10,
|
39
|
+
extract: 1.065
|
40
|
+
}, :specific_gravity).must_equal 0.07
|
32
41
|
end
|
33
42
|
|
34
43
|
it "must calculate IBUs from hop addition using Plato" do
|
@@ -48,7 +57,7 @@ describe Calculate do
|
|
48
57
|
alpha: 5.0,
|
49
58
|
mass: 2,
|
50
59
|
volume: 19
|
51
|
-
}, { :
|
60
|
+
}, { mass: :ounces }).must_equal 34
|
52
61
|
end
|
53
62
|
|
54
63
|
it "must calculate IBUs from hop addition using gallons" do
|
@@ -58,7 +67,7 @@ describe Calculate do
|
|
58
67
|
alpha: 5.0,
|
59
68
|
mass: 56,
|
60
69
|
volume: 5
|
61
|
-
}, { :
|
70
|
+
}, { volume: :gallons }).must_equal 34
|
62
71
|
end
|
63
72
|
|
64
73
|
it "must calculate IBUs from hop addition using Brix" do
|
@@ -68,7 +77,7 @@ describe Calculate do
|
|
68
77
|
alpha: 5.0,
|
69
78
|
mass: 56,
|
70
79
|
volume: 19
|
71
|
-
}, { :
|
80
|
+
}, { extract: :brix }).must_equal 34
|
72
81
|
end
|
73
82
|
|
74
83
|
it "must calculate IBUs from hop addition using specific gravity" do
|
@@ -78,7 +87,7 @@ describe Calculate do
|
|
78
87
|
alpha: 5.0,
|
79
88
|
mass: 56,
|
80
89
|
volume: 19
|
81
|
-
}, { :
|
90
|
+
}, { extract: :specific_gravity }).must_equal 34
|
82
91
|
end
|
83
92
|
|
84
93
|
it "must calculate hop mass required for a specific IBU contribution using specific gravity" do
|
@@ -88,7 +97,7 @@ describe Calculate do
|
|
88
97
|
alpha: 5.0,
|
89
98
|
ibus: 34,
|
90
99
|
volume: 19
|
91
|
-
}, { :
|
100
|
+
}, { extract: :specific_gravity }).must_equal 56
|
92
101
|
end
|
93
102
|
|
94
103
|
it "must calculate hop mass required for a specific IBU contribution using Plato" do
|
@@ -108,7 +117,7 @@ describe Calculate do
|
|
108
117
|
alpha: 5.0,
|
109
118
|
ibus: 34,
|
110
119
|
volume: 19
|
111
|
-
}, { :
|
120
|
+
}, { extract: :brix }).must_equal 56
|
112
121
|
end
|
113
122
|
|
114
123
|
it "must calculate hop mass required for a specific IBU contribution using gallons" do
|
@@ -118,7 +127,17 @@ describe Calculate do
|
|
118
127
|
alpha: 5.0,
|
119
128
|
ibus: 34,
|
120
129
|
volume: 5
|
121
|
-
}, { :
|
130
|
+
}, { volume: :gallons }).must_equal 56
|
131
|
+
end
|
132
|
+
|
133
|
+
it "must calculate hop mass required for a specific IBU contribution using ounces" do
|
134
|
+
Calculate.hop_mass_required({
|
135
|
+
extract: 12.3,
|
136
|
+
at: 60,
|
137
|
+
alpha: 5.0,
|
138
|
+
ibus: 75,
|
139
|
+
volume: 5
|
140
|
+
}, { mass: :ounces }).must_equal 1.2
|
122
141
|
end
|
123
142
|
|
124
143
|
it "must calculate milliliters of HopShot required for a specific IBU contribution using specific gravity" do
|
@@ -127,28 +146,28 @@ describe Calculate do
|
|
127
146
|
at: 60,
|
128
147
|
volume: 19,
|
129
148
|
extract: 1.045
|
130
|
-
}, { :
|
149
|
+
}, { extract: :specific_gravity }).must_equal 3.5
|
131
150
|
|
132
151
|
Calculate.hopshot_required({
|
133
152
|
ibus: 80,
|
134
153
|
at: 60,
|
135
154
|
volume: 38,
|
136
155
|
extract: 1.085
|
137
|
-
}, { :
|
156
|
+
}, { extract: :specific_gravity }).must_equal 17.6
|
138
157
|
|
139
158
|
Calculate.hopshot_required({
|
140
159
|
ibus: 80,
|
141
160
|
at: 60,
|
142
161
|
volume: 38,
|
143
162
|
extract: 1.1
|
144
|
-
}, { :
|
163
|
+
}, { extract: :specific_gravity }).must_equal 19.2
|
145
164
|
|
146
165
|
Calculate.hopshot_required({
|
147
166
|
ibus: 60,
|
148
167
|
at: 90,
|
149
168
|
volume: 19,
|
150
169
|
extract: 1.15
|
151
|
-
}, { :
|
170
|
+
}, { extract: :specific_gravity }).must_equal 7.2
|
152
171
|
end
|
153
172
|
|
154
173
|
it "must calculate milliliters of HopShot required for a specific IBU contribution using Plato" do
|
@@ -187,28 +206,28 @@ describe Calculate do
|
|
187
206
|
at: 60,
|
188
207
|
volume: 19,
|
189
208
|
extract: 12.2
|
190
|
-
}, { :
|
209
|
+
}, { extract: :brix }).must_equal 3.5
|
191
210
|
|
192
211
|
Calculate.hopshot_required({
|
193
212
|
ibus: 80,
|
194
213
|
at: 60,
|
195
214
|
volume: 38,
|
196
215
|
extract: 20.3
|
197
|
-
}, { :
|
216
|
+
}, { extract: :brix }).must_equal 17.6
|
198
217
|
|
199
218
|
Calculate.hopshot_required({
|
200
219
|
ibus: 80,
|
201
220
|
at: 60,
|
202
221
|
volume: 38,
|
203
222
|
extract: 23.6
|
204
|
-
}, { :
|
223
|
+
}, { extract: :brix }).must_equal 19.2
|
205
224
|
|
206
225
|
Calculate.hopshot_required({
|
207
226
|
ibus: 60,
|
208
227
|
at: 90,
|
209
228
|
volume: 19,
|
210
229
|
extract: 34.1
|
211
|
-
}, { :
|
230
|
+
}, { extract: :brix }).must_equal 7.2
|
212
231
|
end
|
213
232
|
|
214
233
|
it "must calculate milliliters of HopShot required for a specific IBU contribution using gallons" do
|
@@ -217,22 +236,22 @@ describe Calculate do
|
|
217
236
|
at: 60,
|
218
237
|
volume: 5,
|
219
238
|
extract: 11.2
|
220
|
-
}, { :
|
239
|
+
}, { volume: :gallons }).must_equal 3.5
|
221
240
|
end
|
222
241
|
|
223
242
|
it "must raise an exception for unrecognized units of measure" do
|
224
243
|
lambda { Calculate.hop_extract_adjustment 99, :razor_blades }.must_raise ArgumentError
|
225
|
-
lambda { Calculate.hop_utilization 18, 90, :razor_blades }.must_raise ArgumentError
|
244
|
+
lambda { Calculate.hop_utilization({ at: 18, extract: 90 }, :razor_blades) }.must_raise ArgumentError
|
226
245
|
|
227
|
-
lambda { Calculate.ibus({ extract: 1.05, at: 60, alpha: 5.0, mass: 56, volume: 19 }, { :
|
228
|
-
lambda { Calculate.ibus({ extract: 1.05, at: 60, alpha: 5.0, mass: 56, volume: 19 }, { :
|
229
|
-
lambda { Calculate.ibus({ extract: 1.05, at: 60, alpha: 5.0, mass: 56, volume: 19 }, { :
|
246
|
+
lambda { Calculate.ibus({ extract: 1.05, at: 60, alpha: 5.0, mass: 56, volume: 19 }, { extract: :razor_blades }) }.must_raise ArgumentError
|
247
|
+
lambda { Calculate.ibus({ extract: 1.05, at: 60, alpha: 5.0, mass: 56, volume: 19 }, { mass: :razor_blades }) }.must_raise ArgumentError
|
248
|
+
lambda { Calculate.ibus({ extract: 1.05, at: 60, alpha: 5.0, mass: 56, volume: 19 }, { volume: :razor_blades }) }.must_raise ArgumentError
|
230
249
|
|
231
|
-
lambda { Calculate.hop_mass_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { :
|
232
|
-
lambda { Calculate.hop_mass_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { :
|
250
|
+
lambda { Calculate.hop_mass_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { extract: :razor_blades }) }.must_raise ArgumentError
|
251
|
+
lambda { Calculate.hop_mass_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { volume: :razor_blades }) }.must_raise ArgumentError
|
233
252
|
|
234
|
-
lambda { Calculate.hopshot_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { :
|
235
|
-
lambda { Calculate.hopshot_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { :
|
253
|
+
lambda { Calculate.hopshot_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { extract: :razor_blades }) }.must_raise ArgumentError
|
254
|
+
lambda { Calculate.hopshot_required({ extract: 1.05, at: 60, alpha: 5.0, ibus: 56, volume: 19 }, { volume: :razor_blades }) }.must_raise ArgumentError
|
236
255
|
end
|
237
256
|
|
238
257
|
end
|
@@ -3,25 +3,69 @@ require "calculators/mash"
|
|
3
3
|
|
4
4
|
describe Calculate do
|
5
5
|
|
6
|
-
it "must calculate strike temperature using
|
7
|
-
|
6
|
+
it "must calculate strike temperature using metric measures" do
|
7
|
+
Calculate.strike_temperature({
|
8
|
+
ratio: 1.5,
|
9
|
+
initial: 21,
|
10
|
+
target: 40
|
11
|
+
}).must_equal 45
|
8
12
|
end
|
9
13
|
|
10
14
|
it "must calculate strike temperature using U.S. measures" do
|
11
|
-
|
15
|
+
Calculate.strike_temperature({
|
16
|
+
ratio: 1.5,
|
17
|
+
initial: 70,
|
18
|
+
target: 104
|
19
|
+
}, :us).must_equal 109
|
12
20
|
end
|
13
21
|
|
14
|
-
it "must
|
15
|
-
|
22
|
+
it "must allow a loss adjustment when calculating strike temperature" do
|
23
|
+
Calculate.strike_temperature({
|
24
|
+
ratio: 1.5,
|
25
|
+
initial: 60,
|
26
|
+
target: 150,
|
27
|
+
loss: 1.015
|
28
|
+
}, :us).must_equal 164
|
29
|
+
end
|
30
|
+
|
31
|
+
it "must calculate infusion volume using metric measures" do
|
32
|
+
Calculate.infusion_volume({
|
33
|
+
ratio: 1,
|
34
|
+
initial: 40,
|
35
|
+
target: 60,
|
36
|
+
mass: 3.6,
|
37
|
+
volume: 3.6
|
38
|
+
}).must_equal 2.5
|
16
39
|
end
|
17
40
|
|
18
41
|
it "must calculate infusion volume using U.S. measures" do
|
19
|
-
|
42
|
+
Calculate.infusion_volume({
|
43
|
+
ratio: 1,
|
44
|
+
initial: 104,
|
45
|
+
target: 140,
|
46
|
+
mass: 8,
|
47
|
+
volume: 8
|
48
|
+
}, :us).must_equal 4.8
|
20
49
|
end
|
21
50
|
|
22
51
|
it "must raise and exception when given an unknown unit" do
|
23
|
-
lambda {
|
24
|
-
|
52
|
+
lambda {
|
53
|
+
Calculate.strike_temperature({
|
54
|
+
ratio: 1,
|
55
|
+
initial: 1,
|
56
|
+
target: 1
|
57
|
+
}, :imperial)
|
58
|
+
}.must_raise ArgumentError
|
59
|
+
|
60
|
+
lambda {
|
61
|
+
Calculate.infusion_volume({
|
62
|
+
ratio: 1,
|
63
|
+
initial: 1,
|
64
|
+
target: 1,
|
65
|
+
mass: 1,
|
66
|
+
volume: 1
|
67
|
+
}, :imperial)
|
68
|
+
}.must_raise ArgumentError
|
25
69
|
end
|
26
70
|
|
27
71
|
end
|
@@ -4,75 +4,146 @@ require "calculators/yeast"
|
|
4
4
|
describe Calculate do
|
5
5
|
|
6
6
|
it "must calculate yeast cells needed for an ale" do
|
7
|
-
|
7
|
+
Calculate.yeast_cells_required({
|
8
|
+
extract: 12,
|
9
|
+
volume: 20
|
10
|
+
}).must_equal 180_000_000_000
|
8
11
|
end
|
9
12
|
|
10
13
|
it "must calculate yeast cells needed for a hybrid" do
|
11
|
-
|
14
|
+
Calculate.yeast_cells_required({
|
15
|
+
extract: 12,
|
16
|
+
volume: 20,
|
17
|
+
type: :hybrid
|
18
|
+
}).must_equal 270_000_000_000
|
12
19
|
end
|
13
20
|
|
14
21
|
it "must calculate yeast cells needed for a lager" do
|
15
|
-
|
22
|
+
Calculate.yeast_cells_required({
|
23
|
+
extract: 12,
|
24
|
+
volume: 20,
|
25
|
+
type: :lager
|
26
|
+
}).must_equal 360_000_000_000
|
16
27
|
end
|
17
28
|
|
18
29
|
it "must calculate yeast cells needed for an ale using gallons" do
|
19
|
-
|
30
|
+
Calculate.yeast_cells_required({
|
31
|
+
extract: 12,
|
32
|
+
volume: 5.3
|
33
|
+
}, { volume: :gallons }).must_equal 180_900_000_000
|
20
34
|
end
|
21
35
|
|
22
36
|
it "must calculate yeast cells needed for an ale using specific gravity" do
|
23
|
-
|
37
|
+
Calculate.yeast_cells_required({
|
38
|
+
extract: 1.048,
|
39
|
+
volume: 20
|
40
|
+
}, { extract: :specific_gravity }).must_equal 178_500_000_000
|
24
41
|
end
|
25
42
|
|
26
43
|
it "must calculate yeast cells needed for an ale using Brix" do
|
27
|
-
|
44
|
+
Calculate.yeast_cells_required({
|
45
|
+
extract: 18.5,
|
46
|
+
volume: 20
|
47
|
+
}, { extract: :brix }).must_equal 279_000_000_000
|
28
48
|
end
|
29
49
|
|
30
50
|
it "must calculate yeast cells needed for an ale using gallons and specific gravity" do
|
31
|
-
|
51
|
+
Calculate.yeast_cells_required({
|
52
|
+
extract: 1.048,
|
53
|
+
volume: 5.3
|
54
|
+
}, { extract: :specific_gravity, volume: :gallons }).must_equal 179_392_500_000
|
32
55
|
end
|
33
56
|
|
34
57
|
it "must calculate yeast cells needed for an hybrid using gallons" do
|
35
|
-
|
58
|
+
Calculate.yeast_cells_required({
|
59
|
+
extract: 12,
|
60
|
+
volume: 5.3,
|
61
|
+
type: :hybrid
|
62
|
+
}, { volume: :gallons }).must_equal 271_350_000_000
|
36
63
|
end
|
37
64
|
|
38
65
|
it "must calculate yeast cells needed for an hybrid using specific gravity" do
|
39
|
-
|
66
|
+
Calculate.yeast_cells_required({
|
67
|
+
extract: 1.048,
|
68
|
+
volume: 20,
|
69
|
+
type: :hybrid
|
70
|
+
}, { extract: :specific_gravity }).must_equal 267_750_000_000
|
40
71
|
end
|
41
72
|
|
42
73
|
it "must calculate yeast cells needed for an hybrid using Brix" do
|
43
|
-
|
74
|
+
Calculate.yeast_cells_required({
|
75
|
+
extract: 18.5,
|
76
|
+
volume: 20,
|
77
|
+
type: :hybrid
|
78
|
+
}, { extract: :brix }).must_equal 418_500_000_000
|
44
79
|
end
|
45
80
|
|
46
81
|
it "must calculate yeast cells needed for an hybrid using gallons and specific gravity" do
|
47
|
-
|
82
|
+
Calculate.yeast_cells_required({
|
83
|
+
extract: 1.048,
|
84
|
+
volume: 5.3,
|
85
|
+
type: :hybrid
|
86
|
+
}, { extract: :specific_gravity, volume: :gallons }).must_equal 269_088_750_000
|
48
87
|
end
|
49
88
|
|
50
89
|
it "must calculate yeast cells needed for an lager using gallons" do
|
51
|
-
|
90
|
+
Calculate.yeast_cells_required({
|
91
|
+
extract: 12,
|
92
|
+
volume: 5.3,
|
93
|
+
type: :lager
|
94
|
+
}, { volume: :gallons }).must_equal 361_800_000_000
|
52
95
|
end
|
53
96
|
|
54
97
|
it "must calculate yeast cells needed for an lager using specific gravity" do
|
55
|
-
|
98
|
+
Calculate.yeast_cells_required({
|
99
|
+
extract: 1.048,
|
100
|
+
volume: 20,
|
101
|
+
type: :lager
|
102
|
+
}, { extract: :specific_gravity }).must_equal 357_000_000_000
|
56
103
|
end
|
57
104
|
|
58
105
|
it "must calculate yeast cells needed for an lager using Brix" do
|
59
|
-
|
106
|
+
Calculate.yeast_cells_required({
|
107
|
+
extract: 18.5,
|
108
|
+
volume: 20,
|
109
|
+
type: :lager
|
110
|
+
}, { extract: :brix }).must_equal 558_000_000_000
|
60
111
|
end
|
61
112
|
|
62
113
|
it "must calculate yeast cells needed for an lager using gallons and specific gravity" do
|
63
|
-
|
114
|
+
Calculate.yeast_cells_required({
|
115
|
+
extract: 1.048,
|
116
|
+
volume: 5.3,
|
117
|
+
type: :lager
|
118
|
+
}, { extract: :specific_gravity, volume: :gallons }).must_equal 358_785_000_000
|
64
119
|
end
|
65
120
|
|
66
121
|
it "must raise an exception when the beer type is unrecognized" do
|
67
|
-
lambda {
|
122
|
+
lambda {
|
123
|
+
Calculate.yeast_cells_required({
|
124
|
+
extract: 15,
|
125
|
+
volume: 20,
|
126
|
+
type: :wine
|
127
|
+
})
|
128
|
+
}.must_raise ArgumentError
|
68
129
|
end
|
69
130
|
|
70
131
|
it "must raise an exception when the extract unit is unrecognized" do
|
71
|
-
lambda {
|
132
|
+
lambda {
|
133
|
+
Calculate.yeast_cells_required({
|
134
|
+
extract: 15,
|
135
|
+
volume: 20
|
136
|
+
}, { extract: :squeeze })
|
137
|
+
}.must_raise ArgumentError
|
72
138
|
end
|
73
139
|
|
74
140
|
it "must raise an exception when the volume unit is unrecognized" do
|
75
|
-
lambda {
|
141
|
+
lambda {
|
142
|
+
Calculate.yeast_cells_required({
|
143
|
+
extract: 15,
|
144
|
+
volume: 20
|
145
|
+
}, { volume: :barrels })
|
146
|
+
}.must_raise ArgumentError
|
76
147
|
end
|
77
148
|
|
78
149
|
end
|