measured 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +11 -10
- data/README.md +9 -8
- 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.0.gemfile} +1 -1
- data/gemfiles/activesupport-5.1.gemfile +5 -0
- data/gemfiles/activesupport-6.0.gemfile +5 -0
- data/lib/measured/base.rb +4 -0
- data/lib/measured/cache/json.rb +48 -0
- data/lib/measured/cache/json_writer.rb +8 -0
- data/lib/measured/cache/null.rb +15 -0
- data/lib/measured/conversion_table_builder.rb +23 -12
- data/lib/measured/unit_system.rb +10 -2
- data/lib/measured/unit_system_builder.rb +7 -1
- data/lib/measured/units/length.rb +2 -0
- data/lib/measured/units/volume.rb +3 -1
- data/lib/measured/units/weight.rb +2 -0
- data/lib/measured/version.rb +1 -1
- data/measured.gemspec +1 -1
- data/test/cache/json_test.rb +42 -0
- data/test/cache/json_writer_test.rb +22 -0
- data/test/cache/null_test.rb +19 -0
- data/test/cache_consistency_test.rb +18 -0
- data/test/conversion_table_builder_test.rb +18 -0
- data/test/measurable_test.rb +4 -4
- data/test/support/always_true_cache.rb +13 -0
- data/test/support/subclasses.rb +6 -0
- data/test/test_helper.rb +3 -2
- data/test/unit_system_builder_test.rb +21 -1
- data/test/unit_system_test.rb +14 -0
- metadata +27 -6
@@ -0,0 +1,6 @@
|
|
1
|
+
# Extract the subclasses that exist early on because other classes will get added by tests
|
2
|
+
# later on in execution and in an unpredictable order.
|
3
|
+
class ActiveSupport::TestCase
|
4
|
+
cattr_accessor :measurable_subclasses
|
5
|
+
self.measurable_subclasses = Measured::Measurable.subclasses
|
6
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
+
require "pry" unless ENV["CI"]
|
1
2
|
require "measured"
|
2
3
|
require "minitest/reporters"
|
3
4
|
require "minitest/autorun"
|
4
5
|
require "mocha/setup"
|
5
|
-
require "pry" unless ENV["CI"]
|
6
6
|
|
7
7
|
ActiveSupport.test_order = :random
|
8
8
|
|
9
9
|
Minitest::Reporters.use! [Minitest::Reporters::ProgressReporter.new(color: true)]
|
10
10
|
|
11
|
+
require "support/subclasses"
|
11
12
|
require "support/fake_system"
|
13
|
+
require "support/always_true_cache"
|
12
14
|
|
13
15
|
class ActiveSupport::TestCase
|
14
|
-
|
15
16
|
protected
|
16
17
|
|
17
18
|
def assert_close_bigdecimal exp, act, delta = BigDecimal('0.000001')
|
@@ -54,7 +54,7 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
|
54
54
|
end
|
55
55
|
|
56
56
|
prefixes = Measured::UnitSystemBuilder::SI_PREFIXES.map { |short, _, _| "#{short}ft" }
|
57
|
-
prefixes += %w(in ft)
|
57
|
+
prefixes += %w(in ft)
|
58
58
|
assert_equal prefixes.sort, measurable.unit_names
|
59
59
|
end
|
60
60
|
|
@@ -109,4 +109,24 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
|
|
109
109
|
assert_equal (2240), measurable.unit_system.unit_for!(:long_ton).conversion_amount
|
110
110
|
assert_equal "lb", measurable.unit_system.unit_for!(:long_ton).conversion_unit
|
111
111
|
end
|
112
|
+
|
113
|
+
test "#cache sets no cache by default" do
|
114
|
+
measurable = Measured.build do
|
115
|
+
unit :m
|
116
|
+
unit :km, value: "1000 m"
|
117
|
+
end
|
118
|
+
|
119
|
+
refute_predicate measurable.unit_system, :cached?
|
120
|
+
end
|
121
|
+
|
122
|
+
test "#cache sets the class and args" do
|
123
|
+
measurable = Measured.build do
|
124
|
+
unit :m
|
125
|
+
unit :km, value: "1000 m"
|
126
|
+
|
127
|
+
cache AlwaysTrueCache
|
128
|
+
end
|
129
|
+
|
130
|
+
assert_predicate measurable.unit_system, :cached?
|
131
|
+
end
|
112
132
|
end
|
data/test/unit_system_test.rb
CHANGED
@@ -99,4 +99,18 @@ class Measured::UnitSystemTest < ActiveSupport::TestCase
|
|
99
99
|
test "#convert handles the same unit" do
|
100
100
|
assert_equal 2, @conversion.convert(2, from: @unit_in, to: @unit_in)
|
101
101
|
end
|
102
|
+
|
103
|
+
test "#update_cache calls the builder" do
|
104
|
+
Measured::ConversionTableBuilder.any_instance.expects(:update_cache)
|
105
|
+
@conversion.update_cache
|
106
|
+
end
|
107
|
+
|
108
|
+
test "#cached? calls the builder and is false" do
|
109
|
+
refute_predicate @conversion, :cached?
|
110
|
+
end
|
111
|
+
|
112
|
+
test "#cached? calls the builder and is true" do
|
113
|
+
conversion = Measured::UnitSystem.new([@unit_m, @unit_in, @unit_ft], cache: { class: AlwaysTrueCache })
|
114
|
+
assert_predicate conversion, :cached?
|
115
|
+
end
|
102
116
|
end
|
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.5.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: 2019-05-21 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.0'
|
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.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,11 +110,20 @@ files:
|
|
110
110
|
- LICENSE
|
111
111
|
- README.md
|
112
112
|
- Rakefile
|
113
|
+
- cache/.keep
|
114
|
+
- cache/length.json
|
115
|
+
- cache/volume.json
|
116
|
+
- cache/weight.json
|
113
117
|
- dev.yml
|
114
|
-
- gemfiles/activesupport-
|
118
|
+
- gemfiles/activesupport-5.0.gemfile
|
119
|
+
- gemfiles/activesupport-5.1.gemfile
|
120
|
+
- gemfiles/activesupport-6.0.gemfile
|
115
121
|
- lib/measured.rb
|
116
122
|
- lib/measured/arithmetic.rb
|
117
123
|
- lib/measured/base.rb
|
124
|
+
- lib/measured/cache/json.rb
|
125
|
+
- lib/measured/cache/json_writer.rb
|
126
|
+
- lib/measured/cache/null.rb
|
118
127
|
- lib/measured/conversion_table_builder.rb
|
119
128
|
- lib/measured/measurable.rb
|
120
129
|
- lib/measured/parser.rb
|
@@ -128,10 +137,16 @@ files:
|
|
128
137
|
- measured.gemspec
|
129
138
|
- shipit.rubygems.yml
|
130
139
|
- test/arithmetic_test.rb
|
140
|
+
- test/cache/json_test.rb
|
141
|
+
- test/cache/json_writer_test.rb
|
142
|
+
- test/cache/null_test.rb
|
143
|
+
- test/cache_consistency_test.rb
|
131
144
|
- test/conversion_table_builder_test.rb
|
132
145
|
- test/measurable_test.rb
|
133
146
|
- test/parser_test.rb
|
147
|
+
- test/support/always_true_cache.rb
|
134
148
|
- test/support/fake_system.rb
|
149
|
+
- test/support/subclasses.rb
|
135
150
|
- test/test_helper.rb
|
136
151
|
- test/unit_error_test.rb
|
137
152
|
- test/unit_system_builder_test.rb
|
@@ -160,16 +175,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
175
|
version: '0'
|
161
176
|
requirements: []
|
162
177
|
rubyforge_project:
|
163
|
-
rubygems_version: 2.6
|
178
|
+
rubygems_version: 2.7.6
|
164
179
|
signing_key:
|
165
180
|
specification_version: 4
|
166
181
|
summary: Encapsulate measurements with their units in Ruby
|
167
182
|
test_files:
|
168
183
|
- test/arithmetic_test.rb
|
184
|
+
- test/cache/json_test.rb
|
185
|
+
- test/cache/json_writer_test.rb
|
186
|
+
- test/cache/null_test.rb
|
187
|
+
- test/cache_consistency_test.rb
|
169
188
|
- test/conversion_table_builder_test.rb
|
170
189
|
- test/measurable_test.rb
|
171
190
|
- test/parser_test.rb
|
191
|
+
- test/support/always_true_cache.rb
|
172
192
|
- test/support/fake_system.rb
|
193
|
+
- test/support/subclasses.rb
|
173
194
|
- test/test_helper.rb
|
174
195
|
- test/unit_error_test.rb
|
175
196
|
- test/unit_system_builder_test.rb
|