measured 0.0.6 → 0.0.7
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 +4 -4
- data/README.md +12 -0
- data/lib/measured/measurable.rb +10 -4
- data/lib/measured/version.rb +1 -1
- data/measured.gemspec +0 -1
- data/shipit.rubygems.yml +1 -0
- data/test/measurable_test.rb +25 -0
- metadata +4 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0395d2b884e1c125cda042c4e47eac239b80e725
|
4
|
+
data.tar.gz: f1452c7f31292107b865be6cd36e50fcef97c36c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 609da0eabc8fca6efe42818b08c158788fa69be23ff56946ddb7beea2ee18a74592cb815d4ede7e8c0d1bacec49038708d73082ca8940da46366509d4d91adb7
|
7
|
+
data.tar.gz: a9a35e7c8edd1d0b5f77ac002dca13d7604b3d24feef01c646ef7b28fcd373a77cb571e4f5e5ede49750436d81bf513a809b76b6751c28701396cc11cd6db14a
|
data/README.md
CHANGED
@@ -48,6 +48,18 @@ Seamlessly handles aliases:
|
|
48
48
|
Measured::Weight.new(12, :oz) == Measured::Weight.new("12", :ounce)
|
49
49
|
```
|
50
50
|
|
51
|
+
Comparison with zero works without the need to specify units, useful for validations:
|
52
|
+
```ruby
|
53
|
+
Measured::Weight.new(0.001, :kg) > 0
|
54
|
+
> true
|
55
|
+
|
56
|
+
Measured::Length.new(-1, :m) < 0
|
57
|
+
> true
|
58
|
+
|
59
|
+
Measured::Weight.new(0, :oz) == 0
|
60
|
+
> true
|
61
|
+
```
|
62
|
+
|
51
63
|
Raises on unknown units:
|
52
64
|
|
53
65
|
```ruby
|
data/lib/measured/measurable.rb
CHANGED
@@ -51,14 +51,20 @@ class Measured::Measurable
|
|
51
51
|
if other.is_a?(self.class)
|
52
52
|
other_converted = other.convert_to(unit)
|
53
53
|
value <=> other_converted.value
|
54
|
+
elsif other == 0
|
55
|
+
other_converted = self.class.new(0, unit)
|
56
|
+
value <=> other_converted.value
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
57
60
|
def ==(other)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
61
|
+
if other.is_a?(self.class)
|
62
|
+
other_converted = other.convert_to(unit)
|
63
|
+
value == other_converted.value
|
64
|
+
elsif other == 0
|
65
|
+
other_converted = self.class.new(0, unit)
|
66
|
+
value == other_converted.value
|
67
|
+
end
|
62
68
|
end
|
63
69
|
|
64
70
|
alias_method :eql?, :==
|
data/lib/measured/version.rb
CHANGED
data/measured.gemspec
CHANGED
@@ -20,7 +20,6 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_runtime_dependency "activesupport", ">= 4.0"
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler", "~> 1.8"
|
24
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
24
|
spec.add_development_dependency "minitest", "~> 5.5.1"
|
26
25
|
spec.add_development_dependency "mocha", "~> 1.1.0"
|
data/shipit.rubygems.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
|
data/test/measurable_test.rb
CHANGED
@@ -136,6 +136,13 @@ class Measured::MeasurableTest < ActiveSupport::TestCase
|
|
136
136
|
assert_equal -1, @magic <=> Magic.new(11, :magic_missile)
|
137
137
|
end
|
138
138
|
|
139
|
+
test "#<=> compares against zero" do
|
140
|
+
assert_equal 1, @magic <=> 0
|
141
|
+
assert_equal 1, @magic <=> BigDecimal.new(0)
|
142
|
+
assert_equal 1, @magic <=> 0.00
|
143
|
+
assert_equal -1, Magic.new(-1, :magic_missile) <=> 0
|
144
|
+
end
|
145
|
+
|
139
146
|
test "#== should be the same if the classes, unit, and amount match" do
|
140
147
|
assert @magic == @magic
|
141
148
|
assert Magic.new(10, :magic_missile) == Magic.new("10", "magic_missile")
|
@@ -147,6 +154,15 @@ class Measured::MeasurableTest < ActiveSupport::TestCase
|
|
147
154
|
assert Magic.new(2, :magic_missile) == Magic.new("1", "ice")
|
148
155
|
end
|
149
156
|
|
157
|
+
test "#== compares against zero" do
|
158
|
+
assert Magic.new(0, :fire) == 0
|
159
|
+
assert Magic.new(0, :magic_missile) == 0
|
160
|
+
assert Magic.new(0, :fire) == BigDecimal.new(0)
|
161
|
+
assert Magic.new(0, :fire) == 0.00
|
162
|
+
refute @magic == 0
|
163
|
+
refute @magic == BigDecimal.new(0)
|
164
|
+
end
|
165
|
+
|
150
166
|
test "#> and #< should compare measurements" do
|
151
167
|
assert Magic.new(10, :magic_missile) < Magic.new(20, :magic_missile)
|
152
168
|
refute Magic.new(10, :magic_missile) > Magic.new(20, :magic_missile)
|
@@ -157,6 +173,15 @@ class Measured::MeasurableTest < ActiveSupport::TestCase
|
|
157
173
|
refute Magic.new(10, :magic_missile) > Magic.new(100, :ice)
|
158
174
|
end
|
159
175
|
|
176
|
+
test "#> and #< should compare against zero" do
|
177
|
+
assert @magic > 0
|
178
|
+
assert @magic > BigDecimal.new(0)
|
179
|
+
assert @magic > 0.00
|
180
|
+
assert Magic.new(-1, :arcane) < 0
|
181
|
+
refute @magic < 0
|
182
|
+
refute Magic.new(-1, :arcane) > 0
|
183
|
+
end
|
184
|
+
|
160
185
|
test "#eql? should be the same if the classes and amount match, and unit is converted" do
|
161
186
|
assert @magic == @magic
|
162
187
|
assert Magic.new(10, :magic_missile) == Magic.new("10", "magic_missile")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: measured
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin McPhillips
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.8'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.8'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,6 +106,7 @@ files:
|
|
120
106
|
- lib/measured/version.rb
|
121
107
|
- measured.gemspec
|
122
108
|
- repodb.yml
|
109
|
+
- shipit.rubygems.yml
|
123
110
|
- test/arithmetic_test.rb
|
124
111
|
- test/conversion_table_test.rb
|
125
112
|
- test/conversion_test.rb
|
@@ -150,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
137
|
version: '0'
|
151
138
|
requirements: []
|
152
139
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.2.
|
140
|
+
rubygems_version: 2.2.3
|
154
141
|
signing_key:
|
155
142
|
specification_version: 4
|
156
143
|
summary: Encapsulate measurements with their units in Ruby
|