gravitheque 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|