quantify 3.2.0 → 3.2.1
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.
- data/VERSION +1 -1
- data/lib/quantify/quantity.rb +8 -1
- data/quantify.gemspec +1 -1
- data/spec/quantity_spec.rb +63 -20
- metadata +17 -17
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.2.
|
1
|
+
3.2.1
|
data/lib/quantify/quantity.rb
CHANGED
@@ -122,7 +122,7 @@ module Quantify
|
|
122
122
|
# a unit. The unit can be a an instance of Unit::Base or the name, symbol or
|
123
123
|
# JScience label of a known (or derivable through know units and prefixes)
|
124
124
|
# unit
|
125
|
-
def initialize(value, unit)
|
125
|
+
def initialize(value, unit = 'unity')
|
126
126
|
if value
|
127
127
|
@value = value.to_f
|
128
128
|
else
|
@@ -291,6 +291,8 @@ module Quantify
|
|
291
291
|
def <=>(other)
|
292
292
|
raise Exceptions::InvalidArgumentError unless other.is_a? Quantity
|
293
293
|
raise Exceptions::InvalidArgumentError unless other.unit.is_alternative_for?(unit)
|
294
|
+
return 0 if @value.nil? && (other.nil? || other.value.nil?)
|
295
|
+
|
294
296
|
other = other.to @unit
|
295
297
|
@value.to_f <=> other.value.to_f
|
296
298
|
end
|
@@ -300,6 +302,11 @@ module Quantify
|
|
300
302
|
range.cover? self
|
301
303
|
end
|
302
304
|
|
305
|
+
def between?(min, max)
|
306
|
+
raise NoMethodError if @value.nil?
|
307
|
+
super(min,max)
|
308
|
+
end
|
309
|
+
|
303
310
|
protected
|
304
311
|
|
305
312
|
# Quantities must be of the same dimension in order to operate. If they are
|
data/quantify.gemspec
CHANGED
data/spec/quantity_spec.rb
CHANGED
@@ -4,6 +4,14 @@ include Quantify
|
|
4
4
|
|
5
5
|
describe Quantity do
|
6
6
|
|
7
|
+
describe "#initialize" do
|
8
|
+
specify { Quantity.new(1).should eq(Quantity.new(1,'unity')) }
|
9
|
+
specify { Quantity.new(nil,nil).should eq(Quantity.new(nil,'unity')) }
|
10
|
+
specify { Quantity.new(nil,nil).should eq(Quantity.new(nil,'unity')) }
|
11
|
+
specify { Quantity.new(nil,'unity').should eq(Quantity.new(nil,'unity')) }
|
12
|
+
specify { Quantity.new(nil).should eq(Quantity.new(nil,'unity')) }
|
13
|
+
end
|
14
|
+
|
7
15
|
it "should create a valid instance with nil values" do
|
8
16
|
quantity = Quantity.new nil, nil
|
9
17
|
quantity.value.should be_nil
|
@@ -561,29 +569,65 @@ describe Quantity do
|
|
561
569
|
end
|
562
570
|
|
563
571
|
context "comparing nil quantities" do
|
564
|
-
specify "greater than" do
|
565
|
-
lambda{Quantity.new(nil,nil) > 1.m}.should raise_error
|
566
|
-
end
|
567
572
|
|
568
|
-
|
569
|
-
|
570
|
-
|
573
|
+
context "when comparing with non-nil quantities" do
|
574
|
+
specify "greater than" do
|
575
|
+
lambda{Quantity.new(nil,nil) > 1.m}.should raise_error
|
576
|
+
end
|
571
577
|
|
572
|
-
|
573
|
-
|
574
|
-
|
578
|
+
specify "greater than or equals" do
|
579
|
+
lambda{Quantity.new(nil,nil) >= 1.m}.should raise_error
|
580
|
+
end
|
575
581
|
|
576
|
-
|
577
|
-
|
578
|
-
|
582
|
+
specify "less than" do
|
583
|
+
lambda{Quantity.new(nil,nil) < 1.m}.should raise_error
|
584
|
+
end
|
585
|
+
|
586
|
+
specify "less than or equals" do
|
587
|
+
lambda{Quantity.new(nil,nil) <= 1.m}.should raise_error
|
588
|
+
end
|
589
|
+
|
590
|
+
specify "equals" do
|
591
|
+
lambda{Quantity.new(nil,nil) == 1.m}.should raise_error
|
592
|
+
end
|
579
593
|
|
580
|
-
|
581
|
-
|
594
|
+
specify "between" do
|
595
|
+
lambda{Quantity.new(nil,nil).between? 1.ft,10.m}.should raise_error NoMethodError
|
596
|
+
lambda{Quantity.new(nil,nil).between? Quantity.new(nil,nil),Quantity.new(nil,nil)}.should raise_error NoMethodError
|
597
|
+
end
|
598
|
+
|
599
|
+
specify "range" do
|
600
|
+
expect{(Quantity.new(nil)..1.kg)}.to raise_error
|
601
|
+
expect{(1.kg..Quantity.new(nil))}.to raise_error
|
602
|
+
end
|
582
603
|
end
|
583
604
|
|
584
|
-
|
585
|
-
|
605
|
+
context "when comparing with another nil quantity" do
|
606
|
+
specify "greater than" do
|
607
|
+
(Quantity.new(nil) > Quantity.new(nil)).should be_false
|
608
|
+
end
|
609
|
+
|
610
|
+
specify "greater than or equals" do
|
611
|
+
(Quantity.new(nil) >= Quantity.new(nil)).should be_true
|
612
|
+
end
|
613
|
+
|
614
|
+
specify "less than" do
|
615
|
+
(Quantity.new(nil) < Quantity.new(nil)).should be_false
|
616
|
+
end
|
617
|
+
|
618
|
+
specify "less than or equals" do
|
619
|
+
(Quantity.new(nil) <= Quantity.new(nil)).should be_true
|
620
|
+
end
|
621
|
+
|
622
|
+
specify "equals" do
|
623
|
+
(Quantity.new(nil) == Quantity.new(nil)).should be_true
|
624
|
+
end
|
625
|
+
|
626
|
+
specify "range" do
|
627
|
+
(Quantity.new(nil)..Quantity.new(nil)).should eq(Quantity.new(nil,'unity')..Quantity.new(nil, 'unity'))
|
628
|
+
end
|
586
629
|
end
|
630
|
+
|
587
631
|
end
|
588
632
|
|
589
633
|
it "should be greater than" do
|
@@ -650,13 +694,12 @@ describe Quantity do
|
|
650
694
|
lambda{20.ft === (1.ft..3)}.should raise_error
|
651
695
|
end
|
652
696
|
|
653
|
-
specify "a range with nil
|
654
|
-
lambda{Quantity.new(nil
|
655
|
-
lambda{Quantity.new(nil,nil)..20.ft}.should raise_error
|
697
|
+
specify "a range with one nil quantity raises an error" do
|
698
|
+
lambda{Quantity.new(nil)..20.ft}.should raise_error
|
656
699
|
end
|
657
700
|
|
658
701
|
specify "cover? with nil quantities raises an error" do
|
659
|
-
lambda{(2.ft..20.ft).cover?(Quantity.new(nil
|
702
|
+
lambda{(2.ft..20.ft).cover?(Quantity.new(nil))}.should raise_error
|
660
703
|
end
|
661
704
|
|
662
705
|
it "should return unit consolidation setting" do
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quantify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.1
|
5
5
|
segments:
|
6
6
|
- 3
|
7
7
|
- 2
|
8
|
-
-
|
8
|
+
- 1
|
9
9
|
prerelease: false
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
@@ -18,7 +18,7 @@ default_executable: !!null
|
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: activesupport
|
21
|
-
requirement: &
|
21
|
+
requirement: &18752180 !ruby/object:Gem::Requirement
|
22
22
|
none: false
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
@@ -29,10 +29,10 @@ dependencies:
|
|
29
29
|
- 0
|
30
30
|
type: :runtime
|
31
31
|
prerelease: false
|
32
|
-
version_requirements: *
|
32
|
+
version_requirements: *18752180
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: i18n
|
35
|
-
requirement: &
|
35
|
+
requirement: &18751100 !ruby/object:Gem::Requirement
|
36
36
|
none: false
|
37
37
|
requirements:
|
38
38
|
- - ! '>='
|
@@ -42,10 +42,10 @@ dependencies:
|
|
42
42
|
- 0
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
|
-
version_requirements: *
|
45
|
+
version_requirements: *18751100
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: bundler
|
48
|
-
requirement: &
|
48
|
+
requirement: &18745940 !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
51
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
- 0
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *18745940
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: jeweler
|
61
|
-
requirement: &
|
61
|
+
requirement: &18744180 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -70,10 +70,10 @@ dependencies:
|
|
70
70
|
- 4
|
71
71
|
type: :development
|
72
72
|
prerelease: false
|
73
|
-
version_requirements: *
|
73
|
+
version_requirements: *18744180
|
74
74
|
- !ruby/object:Gem::Dependency
|
75
75
|
name: rspec
|
76
|
-
requirement: &
|
76
|
+
requirement: &18743160 !ruby/object:Gem::Requirement
|
77
77
|
none: false
|
78
78
|
requirements:
|
79
79
|
- - ~>
|
@@ -85,10 +85,10 @@ dependencies:
|
|
85
85
|
- 0
|
86
86
|
type: :development
|
87
87
|
prerelease: false
|
88
|
-
version_requirements: *
|
88
|
+
version_requirements: *18743160
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: simplecov
|
91
|
-
requirement: &
|
91
|
+
requirement: &18742040 !ruby/object:Gem::Requirement
|
92
92
|
none: false
|
93
93
|
requirements:
|
94
94
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
- 0
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *18742040
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rdoc
|
104
|
-
requirement: &
|
104
|
+
requirement: &18741200 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -111,7 +111,7 @@ dependencies:
|
|
111
111
|
- 0
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *18741200
|
115
115
|
description: A gem to support physical quantities and unit conversions
|
116
116
|
email: andrew.berkeley.is@googlemail.com
|
117
117
|
executables: []
|
@@ -168,7 +168,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
168
168
|
version: '0'
|
169
169
|
segments:
|
170
170
|
- 0
|
171
|
-
hash:
|
171
|
+
hash: -2814138011086079233
|
172
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
173
|
none: false
|
174
174
|
requirements:
|