measured 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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