diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..1618586 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,26 @@ +GEM + remote: https://rubygems.org/ + specs: + diff-lcs (1.4.4) + rspec (3.10.0) + rspec-core (~> 3.10.0) + rspec-expectations (~> 3.10.0) + rspec-mocks (~> 3.10.0) + rspec-core (3.10.1) + rspec-support (~> 3.10.0) + rspec-expectations (3.10.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.10.0) + rspec-mocks (3.10.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.10.0) + rspec-support (3.10.2) + +PLATFORMS + x86-mingw32 + +DEPENDENCIES + rspec + +BUNDLED WITH + 2.2.6 diff --git a/lib/vessel.rb b/lib/vessel.rb index 6849edf..c7c9fc5 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -1,9 +1,18 @@ class Vessel - attr_reader :volume + attr_reader :name, :volume, :capacity - def initialize(name, volume) + def initialize(name, capacity) @name = name - @volume = volume + @capacity = capacity + @volume = 0 + end + + def empty? + volume == 0 + end + + def fill + @volume = capacity end end diff --git a/lib/water_dispenser.rb b/lib/water_dispenser.rb index 99f00d2..4b96017 100644 --- a/lib/water_dispenser.rb +++ b/lib/water_dispenser.rb @@ -8,6 +8,7 @@ def initialize(reservoir) def dispense(vessel) reservoir.drain(vessel.volume) + vessel.fill end end diff --git a/lib/water_reservoir.rb b/lib/water_reservoir.rb index b314707..02649f9 100644 --- a/lib/water_reservoir.rb +++ b/lib/water_reservoir.rb @@ -13,11 +13,13 @@ def empty? end def fill - current_water_volume = capacity + @current_water_volume = capacity end def drain(volume) - self.current_water_volume -= volume + if volume <= self.current_water_volume + self.current_water_volume -= volume + end end end diff --git a/spec/item_spec.rb b/spec/item_spec.rb index caeefe4..5ad41a6 100644 --- a/spec/item_spec.rb +++ b/spec/item_spec.rb @@ -1,5 +1,18 @@ require_relative '../lib/item' describe 'An item of food or a beverage' do + let(:item) { Item.new('Fake', 100) } + + it 'exists' do + item + end + + it 'has a name' do + expect(item).to respond_to(:name) + end + + it 'has a volume' do + expect(item).to respond_to(:volume) + end end diff --git a/spec/vessel_spec.rb b/spec/vessel_spec.rb index 3a6c301..59e03ad 100644 --- a/spec/vessel_spec.rb +++ b/spec/vessel_spec.rb @@ -2,20 +2,19 @@ describe 'A vessel for holding liquid' do - it 'has a name and volume' do - vessel = Vessel.new + it 'has a name, capacity, and volume' do + vessel = Vessel.new('FAKE', 100) expect(vessel.name).to eq('FAKE') - expect(vessel.volume).to eq(100) + expect(vessel.capacity).to eq(100) + expect(vessel.volume).to eq(0) end it 'is initially empty' do - skip vessel = Vessel.new('FAKE', 100) expect(vessel).to be_empty end it 'is no longer empty when we fill it' do - skip vessel = Vessel.new('FAKE', 100) vessel.fill expect(vessel).to_not be_empty diff --git a/spec/water_dispenser_spec.rb b/spec/water_dispenser_spec.rb index 526e3d9..e0c3043 100644 --- a/spec/water_dispenser_spec.rb +++ b/spec/water_dispenser_spec.rb @@ -1,5 +1,23 @@ require_relative '../lib/water_dispenser' describe 'A water dispenser' do + + + it 'exists' do + WaterDispenser.new('Fake') + end + + it 'has a reservoir' do + dispenser = WaterDispenser.new('Fake') + expect(dispenser.reservoir).to eq('Fake') + end + + it 'dispenses vessel volume' do + vessel = Vessel.new('Fake', 2) + reservoir = WaterReservoir.new() + dispenser = WaterDispenser.new(reservoir) + dispenser.dispense(vessel) + expect(vessel).to_not be_empty + end end diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index 059a885..d344383 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -2,4 +2,36 @@ describe 'A water reservoir' do + it 'exists' do + WaterReservoir.new() + end + + it 'has capacity' do + reservoir = WaterReservoir.new() + expect(reservoir).to respond_to(:capacity) + end + + it 'is initially empty' do + reservoir = WaterReservoir.new() + expect(reservoir).to be_empty + end + + it 'is no longer empty when we fill it' do + reservoir = WaterReservoir.new(100, 0) + reservoir.fill + expect(reservoir).to_not be_empty + end + + it 'drains volume entered' do + reservoir = WaterReservoir.new(0, 100) + reservoir.drain(100) + expect(reservoir).to be_empty + end + + it 'does not drain more than available' do + reservoir = WaterReservoir.new(0, 10) + reservoir.drain(11) + expect(reservoir).to_not be_empty + end + end