ruby-measurement 1.2.0 → 1.3.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/.github/workflows/CI.yml +30 -0
- data/CHANGELOG.md +25 -10
- data/README.md +13 -7
- data/lib/ruby-measurement/core_ext/string.rb +2 -2
- data/lib/ruby-measurement/core_ext/symbol.rb +1 -1
- data/lib/ruby-measurement/measurement.rb +101 -42
- data/lib/ruby-measurement/unit.rb +34 -28
- data/lib/ruby-measurement/version.rb +1 -1
- data/ruby-measurement.gemspec +5 -4
- data/spec/ruby-measurement/core_ext/numeric_spec.rb +2 -2
- data/spec/ruby-measurement/core_ext/string_spec.rb +12 -12
- data/spec/ruby-measurement/core_ext/symbol_spec.rb +3 -3
- data/spec/ruby-measurement/definitions/metric/area_spec.rb +32 -32
- data/spec/ruby-measurement/definitions/metric/capacity_spec.rb +18 -18
- data/spec/ruby-measurement/definitions/metric/length_spec.rb +128 -128
- data/spec/ruby-measurement/definitions/metric/volume_spec.rb +128 -128
- data/spec/ruby-measurement/definitions/metric/weight_spec.rb +160 -160
- data/spec/ruby-measurement/definitions/us_customary/area_spec.rb +72 -72
- data/spec/ruby-measurement/definitions/us_customary/capacity_spec.rb +32 -32
- data/spec/ruby-measurement/definitions/us_customary/length_spec.rb +128 -128
- data/spec/ruby-measurement/definitions/us_customary/volume_spec.rb +98 -98
- data/spec/ruby-measurement/definitions/us_customary/weight_spec.rb +72 -72
- data/spec/ruby-measurement/measurement_spec.rb +238 -164
- data/spec/ruby-measurement/unit_builder_spec.rb +35 -35
- data/spec/ruby-measurement/unit_spec.rb +84 -41
- data/tasks/rspec.rake +1 -1
- metadata +29 -25
- data/.travis.yml +0 -4
@@ -2,200 +2,200 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe Measurement do
|
5
|
+
RSpec.describe Measurement do
|
6
6
|
describe 'gallons' do
|
7
|
-
subject {
|
8
|
-
|
7
|
+
subject { described_class.parse('1 gal') }
|
8
|
+
|
9
9
|
it 'converts to quarts' do
|
10
|
-
subject.convert_to(:qt).quantity.
|
10
|
+
expect(subject.convert_to(:qt).quantity).to eq 4
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it 'converts to pints' do
|
14
|
-
subject.convert_to(:pt).quantity.
|
14
|
+
expect(subject.convert_to(:pt).quantity).to eq 8
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it 'converts to cups' do
|
18
|
-
subject.convert_to(:c).quantity.
|
18
|
+
expect(subject.convert_to(:c).quantity).to eq 16
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it 'converts to fluid ounces' do
|
22
|
-
subject.convert_to(:'fl oz').quantity.
|
22
|
+
expect(subject.convert_to(:'fl oz').quantity).to eq 128
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it 'converts to tablespoons' do
|
26
|
-
subject.convert_to(:tbsp).quantity.
|
26
|
+
expect(subject.convert_to(:tbsp).quantity).to eq 256
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
it 'converts to teaspoons' do
|
30
|
-
subject.convert_to(:tsp).quantity.
|
30
|
+
expect(subject.convert_to(:tsp).quantity).to eq 768
|
31
31
|
end
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
describe 'quarts' do
|
35
|
-
subject {
|
36
|
-
|
35
|
+
subject { described_class.parse('4 qt') }
|
36
|
+
|
37
37
|
it 'converts to gallons' do
|
38
|
-
subject.convert_to(:gal).quantity.
|
38
|
+
expect(subject.convert_to(:gal).quantity).to eq 1
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
it 'converts to pints' do
|
42
|
-
subject.convert_to(:pt).quantity.
|
42
|
+
expect(subject.convert_to(:pt).quantity).to eq 8
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it 'converts to cups' do
|
46
|
-
subject.convert_to(:c).quantity.
|
46
|
+
expect(subject.convert_to(:c).quantity).to eq 16
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
it 'converts to fluid ounces' do
|
50
|
-
subject.convert_to(:'fl oz').quantity.
|
50
|
+
expect(subject.convert_to(:'fl oz').quantity).to eq 128
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
it 'converts to tablespoons' do
|
54
|
-
subject.convert_to(:tbsp).quantity.
|
54
|
+
expect(subject.convert_to(:tbsp).quantity).to eq 256
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
it 'converts to teaspoons' do
|
58
|
-
subject.convert_to(:tsp).quantity.
|
58
|
+
expect(subject.convert_to(:tsp).quantity).to eq 768
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
describe 'pints' do
|
63
|
-
subject {
|
64
|
-
|
63
|
+
subject { described_class.parse('8 pt') }
|
64
|
+
|
65
65
|
it 'converts to gallons' do
|
66
|
-
subject.convert_to(:gal).quantity.
|
66
|
+
expect(subject.convert_to(:gal).quantity).to eq 1
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
it 'converts to quarts' do
|
70
|
-
subject.convert_to(:qt).quantity.
|
70
|
+
expect(subject.convert_to(:qt).quantity).to eq 4
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
it 'converts to cups' do
|
74
|
-
subject.convert_to(:c).quantity.
|
74
|
+
expect(subject.convert_to(:c).quantity).to eq 16
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
it 'converts to fluid ounces' do
|
78
|
-
subject.convert_to(:'fl oz').quantity.
|
78
|
+
expect(subject.convert_to(:'fl oz').quantity).to eq 128
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
it 'converts to tablespoons' do
|
82
|
-
subject.convert_to(:tbsp).quantity.
|
82
|
+
expect(subject.convert_to(:tbsp).quantity).to eq 256
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
it 'converts to teaspoons' do
|
86
|
-
subject.convert_to(:tsp).quantity.
|
86
|
+
expect(subject.convert_to(:tsp).quantity).to eq 768
|
87
87
|
end
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
describe 'cups' do
|
91
|
-
subject {
|
92
|
-
|
91
|
+
subject { described_class.parse('16 c') }
|
92
|
+
|
93
93
|
it 'converts to gallons' do
|
94
|
-
subject.convert_to(:gal).quantity.
|
94
|
+
expect(subject.convert_to(:gal).quantity).to eq 1
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
it 'converts to quarts' do
|
98
|
-
subject.convert_to(:qt).quantity.
|
98
|
+
expect(subject.convert_to(:qt).quantity).to eq 4
|
99
99
|
end
|
100
|
-
|
100
|
+
|
101
101
|
it 'converts to pints' do
|
102
|
-
subject.convert_to(:pt).quantity.
|
102
|
+
expect(subject.convert_to(:pt).quantity).to eq 8
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
it 'converts to fluid ounces' do
|
106
|
-
subject.convert_to(:'fl oz').quantity.
|
106
|
+
expect(subject.convert_to(:'fl oz').quantity).to eq 128
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
it 'converts to tablespoons' do
|
110
|
-
subject.convert_to(:tbsp).quantity.
|
110
|
+
expect(subject.convert_to(:tbsp).quantity).to eq 256
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
it 'converts to teaspoons' do
|
114
|
-
subject.convert_to(:tsp).quantity.
|
114
|
+
expect(subject.convert_to(:tsp).quantity).to eq 768
|
115
115
|
end
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
describe 'fluid ounces' do
|
119
|
-
subject {
|
120
|
-
|
119
|
+
subject { described_class.parse('128 fl oz') }
|
120
|
+
|
121
121
|
it 'converts to gallons' do
|
122
|
-
subject.convert_to(:gal).quantity.
|
122
|
+
expect(subject.convert_to(:gal).quantity).to eq 1
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
it 'converts to quarts' do
|
126
|
-
subject.convert_to(:qt).quantity.
|
126
|
+
expect(subject.convert_to(:qt).quantity).to eq 4
|
127
127
|
end
|
128
|
-
|
128
|
+
|
129
129
|
it 'converts to pints' do
|
130
|
-
subject.convert_to(:pt).quantity.
|
130
|
+
expect(subject.convert_to(:pt).quantity).to eq 8
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
it 'converts to cups' do
|
134
|
-
subject.convert_to(:c).quantity.
|
134
|
+
expect(subject.convert_to(:c).quantity).to eq 16
|
135
135
|
end
|
136
|
-
|
136
|
+
|
137
137
|
it 'converts to tablespoons' do
|
138
|
-
subject.convert_to(:tbsp).quantity.
|
138
|
+
expect(subject.convert_to(:tbsp).quantity).to eq 256
|
139
139
|
end
|
140
|
-
|
140
|
+
|
141
141
|
it 'converts to teaspoons' do
|
142
|
-
subject.convert_to(:tsp).quantity.
|
142
|
+
expect(subject.convert_to(:tsp).quantity).to eq 768
|
143
143
|
end
|
144
144
|
end
|
145
|
-
|
145
|
+
|
146
146
|
describe 'tablespoons' do
|
147
|
-
subject {
|
148
|
-
|
147
|
+
subject { described_class.parse('256 tbsp') }
|
148
|
+
|
149
149
|
it 'converts to gallons' do
|
150
|
-
subject.convert_to(:gal).quantity.
|
150
|
+
expect(subject.convert_to(:gal).quantity).to eq 1
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
153
|
it 'converts to quarts' do
|
154
|
-
subject.convert_to(:qt).quantity.
|
154
|
+
expect(subject.convert_to(:qt).quantity).to eq 4
|
155
155
|
end
|
156
|
-
|
156
|
+
|
157
157
|
it 'converts to pints' do
|
158
|
-
subject.convert_to(:pt).quantity.
|
158
|
+
expect(subject.convert_to(:pt).quantity).to eq 8
|
159
159
|
end
|
160
|
-
|
160
|
+
|
161
161
|
it 'converts to cups' do
|
162
|
-
subject.convert_to(:c).quantity.
|
162
|
+
expect(subject.convert_to(:c).quantity).to eq 16
|
163
163
|
end
|
164
|
-
|
164
|
+
|
165
165
|
it 'converts to fluid ounces' do
|
166
|
-
subject.convert_to(:'fl oz').quantity.
|
166
|
+
expect(subject.convert_to(:'fl oz').quantity).to eq 128
|
167
167
|
end
|
168
|
-
|
168
|
+
|
169
169
|
it 'converts to teaspoons' do
|
170
|
-
subject.convert_to(:tsp).quantity.
|
170
|
+
expect(subject.convert_to(:tsp).quantity).to eq 768
|
171
171
|
end
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
describe 'teaspoons' do
|
175
|
-
subject {
|
176
|
-
|
175
|
+
subject { described_class.parse('768 tsp') }
|
176
|
+
|
177
177
|
it 'converts to gallons' do
|
178
|
-
subject.convert_to(:gal).quantity.
|
178
|
+
expect(subject.convert_to(:gal).quantity).to eq 1
|
179
179
|
end
|
180
|
-
|
180
|
+
|
181
181
|
it 'converts to quarts' do
|
182
|
-
subject.convert_to(:qt).quantity.
|
182
|
+
expect(subject.convert_to(:qt).quantity).to eq 4
|
183
183
|
end
|
184
|
-
|
184
|
+
|
185
185
|
it 'converts to pints' do
|
186
|
-
subject.convert_to(:pt).quantity.
|
186
|
+
expect(subject.convert_to(:pt).quantity).to eq 8
|
187
187
|
end
|
188
|
-
|
188
|
+
|
189
189
|
it 'converts to cups' do
|
190
|
-
subject.convert_to(:c).quantity.
|
190
|
+
expect(subject.convert_to(:c).quantity).to eq 16
|
191
191
|
end
|
192
|
-
|
192
|
+
|
193
193
|
it 'converts to fluid ounces' do
|
194
|
-
subject.convert_to(:'fl oz').quantity.
|
194
|
+
expect(subject.convert_to(:'fl oz').quantity).to eq 128
|
195
195
|
end
|
196
|
-
|
196
|
+
|
197
197
|
it 'converts to tablespoons' do
|
198
|
-
subject.convert_to(:tbsp).quantity.
|
198
|
+
expect(subject.convert_to(:tbsp).quantity).to eq 256
|
199
199
|
end
|
200
200
|
end
|
201
201
|
end
|
@@ -2,148 +2,148 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe Measurement do
|
5
|
+
RSpec.describe Measurement do
|
6
6
|
describe 'tons' do
|
7
|
-
subject {
|
8
|
-
|
7
|
+
subject { described_class.parse('1 ton') }
|
8
|
+
|
9
9
|
it 'converts to hundredweights' do
|
10
|
-
subject.convert_to(:cwt).quantity.
|
10
|
+
expect(subject.convert_to(:cwt).quantity).to eq 20
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it 'converts to pounds' do
|
14
|
-
subject.convert_to(:lbs).quantity.
|
14
|
+
expect(subject.convert_to(:lbs).quantity).to eq 2_000
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it 'converts to ounces' do
|
18
|
-
subject.convert_to(:oz).quantity.
|
18
|
+
expect(subject.convert_to(:oz).quantity).to eq 32_000
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it 'converts to drams' do
|
22
|
-
subject.convert_to(:dr).quantity.
|
22
|
+
expect(subject.convert_to(:dr).quantity).to eq 512_000
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it 'converts to grains' do
|
26
|
-
subject.convert_to(:gr).quantity.
|
26
|
+
expect(subject.convert_to(:gr).quantity).to eq 14_000_000
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
describe 'hundredweights' do
|
31
|
-
subject {
|
32
|
-
|
31
|
+
subject { described_class.parse('20 cwt') }
|
32
|
+
|
33
33
|
it 'converts to tons' do
|
34
|
-
subject.convert_to(:ton).quantity.
|
34
|
+
expect(subject.convert_to(:ton).quantity).to eq 1
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it 'converts to pounds' do
|
38
|
-
subject.convert_to(:lbs).quantity.
|
38
|
+
expect(subject.convert_to(:lbs).quantity).to eq 2_000
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
it 'converts to ounces' do
|
42
|
-
subject.convert_to(:oz).quantity.
|
42
|
+
expect(subject.convert_to(:oz).quantity).to eq 32_000
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it 'converts to drams' do
|
46
|
-
subject.convert_to(:dr).quantity.
|
46
|
+
expect(subject.convert_to(:dr).quantity).to eq 512_000
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
it 'converts to grains' do
|
50
|
-
subject.convert_to(:gr).quantity.
|
50
|
+
expect(subject.convert_to(:gr).quantity).to eq 14_000_000
|
51
51
|
end
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
describe 'pounds' do
|
55
|
-
subject {
|
56
|
-
|
55
|
+
subject { described_class.parse('2000 lbs') }
|
56
|
+
|
57
57
|
it 'converts to tons' do
|
58
|
-
subject.convert_to(:ton).quantity.
|
58
|
+
expect(subject.convert_to(:ton).quantity).to eq 1
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
it 'converts to hundredweights' do
|
62
|
-
subject.convert_to(:cwt).quantity.
|
62
|
+
expect(subject.convert_to(:cwt).quantity).to eq 20
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
it 'converts to ounces' do
|
66
|
-
subject.convert_to(:oz).quantity.
|
66
|
+
expect(subject.convert_to(:oz).quantity).to eq 32_000
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
it 'converts to drams' do
|
70
|
-
subject.convert_to(:dr).quantity.
|
70
|
+
expect(subject.convert_to(:dr).quantity).to eq 512_000
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
it 'converts to grains' do
|
74
|
-
subject.convert_to(:gr).quantity.
|
74
|
+
expect(subject.convert_to(:gr).quantity).to eq 14_000_000
|
75
75
|
end
|
76
76
|
end
|
77
|
-
|
77
|
+
|
78
78
|
describe 'ounces' do
|
79
|
-
subject {
|
80
|
-
|
79
|
+
subject { described_class.parse('32000 oz') }
|
80
|
+
|
81
81
|
it 'converts to tons' do
|
82
|
-
subject.convert_to(:ton).quantity.
|
82
|
+
expect(subject.convert_to(:ton).quantity).to eq 1
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
it 'converts to hundredweights' do
|
86
|
-
subject.convert_to(:cwt).quantity.
|
86
|
+
expect(subject.convert_to(:cwt).quantity).to eq 20
|
87
87
|
end
|
88
|
-
|
88
|
+
|
89
89
|
it 'converts to pounds' do
|
90
|
-
subject.convert_to(:lbs).quantity.
|
90
|
+
expect(subject.convert_to(:lbs).quantity).to eq 2_000
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
it 'converts to drams' do
|
94
|
-
subject.convert_to(:dr).quantity.
|
94
|
+
expect(subject.convert_to(:dr).quantity).to eq 512_000
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
it 'converts to grains' do
|
98
|
-
subject.convert_to(:gr).quantity.
|
98
|
+
expect(subject.convert_to(:gr).quantity).to eq 14_000_000
|
99
99
|
end
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
describe 'drams' do
|
103
|
-
subject {
|
104
|
-
|
103
|
+
subject { described_class.parse('512000 dr') }
|
104
|
+
|
105
105
|
it 'converts to tons' do
|
106
|
-
subject.convert_to(:ton).quantity.
|
106
|
+
expect(subject.convert_to(:ton).quantity).to eq 1
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
it 'converts to hundredweights' do
|
110
|
-
subject.convert_to(:cwt).quantity.
|
110
|
+
expect(subject.convert_to(:cwt).quantity).to eq 20
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
it 'converts to pounds' do
|
114
|
-
subject.convert_to(:lbs).quantity.
|
114
|
+
expect(subject.convert_to(:lbs).quantity).to eq 2_000
|
115
115
|
end
|
116
|
-
|
116
|
+
|
117
117
|
it 'converts to ounces' do
|
118
|
-
subject.convert_to(:oz).quantity.
|
118
|
+
expect(subject.convert_to(:oz).quantity).to eq 32_000
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
it 'converts to grains' do
|
122
|
-
subject.convert_to(:gr).quantity.
|
122
|
+
expect(subject.convert_to(:gr).quantity).to eq 14_000_000
|
123
123
|
end
|
124
124
|
end
|
125
|
-
|
125
|
+
|
126
126
|
describe 'grains' do
|
127
|
-
subject {
|
128
|
-
|
127
|
+
subject { described_class.parse('14000000 gr') }
|
128
|
+
|
129
129
|
it 'converts to tons' do
|
130
|
-
subject.convert_to(:ton).quantity.
|
130
|
+
expect(subject.convert_to(:ton).quantity).to eq 1
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
it 'converts to hundredweights' do
|
134
|
-
subject.convert_to(:cwt).quantity.
|
134
|
+
expect(subject.convert_to(:cwt).quantity).to eq 20
|
135
135
|
end
|
136
|
-
|
136
|
+
|
137
137
|
it 'converts to pounds' do
|
138
|
-
subject.convert_to(:lbs).quantity.
|
138
|
+
expect(subject.convert_to(:lbs).quantity).to eq 2_000
|
139
139
|
end
|
140
|
-
|
140
|
+
|
141
141
|
it 'converts to ounces' do
|
142
|
-
subject.convert_to(:oz).quantity.
|
142
|
+
expect(subject.convert_to(:oz).quantity).to eq 32_000
|
143
143
|
end
|
144
|
-
|
144
|
+
|
145
145
|
it 'converts to drams' do
|
146
|
-
subject.convert_to(:dr).quantity.
|
146
|
+
expect(subject.convert_to(:dr).quantity).to eq 512_000
|
147
147
|
end
|
148
148
|
end
|
149
149
|
end
|