Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CS362 - Gavin Gutowsky Final - Pull Request #2

Open
wants to merge 21 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5351d8c
bundle install
GavinGutowsky Mar 18, 2021
a22c5de
Add required arguments to class instantiation
GavinGutowsky Mar 18, 2021
1401ecb
Vessel: add name attribute reader
GavinGutowsky Mar 18, 2021
230b6c6
Vessel: empty? implementation
GavinGutowsky Mar 18, 2021
ab17477
Vessel: fixed expectation
GavinGutowsky Mar 18, 2021
1ca6f4a
Vessel: fill implementation and empty refactor to match implementation
GavinGutowsky Mar 18, 2021
50bb5d0
Vessel spec: reversal of expectation and removal of skip of fill test
GavinGutowsky Mar 18, 2021
3a22aaa
Item: instantiation test
GavinGutowsky Mar 18, 2021
5a1309e
Item: let instantiation block for further use
GavinGutowsky Mar 18, 2021
af52b75
Item: attribute name validation
GavinGutowsky Mar 18, 2021
2ed7d51
Item: attribute volume validation
GavinGutowsky Mar 18, 2021
5f482ed
WaterDispenser: instantiation test
GavinGutowsky Mar 18, 2021
7e7f673
WaterDispenser: attribute reservoir validation
GavinGutowsky Mar 18, 2021
3a6d548
WaterDispenser: remove dependency on vessel
GavinGutowsky Mar 18, 2021
23d20f5
WaterDispenser: correct reservoir spelling
GavinGutowsky Mar 18, 2021
b95f1fb
WaterReservoir: unit test implementations
GavinGutowsky Mar 18, 2021
0bcc632
Revert refactor
GavinGutowsky Mar 18, 2021
e6a30d0
Vessel: Refactor for filling
GavinGutowsky Mar 18, 2021
ea4282e
WaterDispenser: refactor for vessel filling
GavinGutowsky Mar 18, 2021
ca007d7
WaterReservoir: Add check for overdrain and test check
GavinGutowsky Mar 18, 2021
cd0ac0a
WaterDispenser: implementation of dispense test
GavinGutowsky Mar 18, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -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
15 changes: 12 additions & 3 deletions lib/vessel.rb
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions lib/water_dispenser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ def initialize(reservoir)

def dispense(vessel)
reservoir.drain(vessel.volume)
vessel.fill
end

end
6 changes: 4 additions & 2 deletions lib/water_reservoir.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 13 additions & 0 deletions spec/item_spec.rb
Original file line number Diff line number Diff line change
@@ -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
9 changes: 4 additions & 5 deletions spec/vessel_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
18 changes: 18 additions & 0 deletions spec/water_dispenser_spec.rb
Original file line number Diff line number Diff line change
@@ -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
32 changes: 32 additions & 0 deletions spec/water_reservoir_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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