From d1d529c8ee9c380c684973571d4b68d5a7395c9d Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:16:36 -0700 Subject: [PATCH 01/18] Add default parameters to constructor and add :name to attr_reader --- lib/vessel.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/vessel.rb b/lib/vessel.rb index 6849edf..c552199 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -1,7 +1,7 @@ class Vessel - attr_reader :volume + attr_reader :name, :volume - def initialize(name, volume) + def initialize(name='FAKE', volume=100) @name = name @volume = volume end From d55aad60808efbcd332c89e3b359bc6057abaef7 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:19:26 -0700 Subject: [PATCH 02/18] Add #empty method --- lib/vessel.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/vessel.rb b/lib/vessel.rb index c552199..63e8faf 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -6,4 +6,8 @@ def initialize(name='FAKE', volume=100) @volume = volume end + def empty? + return true + end + end From e20f79fbe10561b276b246546b32236f57999e7b Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:21:43 -0700 Subject: [PATCH 03/18] Add empty variable to constructor and implement fill method --- lib/vessel.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/vessel.rb b/lib/vessel.rb index 63e8faf..3e5db71 100644 --- a/lib/vessel.rb +++ b/lib/vessel.rb @@ -4,10 +4,15 @@ class Vessel def initialize(name='FAKE', volume=100) @name = name @volume = volume + @empty = true end def empty? - return true + @empty + end + + def fill + @empty = false end end From 92f5a13bedcb8cc9004ac5b3c2781ab8a83c2684 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:22:18 -0700 Subject: [PATCH 04/18] Remove skips --- spec/vessel_spec.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/vessel_spec.rb b/spec/vessel_spec.rb index 3a6c301..f956f42 100644 --- a/spec/vessel_spec.rb +++ b/spec/vessel_spec.rb @@ -9,13 +9,11 @@ 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 From 65e1e23cf4fa1c0a6a20a65665f45e77a0421be0 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:22:59 -0700 Subject: [PATCH 05/18] Add .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b844b14 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +Gemfile.lock From d09140d02609266bc626970a7e03ff53000debb1 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:26:09 -0700 Subject: [PATCH 06/18] Add tests for Item --- spec/item_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spec/item_spec.rb b/spec/item_spec.rb index caeefe4..d9ba119 100644 --- a/spec/item_spec.rb +++ b/spec/item_spec.rb @@ -2,4 +2,18 @@ describe 'An item of food or a beverage' do + let (:item) { Item.new('FAKE', 10) } + + it 'exists' do + item + end + + it 'has a name' do + expect(item.name).to eq('FAKE') + end + + it 'has a volume' do + expect(item.name).to eq('FAKE') + end + end From 8d515578840f1133d0e9d6aac6eed0e93d145fd9 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:28:03 -0700 Subject: [PATCH 07/18] Fix spacing --- spec/item_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/item_spec.rb b/spec/item_spec.rb index d9ba119..9e9ff38 100644 --- a/spec/item_spec.rb +++ b/spec/item_spec.rb @@ -2,7 +2,7 @@ describe 'An item of food or a beverage' do - let (:item) { Item.new('FAKE', 10) } + let(:item) { Item.new('FAKE', 10) } it 'exists' do item From 5beffd702a0bd9ce8eb7639c5c8d2675f01f7792 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:39:47 -0700 Subject: [PATCH 08/18] Add instantiation and attribute tests --- spec/water_reservoir_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index 059a885..f80fe30 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -2,4 +2,18 @@ describe 'A water reservoir' do + let(:reservoir) { WaterReservoir.new(10, 0) } + + it 'exists' do + reservoir + end + + it 'has a capacity' do + expect(reservoir.capacity).to eq(10) + end + + it 'has a current_water_volume' do + expect(reservoir.current_water_volume).to eq(0) + end + end From db9e4f357db2c669e1fc6371622e1a5b6a8ef3ce Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:40:05 -0700 Subject: [PATCH 09/18] Add instantiation and attribute tests --- spec/water_dispenser_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spec/water_dispenser_spec.rb b/spec/water_dispenser_spec.rb index 526e3d9..fd01a18 100644 --- a/spec/water_dispenser_spec.rb +++ b/spec/water_dispenser_spec.rb @@ -1,5 +1,16 @@ require_relative '../lib/water_dispenser' +require_relative '../lib/vessel' describe 'A water dispenser' do + let(:dispenser) { WaterDispenser.new('FAKE') } + + it 'exists' do + dispenser + end + + it 'has a reservoir' do + expect(dispenser.reservoir).to eq('FAKE') + end + end From e79476dcbddfbfb0fad51b8afe61e626cb78e36d Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:47:49 -0700 Subject: [PATCH 10/18] Fix error where internal variables weren't being referenced with @ --- lib/water_reservoir.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/water_reservoir.rb b/lib/water_reservoir.rb index b314707..ee05ad4 100644 --- a/lib/water_reservoir.rb +++ b/lib/water_reservoir.rb @@ -9,15 +9,15 @@ def initialize(capacity = 10, initial_water_volume = 0) end def empty? - current_water_volume == 0 + @current_water_volume == 0 end def fill - current_water_volume = capacity + @current_water_volume = @capacity end def drain(volume) - self.current_water_volume -= volume + @current_water_volume -= volume end end From cd0f4868ff95fba25c442fa12c17de3cfc35c67b Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:47:58 -0700 Subject: [PATCH 11/18] Add emptiness tests --- spec/water_reservoir_spec.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index f80fe30..cee6235 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -16,4 +16,24 @@ expect(reservoir.current_water_volume).to eq(0) end + describe 'emptiness' do + before do + reservoir = WaterReservoir.new(20, 0) + end + + it 'is initially empty' do + expect(reservoir).to be_empty + end + + it 'has a current_water_volume equal to capacity' do + reservoir.fill + expect(reservoir.current_water_volume).to eq(reservoir.capacity) + end + + it 'is no longer empty when we fill it' do + reservoir.fill + expect(reservoir).to_not be_empty + end + end + end From 3681bd8e86000ff5d7bb912823afecc28ed76c15 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:58:20 -0700 Subject: [PATCH 12/18] Fix negative water volume bug --- lib/water_reservoir.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/water_reservoir.rb b/lib/water_reservoir.rb index ee05ad4..c5de9e7 100644 --- a/lib/water_reservoir.rb +++ b/lib/water_reservoir.rb @@ -17,7 +17,11 @@ def fill end def drain(volume) - @current_water_volume -= volume + if volume > @current_water_volume + @current_water_volume = 0 + else + @current_water_volume -= volume + end end end From fd67f889fa03cfdd0a96d2c1a7cb3cb82e67d82f Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:59:26 -0700 Subject: [PATCH 13/18] Fix some spacing and redundant variables --- spec/water_reservoir_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index cee6235..951b79a 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -19,6 +19,7 @@ describe 'emptiness' do before do reservoir = WaterReservoir.new(20, 0) + reservoir.fill end it 'is initially empty' do From 4337634913e73f3bfa5e188ec0565265a31038f2 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 11:59:43 -0700 Subject: [PATCH 14/18] Fix some spacing and redundant variables --- spec/water_reservoir_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index 951b79a..cee6235 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -19,7 +19,6 @@ describe 'emptiness' do before do reservoir = WaterReservoir.new(20, 0) - reservoir.fill end it 'is initially empty' do From e57c05f0ad462eb663ce41c7d12bdda3934a1d21 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 12:06:16 -0700 Subject: [PATCH 15/18] Add test for drain method --- spec/water_dispenser_spec.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/spec/water_dispenser_spec.rb b/spec/water_dispenser_spec.rb index fd01a18..684a97d 100644 --- a/spec/water_dispenser_spec.rb +++ b/spec/water_dispenser_spec.rb @@ -1,5 +1,4 @@ require_relative '../lib/water_dispenser' -require_relative '../lib/vessel' describe 'A water dispenser' do @@ -13,4 +12,15 @@ expect(dispenser.reservoir).to eq('FAKE') end + # describe '#dispense' do + # it 'decreases the reservoir volume' do + # vessel = double() + # allow(vessel).to receive(:volume) { 10 } + # reservoir = double() + # allow(reservoir).to receive(:drain) + # expect(reservoir.drain(vessel)).to eq(reservoir.volume-vessel.volume) + + # end + # end + end From f3eb65e57bc6d96e8ba91f33607d815c485d5a83 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 12:18:40 -0700 Subject: [PATCH 16/18] Add fill vessel capabilities --- lib/water_dispenser.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/water_dispenser.rb b/lib/water_dispenser.rb index 99f00d2..b61f5b2 100644 --- a/lib/water_dispenser.rb +++ b/lib/water_dispenser.rb @@ -7,6 +7,7 @@ def initialize(reservoir) end def dispense(vessel) + vessel.fill reservoir.drain(vessel.volume) end From 63dcb8d01f6c747082cbee4ce527f0c5d8352eb1 Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 12:19:09 -0700 Subject: [PATCH 17/18] Add testing to #drain --- spec/water_reservoir_spec.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spec/water_reservoir_spec.rb b/spec/water_reservoir_spec.rb index cee6235..872385d 100644 --- a/spec/water_reservoir_spec.rb +++ b/spec/water_reservoir_spec.rb @@ -18,7 +18,7 @@ describe 'emptiness' do before do - reservoir = WaterReservoir.new(20, 0) + reservoir = WaterReservoir.new(10, 0) end it 'is initially empty' do @@ -36,4 +36,13 @@ end end + describe '#drain' do + it 'reduces volume of reservoir' do + reservoir = WaterReservoir.new(20, 10) + drain_volume = 10 + remaining_volume = reservoir.current_water_volume - drain_volume + expect(reservoir.drain(drain_volume)).to eq(remaining_volume) + end + end + end From bb08846878141e9e7241ef21f96f70fd0e90d32e Mon Sep 17 00:00:00 2001 From: Nikita Rubocki Date: Thu, 18 Mar 2021 12:19:18 -0700 Subject: [PATCH 18/18] Attempt to add tests for dispenser --- spec/water_dispenser_spec.rb | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/spec/water_dispenser_spec.rb b/spec/water_dispenser_spec.rb index 684a97d..a537fe8 100644 --- a/spec/water_dispenser_spec.rb +++ b/spec/water_dispenser_spec.rb @@ -1,4 +1,5 @@ require_relative '../lib/water_dispenser' +require_relative '../lib/vessel' describe 'A water dispenser' do @@ -12,15 +13,26 @@ expect(dispenser.reservoir).to eq('FAKE') end - # describe '#dispense' do - # it 'decreases the reservoir volume' do - # vessel = double() - # allow(vessel).to receive(:volume) { 10 } - # reservoir = double() - # allow(reservoir).to receive(:drain) - # expect(reservoir.drain(vessel)).to eq(reservoir.volume-vessel.volume) + describe '#dispense' do + let(:vessel) { Vessel.new(volume=10) } - # end - # end + # it 'decreases the reservoir volume' do + # # vessel = double() + # # allow(vessel).to receive(:volume) { 10 } + # reservoir = double() + # allow(reservoir).to receive(:current_water_volume) + # allow(reservoir).to receive(:drain) + # remaining_volume = reservoir.current_water_volume + # expect(reservoir.drain(vessel)).to be < res + # end + + # it 'fills the vessel' do + # dispenser = double() + # allow(dispenser).to receive(:reservoir) {} + # allow(dispenser).to receive(:drain) + # dispenser.drain(vessel) + # expect(vessel).to_not be_empty + # end + end end