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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81c1e2494e3547676ef4d146737363a2fbd34f84
4
- data.tar.gz: 13dc02fd3f8f64a2e3efe86ec6c93d4c3e6530fe
3
+ metadata.gz: 0395d2b884e1c125cda042c4e47eac239b80e725
4
+ data.tar.gz: f1452c7f31292107b865be6cd36e50fcef97c36c
5
5
  SHA512:
6
- metadata.gz: dba3840951fee6ac5bbe8bb42ca8ae4371d722b16acd48ca03f03c06dc68094d66d78b6cd659513bec5a8fa5c11c17048ca5789df09a634c6211bf76f9437050
7
- data.tar.gz: 463f44d4a37facac37d45b1382d91ac176234500a4f1fdcc1bfb3420ee4672e29b014dbe78d6f40b052e118bebffb0745a6d653238d3d33512a7bd50ce19d492
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
@@ -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
- return false unless other.is_a?(self.class)
59
-
60
- other_converted = other.convert_to(unit)
61
- value == other_converted.value
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?, :==
@@ -1,3 +1,3 @@
1
1
  module Measured
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
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"
@@ -0,0 +1 @@
1
+
@@ -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.6
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-13 00:00:00.000000000 Z
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.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