spec/quantity_spec.rb in quantify-3.2.0 vs spec/quantity_spec.rb in quantify-3.2.1

- old
+ new

@@ -2,10 +2,18 @@ require 'quantify' include Quantify describe Quantity do + describe "#initialize" do + specify { Quantity.new(1).should eq(Quantity.new(1,'unity')) } + specify { Quantity.new(nil,nil).should eq(Quantity.new(nil,'unity')) } + specify { Quantity.new(nil,nil).should eq(Quantity.new(nil,'unity')) } + specify { Quantity.new(nil,'unity').should eq(Quantity.new(nil,'unity')) } + specify { Quantity.new(nil).should eq(Quantity.new(nil,'unity')) } + end + it "should create a valid instance with nil values" do quantity = Quantity.new nil, nil quantity.value.should be_nil quantity.unit.should eq(Unit.for('unity')) end @@ -559,33 +567,69 @@ quantity.value.should be_within(0.0000001).of(144) quantity.unit.symbol.should eql "yd²" end context "comparing nil quantities" do - specify "greater than" do - lambda{Quantity.new(nil,nil) > 1.m}.should raise_error - end - specify "greater than or equals" do - lambda{Quantity.new(nil,nil) >= 1.m}.should raise_error - end + context "when comparing with non-nil quantities" do + specify "greater than" do + lambda{Quantity.new(nil,nil) > 1.m}.should raise_error + end - specify "less than" do - lambda{Quantity.new(nil,nil) < 1.m}.should raise_error - end + specify "greater than or equals" do + lambda{Quantity.new(nil,nil) >= 1.m}.should raise_error + end - specify "less than or equals" do - lambda{Quantity.new(nil,nil) <= 1.m}.should raise_error - end + specify "less than" do + lambda{Quantity.new(nil,nil) < 1.m}.should raise_error + end - specify "equals" do - lambda{Quantity.new(nil,nil) == 1.m}.should raise_error + specify "less than or equals" do + lambda{Quantity.new(nil,nil) <= 1.m}.should raise_error + end + + specify "equals" do + lambda{Quantity.new(nil,nil) == 1.m}.should raise_error + end + + specify "between" do + lambda{Quantity.new(nil,nil).between? 1.ft,10.m}.should raise_error NoMethodError + lambda{Quantity.new(nil,nil).between? Quantity.new(nil,nil),Quantity.new(nil,nil)}.should raise_error NoMethodError + end + + specify "range" do + expect{(Quantity.new(nil)..1.kg)}.to raise_error + expect{(1.kg..Quantity.new(nil))}.to raise_error + end end - specify "between" do - lambda{Quantity.new(nil,nil).between? 1.ft,10.m}.should raise_error + context "when comparing with another nil quantity" do + specify "greater than" do + (Quantity.new(nil) > Quantity.new(nil)).should be_false + end + + specify "greater than or equals" do + (Quantity.new(nil) >= Quantity.new(nil)).should be_true + end + + specify "less than" do + (Quantity.new(nil) < Quantity.new(nil)).should be_false + end + + specify "less than or equals" do + (Quantity.new(nil) <= Quantity.new(nil)).should be_true + end + + specify "equals" do + (Quantity.new(nil) == Quantity.new(nil)).should be_true + end + + specify "range" do + (Quantity.new(nil)..Quantity.new(nil)).should eq(Quantity.new(nil,'unity')..Quantity.new(nil, 'unity')) + end end + end it "should be greater than" do (20.ft > 1.m).should be_true end @@ -648,16 +692,15 @@ it "range comparison with non quantity should raise error" do lambda{20.ft === (1.ft..3)}.should raise_error end - specify "a range with nil quantities raises an error" do - lambda{Quantity.new(nil,nil)..Quantity.new(nil,nil)}.should raise_error - lambda{Quantity.new(nil,nil)..20.ft}.should raise_error + specify "a range with one nil quantity raises an error" do + lambda{Quantity.new(nil)..20.ft}.should raise_error end specify "cover? with nil quantities raises an error" do - lambda{(2.ft..20.ft).cover?(Quantity.new(nil,nil))}.should raise_error + lambda{(2.ft..20.ft).cover?(Quantity.new(nil))}.should raise_error end it "should return unit consolidation setting" do Quantity.auto_consolidate_units?.should be_false end