spec/data/pressure_spec.rb in barometer-0.8.0 vs spec/data/pressure_spec.rb in barometer-0.9.0

- old
+ new

@@ -1,336 +1,52 @@ -require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') +require_relative '../spec_helper' -describe "Pressure" do +module Barometer::Data + describe Pressure do + describe '.initialize' do + it 'sets mb' do + distance = Pressure.new(721.64, nil) + expect( distance.mb ).to eq 721.64 + end - describe "when initialized" do + it 'sets in' do + distance = Pressure.new(nil, 21.31) + expect( distance.in ).to eq 21.31 + end - before(:each) do - @pressure = Data::Pressure.new + it 'defaults to metric' do + distance = Pressure.new(721.64) + expect( distance ).to be_metric + end end - it "defines METRIC_UNITS" do - Data::Pressure.const_defined?("METRIC_UNITS").should be_true - Data::Pressure::METRIC_UNITS.should == "mb" + describe '#in' do + it 'returns known value as in' do + distance = Pressure.new(:imperial, 21) + expect( distance.in ).to eq 21 + end end - it "defines IMPERIAL_UNITS" do - Data::Pressure.const_defined?("IMPERIAL_UNITS").should be_true - Data::Pressure::IMPERIAL_UNITS.should == "in" + describe '#mb' do + it 'returns known value as mb' do + distance = Pressure.new(:metric, 721) + expect( distance.mb ).to eq 721 + end end - it "responds to millibars" do - @pressure.millibars.should be_nil - end + describe '#units' do + context 'when distance is metric' do + it 'returns mb' do + distance = Pressure.new(:metric, 721.0, 21.0) + expect( distance.units ).to eq 'mb' + end + end - it "responds to inches" do - @pressure.inches.should be_nil + context 'when distance is imperial' do + it 'returns in' do + distance = Pressure.new(:imperial, 721.0, 21.0) + expect( distance.units ).to eq 'in' + end + end end - - it "responds to metric_default" do - lambda { @pressure.metric_default = 5 }.should_not raise_error(NotImplementedError) - end - - it "responds to imperial_default" do - lambda { @pressure.imperial_default = 5 }.should_not raise_error(NotImplementedError) - end - - it "responds to nil?" do - @pressure.nil?.should be_true - @pressure.mb = 5 - @pressure.nil?.should be_false - end - end - - describe "conversion" do - - # For all conversions - # 721.64 mb = 21.31 in - before(:each) do - @in = 21.31 - @mb = 721.64 - end - - it "requires a value, that is either Integer or Float" do - Data::Pressure.mb_to_in(nil).should be_nil - Data::Pressure.in_to_mb(nil).should be_nil - - not_float_or_integer = "string" - Data::Pressure.mb_to_in(not_float_or_integer).should be_nil - Data::Pressure.in_to_mb(not_float_or_integer).should be_nil - end - - it "converts MB to IN" do - ((Data::Pressure.mb_to_in(@mb)*100).round/100.0).should == @in - end - - it "converts IN to MB" do - ((Data::Pressure.in_to_mb(@in)*100).round/100.0).should == @mb - end - - end - - describe "updating" do - - before(:each) do - @pressure = Data::Pressure.new - @in = 21.31 - @mb = 721.64 - end - - it "nils IN if new MB converts to a IN that changes more then 1 unit" do - @pressure.inches = (@in + 1.1) - @pressure.update_inches(@mb) - @pressure.inches.should be_nil - end - - it "doesn't update IN if new MB converts to a IN that does not change more then 1 unit" do - @pressure.inches = (@in + 0.9) - @pressure.update_inches(@mb) - @pressure.inches.should == (@in + 0.9) - end - - it "doesn't set IN if not already set" do - @pressure.inches.should be_nil - @pressure.millibars.should be_nil - @pressure.update_inches(@mb) - @pressure.inches.should be_nil - @pressure.millibars.should be_nil - end - - it "nils MB if new IN converts to a MB that changes more then 1 unit" do - @pressure.millibars = (@mb + 1.1) - @pressure.update_millibars(@in) - @pressure.millibars.should be_nil - end - - it "doesn't update MB if new IN converts to a MB that does not change more then 1 unit" do - @pressure.millibars = (@mb + 0.9) - @pressure.update_millibars(@in) - @pressure.millibars.should == (@mb + 0.9) - end - - it "doesn't set MB if not already set" do - @pressure.inches.should be_nil - @pressure.millibars.should be_nil - @pressure.update_millibars(@in) - @pressure.inches.should be_nil - @pressure.millibars.should be_nil - end - - end - - describe "storing" do - - before(:each) do - @pressure = Data::Pressure.new - @in = 21.31 - @mb = 721.64 - end - - it "doesn't update MB if nil value (or equivalent)" do - @pressure.millibars.should be_nil - @pressure.mb = nil - @pressure.millibars.should be_nil - @pressure.mb = "na" - @pressure.millibars.should be_nil - end - - it "stores MB and resets IN" do - @pressure.millibars.should be_nil - @pressure.inches = (@in + 1.1) - @pressure.mb = @mb - @pressure.millibars.should == @mb - @pressure.inches.should be_nil - end - - it "doesn't update IN if nil value (or equivalent)" do - @pressure.inches.should be_nil - @pressure.in = nil - @pressure.inches.should be_nil - @pressure.in = "na" - @pressure.inches.should be_nil - end - - it "stores IN and resets MB" do - @pressure.inches.should be_nil - @pressure.millibars = (@mb + 1.1) - @pressure.in = @in - @pressure.inches.should == @in - @pressure.millibars.should be_nil - end - - end - - describe "retrieving" do - - before(:each) do - @pressure = Data::Pressure.new - @in = 21.31 - @mb = 721.64 - end - - it "returns MB if it exists" do - @pressure.mb = @mb - @pressure.millibars.should == @mb - @pressure.mb(false).should == @mb - end - - it "auto converts from IN if MB is nil and IN exists" do - @pressure.in = @in - @pressure.inches.should == @in - @pressure.millibars.should be_nil - @pressure.mb(false).should == @mb - end - - it "allows a float to be returned for MB" do - mb = 721.12 - @pressure.mb = mb - @pressure.millibars.should == mb - @pressure.mb(true).should == mb.to_i - @pressure.mb(false).should == mb.to_f - end - - it "allows only 2 decimal precision for MB" do - mb = 721.1234 - @pressure.mb = mb - @pressure.millibars.should == mb - @pressure.mb(false).should == 721.12 - end - - it "returns IN if it exists" do - @pressure.in = @in - @pressure.inches.should == @in - @pressure.in(false).should == @in - end - - it "auto converts from MB if IN is nil and MB exists" do - @pressure.mb = @mb - @pressure.millibars.should == @mb - @pressure.inches.should be_nil - @pressure.in(false).should == @in - end - - it "allows a float to be returned for IN" do - inches = 21.12 - @pressure.in = inches - @pressure.inches.should == inches - @pressure.in(true).should == inches.to_i - @pressure.in(false).should == inches.to_f - end - - it "allows only 2 decimal precision for IN" do - inches = 21.1234 - @pressure.in = inches - @pressure.inches.should == inches - @pressure.in(false).should == 21.12 - end - - end - - describe "operators" do - - before(:each) do - @in = 21.31 - @mb = 721.64 - @pressure_low = Data::Pressure.new - @pressure_low.mb = (@mb - 1.0) - @pressure_high = Data::Pressure.new - @pressure_high.mb = (@mb + 1.0) - @pressure = Data::Pressure.new - @pressure.mb = @mb - @pressure_same = Data::Pressure.new - @pressure_same.mb = @mb - end - - it "defines <=>" do - Data::Pressure.method_defined?("<=>").should be_true - (@pressure_low <=> @pressure_high).should == -1 - (@pressure_high <=> @pressure_low).should == 1 - (@pressure <=> @pressure_same).should == 0 - end - - it "defines <" do - Data::Pressure.method_defined?("<").should be_true - @pressure_low.should < @pressure_high - @pressure_high.should_not < @pressure_low - @pressure.should_not < @pressure_same - end - - it "defines >" do - Data::Pressure.method_defined?(">").should be_true - @pressure_low.should_not > @pressure_high - @pressure_high.should > @pressure_low - @pressure.should_not > @pressure_same - end - - it "defines ==" do - Data::Pressure.method_defined?("==").should be_true - @pressure_low.should_not == @pressure_high - @pressure.should == @pressure_same - end - - it "defines <=" do - Data::Pressure.method_defined?("<=").should be_true - @pressure_low.should <= @pressure_high - @pressure_high.should_not <= @pressure_low - @pressure.should <= @pressure_same - end - - it "defines >=" do - Data::Pressure.method_defined?(">=").should be_true - @pressure_low.should_not >= @pressure_high - @pressure_high.should >= @pressure_low - @pressure.should >= @pressure_same - end - - end - - describe "changing units" do - - before(:each) do - @in = 21.31 - @mb = 721.64 - @pressure = Data::Pressure.new - @pressure.mb = @mb - end - - it "returns just the integer value (no units)" do - @pressure.metric?.should be_true - @pressure.to_i.should == @mb.to_i - - @pressure.imperial! - @pressure.metric?.should be_false - @pressure.to_i.should == @in.to_i - end - - it "returns just the float value (no units)" do - @pressure.metric?.should be_true - @pressure.to_f.should == @mb.to_f - - @pressure.imperial! - @pressure.metric?.should be_false - @pressure.to_f.should == @in.to_f - end - - it "returns just the integer value with units" do - @pressure.metric?.should be_true - @pressure.to_s.should == "#{@mb.to_i} #{Data::Pressure::METRIC_UNITS}" - - @pressure.imperial! - @pressure.metric?.should be_false - @pressure.to_s.should == "#{@in.to_i} #{Data::Pressure::IMPERIAL_UNITS}" - end - - it "returns just the units" do - @pressure.metric?.should be_true - @pressure.units.should == Data::Pressure::METRIC_UNITS - - @pressure.imperial! - @pressure.metric?.should be_false - @pressure.units.should == Data::Pressure::IMPERIAL_UNITS - end - - end - end