ruby-measurement 1.0.0 → 1.1.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 +4 -0
- data/CHANGELOG.md +21 -0
- data/README.md +2 -0
- data/Rakefile +3 -0
- data/lib/ruby-measurement/definitions/metric.rb +1 -0
- data/lib/ruby-measurement/definitions/metric/capacity.rb +12 -82
- data/lib/ruby-measurement/definitions/metric/volume.rb +82 -12
- data/lib/ruby-measurement/definitions/us_customary.rb +1 -0
- data/lib/ruby-measurement/definitions/us_customary/capacity.rb +29 -0
- data/lib/ruby-measurement/definitions/us_customary/length.rb +0 -20
- data/lib/ruby-measurement/definitions/us_customary/weight.rb +6 -6
- data/lib/ruby-measurement/measurement.rb +5 -14
- data/lib/ruby-measurement/unit.rb +52 -11
- data/lib/ruby-measurement/version.rb +1 -1
- data/ruby-measurement.gemspec +1 -0
- data/spec/ruby-measurement/definitions/metric/area_spec.rb +69 -0
- data/spec/ruby-measurement/definitions/metric/capacity_spec.rb +41 -0
- data/spec/ruby-measurement/definitions/metric/length_spec.rb +261 -0
- data/spec/ruby-measurement/definitions/metric/volume_spec.rb +261 -0
- data/spec/ruby-measurement/definitions/metric/weight_spec.rb +325 -0
- data/spec/ruby-measurement/definitions/us_customary/area_spec.rb +149 -0
- data/spec/ruby-measurement/definitions/us_customary/capacity_spec.rb +69 -0
- data/spec/ruby-measurement/definitions/us_customary/length_spec.rb +261 -0
- data/spec/ruby-measurement/definitions/us_customary/volume_spec.rb +201 -0
- data/spec/ruby-measurement/definitions/us_customary/weight_spec.rb +149 -0
- data/spec/ruby-measurement/measurement_spec.rb +342 -0
- data/spec/ruby-measurement/unit_builder_spec.rb +102 -0
- data/spec/ruby-measurement/unit_spec.rb +120 -0
- data/spec/spec_helper.rb +5 -0
- data/tasks/rspec.rake +6 -0
- metadata +48 -5
@@ -0,0 +1,149 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Measurement do
|
6
|
+
describe 'square miles' do
|
7
|
+
subject { Measurement.parse('1 mi²') }
|
8
|
+
|
9
|
+
it 'converts to square furlongs' do
|
10
|
+
subject.convert_to(:fur2).quantity.should eq 64
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'converts to square chains' do
|
14
|
+
subject.convert_to(:ch2).quantity.should eq 6_400
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'converts to square yards' do
|
18
|
+
subject.convert_to(:yd2).quantity.should eq 3_097_600
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'converts to square feet' do
|
22
|
+
subject.convert_to(:ft2).quantity.should eq 27_878_400
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'converts to square inches' do
|
26
|
+
subject.convert_to(:in2).quantity.should eq 4_014_489_600
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'square furlongs' do
|
31
|
+
subject { Measurement.parse('64 fur²') }
|
32
|
+
|
33
|
+
it 'converts to square miles' do
|
34
|
+
subject.convert_to(:mi2).quantity.should eq 1
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'converts to square chains' do
|
38
|
+
subject.convert_to(:ch2).quantity.should eq 6_400
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'converts to square yards' do
|
42
|
+
subject.convert_to(:yd2).quantity.should eq 3_097_600
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'converts to square feet' do
|
46
|
+
subject.convert_to(:ft2).quantity.should eq 27_878_400
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'converts to square inches' do
|
50
|
+
subject.convert_to(:in2).quantity.should eq 4_014_489_600
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe 'square chains' do
|
55
|
+
subject { Measurement.parse('6400 ch²') }
|
56
|
+
|
57
|
+
it 'converts to square miles' do
|
58
|
+
subject.convert_to(:mi2).quantity.should eq 1
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'converts to square furlongs' do
|
62
|
+
subject.convert_to(:fur2).quantity.should eq 64
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'converts to square yards' do
|
66
|
+
subject.convert_to(:yd2).quantity.should eq 3_097_600
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'converts to square feet' do
|
70
|
+
subject.convert_to(:ft2).quantity.should eq 27_878_400
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'converts to square inches' do
|
74
|
+
subject.convert_to(:in2).quantity.should eq 4_014_489_600
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe 'square yards' do
|
79
|
+
subject { Measurement.parse('3097600 yd²') }
|
80
|
+
|
81
|
+
it 'converts to square miles' do
|
82
|
+
subject.convert_to(:mi2).quantity.should eq 1
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'converts to square furlongs' do
|
86
|
+
subject.convert_to(:fur2).quantity.should eq 64
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'converts to square chains' do
|
90
|
+
subject.convert_to(:ch2).quantity.should eq 6_400
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'converts to square feet' do
|
94
|
+
subject.convert_to(:ft2).quantity.should eq 27_878_400
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'converts to square inches' do
|
98
|
+
subject.convert_to(:in2).quantity.should eq 4_014_489_600
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe 'square feet' do
|
103
|
+
subject { Measurement.parse('27878400 ft²') }
|
104
|
+
|
105
|
+
it 'converts to square miles' do
|
106
|
+
subject.convert_to(:mi2).quantity.should eq 1
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'converts to square furlongs' do
|
110
|
+
subject.convert_to(:fur2).quantity.should eq 64
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'converts to square chains' do
|
114
|
+
subject.convert_to(:ch2).quantity.should eq 6_400
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'converts to square yards' do
|
118
|
+
subject.convert_to(:yd2).quantity.should eq 3_097_600
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'converts to square inches' do
|
122
|
+
subject.convert_to(:in2).quantity.should eq 4_014_489_600
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe 'square inches' do
|
127
|
+
subject { Measurement.parse('4014489600 in²') }
|
128
|
+
|
129
|
+
it 'converts to square miles' do
|
130
|
+
subject.convert_to(:mi2).quantity.should eq 1
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'converts to square furlongs' do
|
134
|
+
subject.convert_to(:fur2).quantity.should eq 64
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'converts to square chains' do
|
138
|
+
subject.convert_to(:ch2).quantity.should eq 6_400
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'converts to square yards' do
|
142
|
+
subject.convert_to(:yd2).quantity.should eq 3_097_600
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'converts to square feet' do
|
146
|
+
subject.convert_to(:ft2).quantity.should eq 27_878_400
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Measurement do
|
6
|
+
describe 'acre-feet' do
|
7
|
+
subject { Measurement.parse('1 acre ft') }
|
8
|
+
|
9
|
+
it 'converts to cubic yards' do
|
10
|
+
subject.convert_to(:yd3).quantity.should eq Rational(4840, 3).to_f
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'converts to cubic feet' do
|
14
|
+
subject.convert_to(:ft3).quantity.should eq 43_560
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'converts to cubic inches' do
|
18
|
+
subject.convert_to(:in3).quantity.should eq 75_271_680
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'cubic yards' do
|
23
|
+
subject { Measurement.parse('1613 1/3 yd³') }
|
24
|
+
|
25
|
+
it 'converts to acre-feet' do
|
26
|
+
subject.convert_to(:'acre ft').quantity.should eq 1
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'converts to cubic feet' do
|
30
|
+
subject.convert_to(:ft3).quantity.should eq 43_560
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'converts to cubic inches' do
|
34
|
+
subject.convert_to(:in3).quantity.should eq 75_271_680
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'cubic feet' do
|
39
|
+
subject { Measurement.parse('43560 ft³') }
|
40
|
+
|
41
|
+
it 'converts to acre-feet' do
|
42
|
+
subject.convert_to(:'acre ft').quantity.should eq 1
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'converts to cubic yards' do
|
46
|
+
subject.convert_to(:yd3).quantity.should eq Rational(4840, 3).to_f
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'converts to cubic inches' do
|
50
|
+
subject.convert_to(:in3).quantity.should eq 75_271_680
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe 'cubic inches' do
|
55
|
+
subject { Measurement.parse('75271680 in³') }
|
56
|
+
|
57
|
+
it 'converts to acre-feet' do
|
58
|
+
subject.convert_to(:'acre ft').quantity.should eq 1
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'converts to cubic yards' do
|
62
|
+
subject.convert_to(:yd3).quantity.should eq Rational(4840, 3).to_f
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'converts to cubic feet' do
|
66
|
+
subject.convert_to(:ft3).quantity.should eq 43_560
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,261 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Measurement do
|
6
|
+
describe 'miles' do
|
7
|
+
subject { Measurement.parse('1 mi') }
|
8
|
+
|
9
|
+
it 'converts to furlongs' do
|
10
|
+
subject.convert_to(:fur).quantity.should eq 8
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'converts to chains' do
|
14
|
+
subject.convert_to(:ch).quantity.should eq 80
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'converts to fathoms' do
|
18
|
+
subject.convert_to(:ftm).quantity.should eq 880
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'converts to yards' do
|
22
|
+
subject.convert_to(:yd).quantity.should eq 1_760
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'converts to feet' do
|
26
|
+
subject.convert_to(:ft).quantity.should eq 5_280
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'converts to inches' do
|
30
|
+
subject.convert_to(:in).quantity.should eq 63_360
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'converts to thou' do
|
34
|
+
subject.convert_to(:th).quantity.should eq 63_360_000
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'furlongs' do
|
39
|
+
subject { Measurement.parse('8 fur') }
|
40
|
+
|
41
|
+
it 'converts to miles' do
|
42
|
+
subject.convert_to(:mi).quantity.should eq 1
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'converts to chains' do
|
46
|
+
subject.convert_to(:ch).quantity.should eq 80
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'converts to fathoms' do
|
50
|
+
subject.convert_to(:ftm).quantity.should eq 880
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'converts to yards' do
|
54
|
+
subject.convert_to(:yd).quantity.should eq 1_760
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'converts to feet' do
|
58
|
+
subject.convert_to(:ft).quantity.should eq 5_280
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'converts to inches' do
|
62
|
+
subject.convert_to(:in).quantity.should eq 63_360
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'converts to thou' do
|
66
|
+
subject.convert_to(:th).quantity.should eq 63_360_000
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'chains' do
|
71
|
+
subject { Measurement.parse('80 ch') }
|
72
|
+
|
73
|
+
it 'converts to miles' do
|
74
|
+
subject.convert_to(:mi).quantity.should eq 1
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'converts to furlongs' do
|
78
|
+
subject.convert_to(:fur).quantity.should eq 8
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'converts to fathoms' do
|
82
|
+
subject.convert_to(:ftm).quantity.should eq 880
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'converts to yards' do
|
86
|
+
subject.convert_to(:yd).quantity.should eq 1_760
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'converts to feet' do
|
90
|
+
subject.convert_to(:ft).quantity.should eq 5_280
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'converts to inches' do
|
94
|
+
subject.convert_to(:in).quantity.should eq 63_360
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'converts to thou' do
|
98
|
+
subject.convert_to(:th).quantity.should eq 63_360_000
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe 'fathoms' do
|
103
|
+
subject { Measurement.parse('880 ftm') }
|
104
|
+
|
105
|
+
it 'converts to miles' do
|
106
|
+
subject.convert_to(:mi).quantity.should eq 1
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'converts to furlongs' do
|
110
|
+
subject.convert_to(:fur).quantity.should eq 8
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'converts to chains' do
|
114
|
+
subject.convert_to(:ch).quantity.should eq 80
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'converts to yards' do
|
118
|
+
subject.convert_to(:yd).quantity.should eq 1_760
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'converts to feet' do
|
122
|
+
subject.convert_to(:ft).quantity.should eq 5_280
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'converts to inches' do
|
126
|
+
subject.convert_to(:in).quantity.should eq 63_360
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'converts to thou' do
|
130
|
+
subject.convert_to(:th).quantity.should eq 63_360_000
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe 'yards' do
|
135
|
+
subject { Measurement.parse('1760 yd') }
|
136
|
+
|
137
|
+
it 'converts to miles' do
|
138
|
+
subject.convert_to(:mi).quantity.should eq 1
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'converts to furlongs' do
|
142
|
+
subject.convert_to(:fur).quantity.should eq 8
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'converts to chains' do
|
146
|
+
subject.convert_to(:ch).quantity.should eq 80
|
147
|
+
end
|
148
|
+
|
149
|
+
it 'converts to fathoms' do
|
150
|
+
subject.convert_to(:ftm).quantity.should eq 880
|
151
|
+
end
|
152
|
+
|
153
|
+
it 'converts to feet' do
|
154
|
+
subject.convert_to(:ft).quantity.should eq 5_280
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'converts to inches' do
|
158
|
+
subject.convert_to(:in).quantity.should eq 63_360
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'converts to thou' do
|
162
|
+
subject.convert_to(:th).quantity.should eq 63_360_000
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe 'feet' do
|
167
|
+
subject { Measurement.parse('5280 ft') }
|
168
|
+
|
169
|
+
it 'converts to miles' do
|
170
|
+
subject.convert_to(:mi).quantity.should eq 1
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'converts to furlongs' do
|
174
|
+
subject.convert_to(:fur).quantity.should eq 8
|
175
|
+
end
|
176
|
+
|
177
|
+
it 'converts to chains' do
|
178
|
+
subject.convert_to(:ch).quantity.should eq 80
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'converts to fathoms' do
|
182
|
+
subject.convert_to(:ftm).quantity.should eq 880
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'converts to yards' do
|
186
|
+
subject.convert_to(:yd).quantity.should eq 1_760
|
187
|
+
end
|
188
|
+
|
189
|
+
it 'converts to inches' do
|
190
|
+
subject.convert_to(:in).quantity.should eq 63_360
|
191
|
+
end
|
192
|
+
|
193
|
+
it 'converts to thou' do
|
194
|
+
subject.convert_to(:th).quantity.should eq 63_360_000
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
describe 'inches' do
|
199
|
+
subject { Measurement.parse('63360 in') }
|
200
|
+
|
201
|
+
it 'converts to miles' do
|
202
|
+
subject.convert_to(:mi).quantity.should eq 1
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'converts to furlongs' do
|
206
|
+
subject.convert_to(:fur).quantity.should eq 8
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'converts to chains' do
|
210
|
+
subject.convert_to(:ch).quantity.should eq 80
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'converts to fathoms' do
|
214
|
+
subject.convert_to(:ftm).quantity.should eq 880
|
215
|
+
end
|
216
|
+
|
217
|
+
it 'converts to yards' do
|
218
|
+
subject.convert_to(:yd).quantity.should eq 1_760
|
219
|
+
end
|
220
|
+
|
221
|
+
it 'converts to feet' do
|
222
|
+
subject.convert_to(:ft).quantity.should eq 5_280
|
223
|
+
end
|
224
|
+
|
225
|
+
it 'converts to thou' do
|
226
|
+
subject.convert_to(:th).quantity.should eq 63_360_000
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
describe 'thou' do
|
231
|
+
subject { Measurement.parse('63360000 th') }
|
232
|
+
|
233
|
+
it 'converts to miles' do
|
234
|
+
subject.convert_to(:mi).quantity.should eq 1
|
235
|
+
end
|
236
|
+
|
237
|
+
it 'converts to furlongs' do
|
238
|
+
subject.convert_to(:fur).quantity.should eq 8
|
239
|
+
end
|
240
|
+
|
241
|
+
it 'converts to chains' do
|
242
|
+
subject.convert_to(:ch).quantity.should eq 80
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'converts to fathoms' do
|
246
|
+
subject.convert_to(:ftm).quantity.should eq 880
|
247
|
+
end
|
248
|
+
|
249
|
+
it 'converts to yards' do
|
250
|
+
subject.convert_to(:yd).quantity.should eq 1_760
|
251
|
+
end
|
252
|
+
|
253
|
+
it 'converts to feet' do
|
254
|
+
subject.convert_to(:ft).quantity.should eq 5_280
|
255
|
+
end
|
256
|
+
|
257
|
+
it 'converts to inches' do
|
258
|
+
subject.convert_to(:in).quantity.should eq 63_360
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|