From 075bca377653d6359930f2179e668f44995eea21 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:15:10 -0700 Subject: [PATCH 01/14] Fixed vessel implementation - added defaults for parameters, added name to attr_reader. Step 1 complete. --- lib/vessel.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/vessel.rb b/lib/vessel.rb index 6849edf..4a04292 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -1,7 +1,7 @@ class Vessel - attr_reader :volume + attr_reader :volume, :name - def initialize(name, volume) + def initialize(name = 'FAKE', volume = 100) @name = name @volume = volume end From 85c8a0fdb8bcaca750c5c5d5ed57e67ea2c423f0 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:17:18 -0700 Subject: [PATCH 02/14] Implemented empty in vessel --- lib/vessel.rb | 5 +++++ spec/vessel_spec.rb | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/vessel.rb b/lib/vessel.rb index 4a04292..be4f1e7 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -4,6 +4,11 @@ class Vessel def initialize(name = 'FAKE', volume = 100) @name = name @volume = volume + @empty = true + end + + def empty? + @empty end end diff --git a/spec/vessel_spec.rb b/spec/vessel_spec.rb index 3a6c301..107d96b 100644 --- a/spec/vessel_spec.rb +++ b/spec/vessel_spec.rb @@ -9,7 +9,6 @@ end it 'is initially empty' do - skip vessel = Vessel.new('FAKE', 100) expect(vessel).to be_empty end From b9fbc07ef7da8c9f96022574dfa1c99a177cc0b8 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:17:44 -0700 Subject: [PATCH 03/14] Implemented fill in vessel --- lib/vessel.rb | 4 ++++ spec/vessel_spec.rb | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/vessel.rb b/lib/vessel.rb index be4f1e7..f2b32a6 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -11,4 +11,8 @@ def empty? @empty end + def fill + @empty = false + end + end diff --git a/spec/vessel_spec.rb b/spec/vessel_spec.rb index 107d96b..f956f42 100644 --- a/spec/vessel_spec.rb +++ b/spec/vessel_spec.rb @@ -14,7 +14,6 @@ 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 From b2c1d6ab91e3b072a353826558a7fd7263ab7165 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:20:37 -0700 Subject: [PATCH 04/14] Characterization tests for item --- spec/item_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spec/item_spec.rb b/spec/item_spec.rb index caeefe4..52dc615 100644 --- a/spec/item_spec.rb +++ b/spec/item_spec.rb @@ -1,5 +1,15 @@ require_relative '../lib/item' describe 'An item of food or a beverage' do + name = 'FAKE' + volume = 100 + let(:item) { Item.new(name, volume) } + it 'has a name' do + expect(item.name).to eq(name) + end + + it 'has a volume' do + expect(item.volume).to eq(volume) + end end From 5c7cbff881b918c4c101fb077e952cb6ef5afb03 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:37:58 -0700 Subject: [PATCH 05/14] Testing water dispenser. --- spec/water_dispenser_spec.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/spec/water_dispenser_spec.rb b/spec/water_dispenser_spec.rb index 526e3d9..eff6659 100644 --- a/spec/water_dispenser_spec.rb +++ b/spec/water_dispenser_spec.rb @@ -1,5 +1,20 @@ require_relative '../lib/water_dispenser' describe 'A water dispenser' do + + it 'has a reservoir' do + reservior = double + dispenser = WaterDispenser.new(reservior) + expect(dispenser.reservoir).to eq(reservior) + end + + it 'completely empties a reservior' do + reservior = double('WaterReservior') + vessel = double('Vessel') + allow(vessel).to receive('volume').and_return(100) + allow(reservior).to receive('drain').and_return(0) + dispenser = WaterDispenser.new(reservior) + expect(dispenser.dispense(vessel)).to eq(0) + end end From 87f1b71d11f8b0e65d64b5599efaa74d46de2e06 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:40:10 -0700 Subject: [PATCH 06/14] characterization tests for water reservior --- spec/water_reservoir_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index 059a885..e692d7e 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -1,5 +1,16 @@ require_relative '../lib/water_reservoir' describe 'A water reservoir' do + capacity = 15 + initial_water_volume = 0 + let(:reservoir) { WaterReservoir.new(capacity, initial_water_volume) } + + it 'has a capacity' do + expect(reservoir.capacity).to eq(capacity) + end + + it 'has an initial volume' do + expect(reservoir.current_water_volume).to eq(initial_water_volume) + end end From 6208076f21ab5af22fbf7f5dfa5181cc51423c7b Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:44:55 -0700 Subject: [PATCH 07/14] Fixed water resevoir to properly update instance data --- lib/water_reservoir.rb | 2 +- spec/water_reservoir_spec.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/water_reservoir.rb b/lib/water_reservoir.rb index b314707..d83cec7 100644 --- a/lib/water_reservoir.rb +++ b/lib/water_reservoir.rb @@ -13,7 +13,7 @@ def empty? end def fill - current_water_volume = capacity + @current_water_volume = capacity end def drain(volume) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index e692d7e..4381d52 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -12,5 +12,20 @@ it 'has an initial volume' do expect(reservoir.current_water_volume).to eq(initial_water_volume) end + + it 'knows if the reservoir is not empty' do + reservoir.current_water_volume = 10 + expect(reservoir.empty?).to be_falsey + end + + it 'knows if the reservoir is empty' do + reservoir.current_water_volume = 0 + expect(reservoir.empty?).to be_truthy + end + + it 'fills the reservoir to a given capacity' do + reservoir.fill + expect(reservoir.current_water_volume).to eq(reservoir.capacity) + end end From be5ab3e7ae68a85fa626c8f5f5c29e7648c61acb Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:45:53 -0700 Subject: [PATCH 08/14] Reservoir under test --- spec/water_reservoir_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index 4381d52..5fd891a 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -28,4 +28,11 @@ expect(reservoir.current_water_volume).to eq(reservoir.capacity) end + it 'drains the reservoir by a given capacity' do + volume = 5 + reservoir.fill + reservoir.drain(volume) + expect(reservoir.current_water_volume).to eq(capacity - volume) + end + end From 4b60b1afd531396c90db13af062274c37ae60cba Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:48:10 -0700 Subject: [PATCH 09/14] Characterization and power tests for freezer --- lib/freezer.rb | 2 +- spec/freezer_spec.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/freezer.rb b/lib/freezer.rb index 200b5fa..7b97bfc 100644 --- a/lib/freezer.rb +++ b/lib/freezer.rb @@ -2,7 +2,7 @@ class Freezer ROOM_TEMPERATURE = 70 - attr_reader :capacity, :temperature + attr_reader :capacity, :temperature, :power def initialize(capacity = 100) @capacity = capacity diff --git a/spec/freezer_spec.rb b/spec/freezer_spec.rb index a8039e0..9f0db84 100644 --- a/spec/freezer_spec.rb +++ b/spec/freezer_spec.rb @@ -1,5 +1,19 @@ require_relative '../lib/freezer' describe 'A freezer' do + let(:freezer) { Freezer.new } + it 'has a default capacity of 100' do + expect(freezer.capacity).to eq(100) + end + + it 'can turn on the power' do + freezer.turn_on + expect(freezer.power).to eq(:on) + end + + it 'can turn off the power' do + freezer.turn_off + expect(freezer.power).to eq(:off) + end end From 030383e12fd400f032c253a955b3a8b5abd731fa Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:51:55 -0700 Subject: [PATCH 10/14] More freezer tests --- spec/freezer_spec.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/spec/freezer_spec.rb b/spec/freezer_spec.rb index 9f0db84..07b66d6 100644 --- a/spec/freezer_spec.rb +++ b/spec/freezer_spec.rb @@ -16,4 +16,20 @@ freezer.turn_off expect(freezer.power).to eq(:off) end + + it 'can add an item to the freezer' do + item = double + allow(item).to receive('volume').and_return(5) + freezer.add(item) + expect(freezer.remaining_capacity).to_not eq(freezer.capacity) + end + + it 'knows the remaining capacity of the freezer' do + expect(freezer.remaining_capacity).to eq(freezer.capacity) + end + + it 'can set the temperature of the freezer' do + freezer.set_level(5) + expect(freezer.temperature).to eq(70 - 5 * 10) + end end From d2e7fdbadef62cae2c31f004040df77bfb53cfee Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 11:53:21 -0700 Subject: [PATCH 11/14] Chiller tests --- lib/chiller.rb | 2 +- spec/chiller_spec.rb | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/chiller.rb b/lib/chiller.rb index d9ca6bb..8e912f3 100644 --- a/lib/chiller.rb +++ b/lib/chiller.rb @@ -2,7 +2,7 @@ class Chiller ROOM_TEMPERATURE = 70 - attr_reader :capacity, :temperature + attr_reader :capacity, :temperature, :power def initialize(capacity = 100) @capacity = capacity diff --git a/spec/chiller_spec.rb b/spec/chiller_spec.rb index 952a9b0..db9477a 100644 --- a/spec/chiller_spec.rb +++ b/spec/chiller_spec.rb @@ -1,5 +1,36 @@ require_relative '../lib/chiller' describe 'A chiller' do + let(:chiller) { Chiller.new } + + it 'has a default capacity of 100' do + expect(chiller.capacity).to eq(100) + end + + it 'can turn on the power' do + chiller.turn_on + expect(chiller.power).to eq(:on) + end + + it 'can turn off the power' do + chiller.turn_off + expect(chiller.power).to eq(:off) + end + + it 'can add an item to the chiller' do + item = double + allow(item).to receive('volume').and_return(5) + chiller.add(item) + expect(chiller.remaining_capacity).to_not eq(chiller.capacity) + end + + it 'knows the remaining capacity of the chiller' do + expect(chiller.remaining_capacity).to eq(chiller.capacity) + end + + it 'can set the temperature of the chiller' do + chiller.set_level(5) + expect(chiller.temperature).to eq(70 - 5 * 5) + end end From 23ead1a6c5eeb669dcd3f5fc1808623878753732 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 12:01:55 -0700 Subject: [PATCH 12/14] Characterization test for fridge --- spec/refrigerator_spec.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spec/refrigerator_spec.rb b/spec/refrigerator_spec.rb index b20ffb5..c499467 100644 --- a/spec/refrigerator_spec.rb +++ b/spec/refrigerator_spec.rb @@ -1,5 +1,26 @@ require_relative '../lib/refrigerator' describe 'A refrigerator' do + before do + @chiller = instance_double('Chiller') + @freezer = instance_double('Freezer') + @water_dispenser = instance_double('WaterDispenser') + @water_reservoir = instance_double('WaterReservoir') + @item = double + allow(@item).to receive('volume').and_return(5) + end + let(:fridge) { Refrigerator.new(@chiller, @freezer, @water_dispenser, @water_reservoir)} + + it 'exists' do + expect(fridge.chiller).to eq(@chiller) + expect(fridge.freezer).to eq(@freezer) + expect(fridge.water_dispenser).to eq(@water_dispenser) + expect(fridge.water_reservoir).to eq(@water_reservoir) + end + + it 'can chill an item' do + # fridge.chill(@item) + # expect(remaining_capacity).to_not eq() + end end From e89a337d080026d7ad062be244dd1007dc571682 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 12:04:27 -0700 Subject: [PATCH 13/14] Negative check for water resevoir draining --- lib/water_reservoir.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/water_reservoir.rb b/lib/water_reservoir.rb index d83cec7..dfc9565 100644 --- a/lib/water_reservoir.rb +++ b/lib/water_reservoir.rb @@ -17,6 +17,7 @@ def fill end def drain(volume) + return 0 if self.current_water_volume < volume self.current_water_volume -= volume end From a58e64a3936cd429a35ae309451360d27b4adcb2 Mon Sep 17 00:00:00 2001 From: Aidan-B1409 Date: Thu, 18 Mar 2021 12:11:08 -0700 Subject: [PATCH 14/14] Fill capabilities for vessel --- lib/vessel.rb | 9 +++++---- lib/water_dispenser.rb | 3 ++- spec/vessel_spec.rb | 6 +++--- spec/water_dispenser_spec.rb | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/vessel.rb b/lib/vessel.rb index f2b32a6..b48643f 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -4,15 +4,16 @@ class Vessel def initialize(name = 'FAKE', volume = 100) @name = name @volume = volume - @empty = true + @current_filling = 0 end def empty? - @empty + @current_filling end - def fill - @empty = false + def fill(vol = current_filling) + @current_filling = @volume if @current_filling + vol > @volume + @current_filling += vol end end diff --git a/lib/water_dispenser.rb b/lib/water_dispenser.rb index 99f00d2..5c66862 100644 --- a/lib/water_dispenser.rb +++ b/lib/water_dispenser.rb @@ -7,7 +7,8 @@ def initialize(reservoir) end def dispense(vessel) - reservoir.drain(vessel.volume) + vol = reservoir.drain(vessel.volume) + vessel.fill(vol) end end diff --git a/spec/vessel_spec.rb b/spec/vessel_spec.rb index f956f42..8f7323a 100644 --- a/spec/vessel_spec.rb +++ b/spec/vessel_spec.rb @@ -10,12 +10,12 @@ it 'is initially empty' do vessel = Vessel.new('FAKE', 100) - expect(vessel).to be_empty + expect(vessel.empty?).to be_truthy end it 'is no longer empty when we fill it' do vessel = Vessel.new('FAKE', 100) - vessel.fill - expect(vessel).to_not be_empty + vessel.fill(5) + expect(vessel.empty?).to_not be_falsey end end diff --git a/spec/water_dispenser_spec.rb b/spec/water_dispenser_spec.rb index eff6659..483bb93 100644 --- a/spec/water_dispenser_spec.rb +++ b/spec/water_dispenser_spec.rb @@ -12,6 +12,7 @@ reservior = double('WaterReservior') vessel = double('Vessel') allow(vessel).to receive('volume').and_return(100) + allow(vessel).to receive('fill').and_return(0) allow(reservior).to receive('drain').and_return(0) dispenser = WaterDispenser.new(reservior) expect(dispenser.dispense(vessel)).to eq(0)