measured 2.4.0 → 2.7.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 +5 -5
- data/.github/workflows/ci.yml +31 -0
- data/CHANGELOG.md +32 -0
- data/README.md +12 -10
- data/Rakefile +18 -0
- data/cache/.keep +0 -0
- data/cache/length.json +2553 -0
- data/cache/volume.json +4163 -0
- data/cache/weight.json +3195 -0
- data/dev.yml +1 -1
- data/gemfiles/{activesupport-4.2.gemfile → activesupport-5.2.gemfile} +1 -1
- data/gemfiles/activesupport-6.0.gemfile +5 -0
- data/gemfiles/activesupport-6.1.gemfile +5 -0
- data/lib/measured.rb +1 -0
- data/lib/measured/arithmetic.rb +1 -0
- data/lib/measured/base.rb +11 -5
- data/lib/measured/cache/json.rb +49 -0
- data/lib/measured/cache/json_writer.rb +9 -0
- data/lib/measured/cache/null.rb +16 -0
- data/lib/measured/conversion_table_builder.rb +42 -12
- data/lib/measured/cycle_detected.rb +11 -0
- data/lib/measured/measurable.rb +18 -21
- data/lib/measured/missing_conversion_path.rb +12 -0
- data/lib/measured/parser.rb +2 -1
- data/lib/measured/unit.rb +16 -26
- data/lib/measured/unit_already_added.rb +11 -0
- data/lib/measured/unit_error.rb +4 -0
- data/lib/measured/unit_system.rb +26 -22
- data/lib/measured/unit_system_builder.rb +11 -4
- data/lib/measured/units/length.rb +3 -0
- data/lib/measured/units/volume.rb +4 -1
- data/lib/measured/units/weight.rb +3 -0
- data/lib/measured/version.rb +2 -1
- data/measured.gemspec +10 -2
- data/test/arithmetic_test.rb +1 -0
- data/test/cache/json_test.rb +43 -0
- data/test/cache/json_writer_test.rb +23 -0
- data/test/cache/null_test.rb +20 -0
- data/test/cache_consistency_test.rb +19 -0
- data/test/conversion_table_builder_test.rb +29 -0
- data/test/measurable_test.rb +5 -5
- data/test/parser_test.rb +1 -0
- data/test/support/always_true_cache.rb +14 -0
- data/test/support/fake_system.rb +1 -0
- data/test/support/subclasses.rb +7 -0
- data/test/test_helper.rb +5 -3
- data/test/unit_error_test.rb +1 -0
- data/test/unit_system_builder_test.rb +49 -3
- data/test/unit_system_test.rb +15 -0
- data/test/unit_test.rb +1 -0
- data/test/units/length_test.rb +5 -4
- data/test/units/volume_test.rb +6 -5
- data/test/units/weight_test.rb +1 -0
- metadata +39 -13
- data/.travis.yml +0 -20
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "test_helper"
|
2
3
|
|
3
4
|
class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
@@ -11,15 +12,17 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
|
11
12
|
end
|
12
13
|
|
13
14
|
test "#unit cannot add duplicate unit names" do
|
14
|
-
assert_raises Measured::
|
15
|
+
error = assert_raises Measured::UnitAlreadyAdded do
|
15
16
|
Measured.build do
|
16
17
|
unit :m
|
17
18
|
unit :in, aliases: [:inch], value: "0.0254 m"
|
18
19
|
unit :in, aliases: [:thing], value: "123 m"
|
19
20
|
end
|
20
21
|
end
|
22
|
+
assert_equal("in", error.unit_name)
|
23
|
+
assert_equal("Unit in has already been added.", error.message)
|
21
24
|
|
22
|
-
assert_raises Measured::
|
25
|
+
assert_raises Measured::UnitAlreadyAdded do
|
23
26
|
Measured.build do
|
24
27
|
unit :m
|
25
28
|
unit :in, aliases: [:inch], value: "0.0254 m"
|
@@ -28,6 +31,19 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
|
28
31
|
end
|
29
32
|
end
|
30
33
|
|
34
|
+
test "#unit raises when cannot find conversion path" do
|
35
|
+
error = assert_raises Measured::MissingConversionPath do
|
36
|
+
Measured.build do
|
37
|
+
unit :m
|
38
|
+
unit :in, value: "0.0254 m"
|
39
|
+
unit :pallets, value: "5 cases"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
assert_equal("pallets", error.from)
|
43
|
+
assert_equal("m", error.to)
|
44
|
+
assert_equal("Cannot find conversion path from pallets to m.", error.message)
|
45
|
+
end
|
46
|
+
|
31
47
|
test "#unit is case sensitive" do
|
32
48
|
measurable = Measured.build do
|
33
49
|
unit :normal
|
@@ -38,6 +54,16 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
|
38
54
|
assert_equal 'BOLD', measurable.unit_system.unit_for!(:BOLD).name
|
39
55
|
end
|
40
56
|
|
57
|
+
test "#unit traverses aliases" do
|
58
|
+
measurable = Measured.build do
|
59
|
+
unit :piece, aliases: [:pieces]
|
60
|
+
unit :dozen, aliases: [:dz], value: "12 pieces"
|
61
|
+
end
|
62
|
+
|
63
|
+
assert_equal 12, measurable.unit_system.units.last.conversion_amount
|
64
|
+
assert_equal "piece", measurable.unit_system.units.last.conversion_unit
|
65
|
+
end
|
66
|
+
|
41
67
|
test "#si_unit adds 21 new units" do
|
42
68
|
measurable = Measured.build do
|
43
69
|
unit :ft
|
@@ -54,7 +80,7 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
|
54
80
|
end
|
55
81
|
|
56
82
|
prefixes = Measured::UnitSystemBuilder::SI_PREFIXES.map { |short, _, _| "#{short}ft" }
|
57
|
-
prefixes += %w(in ft)
|
83
|
+
prefixes += %w(in ft)
|
58
84
|
assert_equal prefixes.sort, measurable.unit_names
|
59
85
|
end
|
60
86
|
|
@@ -109,4 +135,24 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
|
109
135
|
assert_equal (2240), measurable.unit_system.unit_for!(:long_ton).conversion_amount
|
110
136
|
assert_equal "lb", measurable.unit_system.unit_for!(:long_ton).conversion_unit
|
111
137
|
end
|
138
|
+
|
139
|
+
test "#cache sets no cache by default" do
|
140
|
+
measurable = Measured.build do
|
141
|
+
unit :m
|
142
|
+
unit :km, value: "1000 m"
|
143
|
+
end
|
144
|
+
|
145
|
+
refute_predicate measurable.unit_system, :cached?
|
146
|
+
end
|
147
|
+
|
148
|
+
test "#cache sets the class and args" do
|
149
|
+
measurable = Measured.build do
|
150
|
+
unit :m
|
151
|
+
unit :km, value: "1000 m"
|
152
|
+
|
153
|
+
cache AlwaysTrueCache
|
154
|
+
end
|
155
|
+
|
156
|
+
assert_predicate measurable.unit_system, :cached?
|
157
|
+
end
|
112
158
|
end
|
data/test/unit_system_test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "test_helper"
|
2
3
|
|
3
4
|
class Measured::UnitSystemTest < ActiveSupport::TestCase
|
@@ -99,4 +100,18 @@ class Measured::UnitSystemTest < ActiveSupport::TestCase
|
|
99
100
|
test "#convert handles the same unit" do
|
100
101
|
assert_equal 2, @conversion.convert(2, from: @unit_in, to: @unit_in)
|
101
102
|
end
|
103
|
+
|
104
|
+
test "#update_cache calls the builder" do
|
105
|
+
Measured::ConversionTableBuilder.any_instance.expects(:update_cache)
|
106
|
+
@conversion.update_cache
|
107
|
+
end
|
108
|
+
|
109
|
+
test "#cached? calls the builder and is false" do
|
110
|
+
refute_predicate @conversion, :cached?
|
111
|
+
end
|
112
|
+
|
113
|
+
test "#cached? calls the builder and is true" do
|
114
|
+
conversion = Measured::UnitSystem.new([@unit_m, @unit_in, @unit_ft], cache: { class: AlwaysTrueCache })
|
115
|
+
assert_predicate conversion, :cached?
|
116
|
+
end
|
102
117
|
end
|
data/test/unit_test.rb
CHANGED
data/test/units/length_test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "test_helper"
|
2
3
|
|
3
4
|
class Measured::LengthTest < ActiveSupport::TestCase
|
@@ -142,7 +143,7 @@ class Measured::LengthTest < ActiveSupport::TestCase
|
|
142
143
|
end
|
143
144
|
|
144
145
|
test ".convert_to from km to mi" do
|
145
|
-
assert_conversion Measured::Length, "2000 km", "0.1242742384475E4 mi"
|
146
|
+
assert_conversion Measured::Length, "2000 km", "0.1242742384475E4 mi"
|
146
147
|
end
|
147
148
|
|
148
149
|
test ".convert_to from km to mm" do
|
@@ -150,7 +151,7 @@ class Measured::LengthTest < ActiveSupport::TestCase
|
|
150
151
|
end
|
151
152
|
|
152
153
|
test ".convert_to from km to yd" do
|
153
|
-
assert_conversion Measured::Length, "2000 km", "0.218722659667542E7 yd"
|
154
|
+
assert_conversion Measured::Length, "2000 km", "0.218722659667542E7 yd"
|
154
155
|
end
|
155
156
|
|
156
157
|
test ".convert_to from m to cm" do
|
@@ -206,7 +207,7 @@ class Measured::LengthTest < ActiveSupport::TestCase
|
|
206
207
|
end
|
207
208
|
|
208
209
|
test ".convert_to from mi to mi" do
|
209
|
-
assert_exact_conversion Measured::Length, "2000 mi", "2000 mi"
|
210
|
+
assert_exact_conversion Measured::Length, "2000 mi", "2000 mi"
|
210
211
|
end
|
211
212
|
|
212
213
|
test ".convert_to from mi to mm" do
|
@@ -214,7 +215,7 @@ class Measured::LengthTest < ActiveSupport::TestCase
|
|
214
215
|
end
|
215
216
|
|
216
217
|
test ".convert_to from mi to yd" do
|
217
|
-
assert_exact_conversion Measured::Length, "2000 mi", "3520000 yd"
|
218
|
+
assert_exact_conversion Measured::Length, "2000 mi", "3520000 yd"
|
218
219
|
end
|
219
220
|
|
220
221
|
test ".convert_to from mm to cm" do
|
data/test/units/volume_test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "test_helper"
|
2
3
|
|
3
4
|
class Measured::VolumeTest < ActiveSupport::TestCase
|
@@ -68,7 +69,7 @@ class Measured::VolumeTest < ActiveSupport::TestCase
|
|
68
69
|
test ".unit_names should be the list of base unit names" do
|
69
70
|
expected_units = %w(l m3 ft3 in3 gal us_gal qt us_qt pt us_pt oz us_oz)
|
70
71
|
expected_units += Measured::UnitSystemBuilder::SI_PREFIXES.map { |short, _, _| "#{short}l" }
|
71
|
-
assert_equal expected_units.sort, Measured::Volume.unit_names
|
72
|
+
assert_equal expected_units.sort, Measured::Volume.unit_names
|
72
73
|
end
|
73
74
|
|
74
75
|
test ".name" do
|
@@ -95,7 +96,7 @@ class Measured::VolumeTest < ActiveSupport::TestCase
|
|
95
96
|
test ".convert_to from gal to gal" do
|
96
97
|
assert_conversion Measured::Volume, "2000 gal", "2000 gal"
|
97
98
|
end
|
98
|
-
|
99
|
+
|
99
100
|
test ".convert_to from us_gal to us_gal" do
|
100
101
|
assert_conversion Measured::Volume, "2000 us_gal", "2000 us_gal"
|
101
102
|
end
|
@@ -123,7 +124,7 @@ class Measured::VolumeTest < ActiveSupport::TestCase
|
|
123
124
|
test ".convert_to from us_oz to us_oz" do
|
124
125
|
assert_conversion Measured::Volume, "2000 us_oz", "2000 us_oz"
|
125
126
|
end
|
126
|
-
|
127
|
+
|
127
128
|
test ".convert_to from ml to m3" do
|
128
129
|
assert_conversion Measured::Volume, "2000 ml", "0.002 m3"
|
129
130
|
end
|
@@ -303,7 +304,7 @@ class Measured::VolumeTest < ActiveSupport::TestCase
|
|
303
304
|
test ".convert_to from gal to us_oz" do
|
304
305
|
assert_conversion Measured::Volume, "2 gal", "307.4431809292 us_oz"
|
305
306
|
end
|
306
|
-
|
307
|
+
|
307
308
|
test ".convert_to from us_gal to qt" do
|
308
309
|
assert_conversion Measured::Volume, "2 us_gal", "6.661393477 qt"
|
309
310
|
end
|
@@ -387,4 +388,4 @@ class Measured::VolumeTest < ActiveSupport::TestCase
|
|
387
388
|
test ".convert_to from oz to us_oz" do
|
388
389
|
assert_conversion Measured::Volume, "2 oz", "1.9215207864 us_oz"
|
389
390
|
end
|
390
|
-
end
|
391
|
+
end
|
data/test/units/weight_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: measured
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin McPhillips
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-05-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '5.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
28
|
+
version: '5.2'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,16 +72,16 @@ dependencies:
|
|
72
72
|
name: mocha
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- - "
|
75
|
+
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 1.
|
77
|
+
version: 1.4.0
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- - "
|
82
|
+
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 1.
|
84
|
+
version: 1.4.0
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: pry
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,21 +104,35 @@ executables: []
|
|
104
104
|
extensions: []
|
105
105
|
extra_rdoc_files: []
|
106
106
|
files:
|
107
|
+
- ".github/workflows/ci.yml"
|
107
108
|
- ".gitignore"
|
108
|
-
-
|
109
|
+
- CHANGELOG.md
|
109
110
|
- Gemfile
|
110
111
|
- LICENSE
|
111
112
|
- README.md
|
112
113
|
- Rakefile
|
114
|
+
- cache/.keep
|
115
|
+
- cache/length.json
|
116
|
+
- cache/volume.json
|
117
|
+
- cache/weight.json
|
113
118
|
- dev.yml
|
114
|
-
- gemfiles/activesupport-
|
119
|
+
- gemfiles/activesupport-5.2.gemfile
|
120
|
+
- gemfiles/activesupport-6.0.gemfile
|
121
|
+
- gemfiles/activesupport-6.1.gemfile
|
115
122
|
- lib/measured.rb
|
116
123
|
- lib/measured/arithmetic.rb
|
117
124
|
- lib/measured/base.rb
|
125
|
+
- lib/measured/cache/json.rb
|
126
|
+
- lib/measured/cache/json_writer.rb
|
127
|
+
- lib/measured/cache/null.rb
|
118
128
|
- lib/measured/conversion_table_builder.rb
|
129
|
+
- lib/measured/cycle_detected.rb
|
119
130
|
- lib/measured/measurable.rb
|
131
|
+
- lib/measured/missing_conversion_path.rb
|
120
132
|
- lib/measured/parser.rb
|
121
133
|
- lib/measured/unit.rb
|
134
|
+
- lib/measured/unit_already_added.rb
|
135
|
+
- lib/measured/unit_error.rb
|
122
136
|
- lib/measured/unit_system.rb
|
123
137
|
- lib/measured/unit_system_builder.rb
|
124
138
|
- lib/measured/units/length.rb
|
@@ -128,10 +142,16 @@ files:
|
|
128
142
|
- measured.gemspec
|
129
143
|
- shipit.rubygems.yml
|
130
144
|
- test/arithmetic_test.rb
|
145
|
+
- test/cache/json_test.rb
|
146
|
+
- test/cache/json_writer_test.rb
|
147
|
+
- test/cache/null_test.rb
|
148
|
+
- test/cache_consistency_test.rb
|
131
149
|
- test/conversion_table_builder_test.rb
|
132
150
|
- test/measurable_test.rb
|
133
151
|
- test/parser_test.rb
|
152
|
+
- test/support/always_true_cache.rb
|
134
153
|
- test/support/fake_system.rb
|
154
|
+
- test/support/subclasses.rb
|
135
155
|
- test/test_helper.rb
|
136
156
|
- test/unit_error_test.rb
|
137
157
|
- test/unit_system_builder_test.rb
|
@@ -143,7 +163,8 @@ files:
|
|
143
163
|
homepage: https://github.com/Shopify/measured
|
144
164
|
licenses:
|
145
165
|
- MIT
|
146
|
-
metadata:
|
166
|
+
metadata:
|
167
|
+
allowed_push_host: https://rubygems.org
|
147
168
|
post_install_message:
|
148
169
|
rdoc_options: []
|
149
170
|
require_paths:
|
@@ -159,17 +180,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
180
|
- !ruby/object:Gem::Version
|
160
181
|
version: '0'
|
161
182
|
requirements: []
|
162
|
-
|
163
|
-
rubygems_version: 2.6.14
|
183
|
+
rubygems_version: 3.0.3
|
164
184
|
signing_key:
|
165
185
|
specification_version: 4
|
166
186
|
summary: Encapsulate measurements with their units in Ruby
|
167
187
|
test_files:
|
168
188
|
- test/arithmetic_test.rb
|
189
|
+
- test/cache/json_test.rb
|
190
|
+
- test/cache/json_writer_test.rb
|
191
|
+
- test/cache/null_test.rb
|
192
|
+
- test/cache_consistency_test.rb
|
169
193
|
- test/conversion_table_builder_test.rb
|
170
194
|
- test/measurable_test.rb
|
171
195
|
- test/parser_test.rb
|
196
|
+
- test/support/always_true_cache.rb
|
172
197
|
- test/support/fake_system.rb
|
198
|
+
- test/support/subclasses.rb
|
173
199
|
- test/test_helper.rb
|
174
200
|
- test/unit_error_test.rb
|
175
201
|
- test/unit_system_builder_test.rb
|
data/.travis.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
sudo: false
|
3
|
-
cache: bundler
|
4
|
-
rvm:
|
5
|
-
- 2.1.8
|
6
|
-
- 2.2.4
|
7
|
-
- 2.3.1
|
8
|
-
- 2.4.0
|
9
|
-
- 2.5.0
|
10
|
-
gemfile:
|
11
|
-
- Gemfile
|
12
|
-
- gemfiles/activesupport-4.2.gemfile
|
13
|
-
before_script:
|
14
|
-
- gem update --system
|
15
|
-
matrix:
|
16
|
-
exclude:
|
17
|
-
- gemfile: Gemfile
|
18
|
-
rvm: 2.1.8
|
19
|
-
- gemfile: gemfiles/activesupport-4.2.gemfile
|
20
|
-
rvm: 2.4.0
|