From be4c76e3f600086ea0ad895a8f2b8b080f57d6a6 Mon Sep 17 00:00:00 2001 From: Victoria Date: Tue, 27 Jun 2017 13:55:28 -0400 Subject: [PATCH 1/3] finish tree --- Gemfile.lock | 4 ++++ lib/tree.rb | 31 +++++++++++++++++++++------- spec/tree_spec.rb | 51 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 78 insertions(+), 8 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 90f2f48..8e77bde 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,4 +1,5 @@ GEM + remote: https://rubygems.org/ specs: diff-lcs (1.2.5) rspec (3.1.0) @@ -19,3 +20,6 @@ PLATFORMS DEPENDENCIES rspec + +BUNDLED WITH + 1.15.1 diff --git a/lib/tree.rb b/lib/tree.rb index 6c54019..1f62c55 100644 --- a/lib/tree.rb +++ b/lib/tree.rb @@ -1,38 +1,55 @@ class NoApplesError < StandardError; end -class AppleTree - attr_#fill_in :height, :age, :apples, :alive +class Tree + attr_accessor :height, :age, :apples, :alive def initialize + @height = 0 + @age = 0 + @apples = [] + @alive = true end def age! + @age = age + 1 + @height = height + 1 + @alive = false if @age > 25 + add_apples end def add_apples + apple = 12.times { @apples.push Apple.new("Red", Random.rand(1..6)) } #adds between 1-3 more apples every year, with random diameter end def any_apples? + return @apples.length > 0 end def pick_an_apple! raise NoApplesError, "This tree has no apples" unless self.any_apples? + @apples.pop #to remove it end def dead? + return !@alive end end class Fruit + attr_reader :has_seeds + def initialize - has_seeds = true + @has_seeds = true end end -class Apple < - attr_reader #what should go here +class Apple < Fruit + attr_reader :color, :diameter def initialize(color, diameter) + @color = color + @diameter = diameter + super() end end @@ -61,7 +78,7 @@ def tree_data diameter_sum += apple.diameter end - avg_diameter = # It's up to you to calculate the average diameter for this harvest. + avg_diameter = diameter_sum / basket.size puts "Year #{tree.age} Report" puts "Tree height: #{tree.height} feet" @@ -76,4 +93,4 @@ def tree_data end # Uncomment this line to run the script, but BE SURE to comment it before you try to run your tests! -# tree_data +#tree_data diff --git a/spec/tree_spec.rb b/spec/tree_spec.rb index 99c9184..7083bf6 100644 --- a/spec/tree_spec.rb +++ b/spec/tree_spec.rb @@ -1,14 +1,63 @@ require 'rspec' require 'tree' +tree = Tree.new + describe 'Tree' do it 'should be a Class' do - expect(described_class.is_a? 'Class').to be_true + expect(Tree_class.is_a? 'Class').to be_true + end + + it 'grows one foot' do + tree.age! + expect(tree.height).to eq(1) + end + it 'ages one year' do + expect(tree.age).to eq(1) + end + it 'has no fruit' do + expect(tree.any_apples?).to be false + end + + it 'has apples after 3 years' do + tree.age! + tree.age! + expect(tree.any_apples?).to be true + end + + it 'dies after 16 years' do + (1..13).each{ |idx| tree.age!} + expect(tree.dead?).to be true end end describe 'Fruit' do + it 'is a Class' do + expect(Fruit.is_a? Class).to be true + end end + +apple = Apple.new("Red", 30) + describe 'Apple' do + it 'is a Class' do + expect(Apple.is_a? Class).to be true + end + + it 'is a Fruit' do + expect(Apple < Fruit).to be true + end + + it 'sets a color' do + expect(testApple.color).to eq("Red") + end + + it 'sets a diameter' do + expect(testApple.diameter).to eq(30) + end + + it 'calls super()' do + expect(testApple.has_seeds).to be true + end end From f6e2b04570b5cc45ad8a569f6c2789fc726ef5b0 Mon Sep 17 00:00:00 2001 From: Victoria Date: Thu, 29 Jun 2017 09:22:25 -0400 Subject: [PATCH 2/3] finish tree --- lib/tree.rb | 8 ++++---- spec/tree_spec.rb | 21 ++++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/tree.rb b/lib/tree.rb index 1f62c55..390b156 100644 --- a/lib/tree.rb +++ b/lib/tree.rb @@ -1,7 +1,7 @@ class NoApplesError < StandardError; end class Tree - attr_accessor :height, :age, :apples, :alive + attr_reader :height, :age, :apples, :alive def initialize @height = 0 @@ -18,11 +18,11 @@ def age! end def add_apples - apple = 12.times { @apples.push Apple.new("Red", Random.rand(1..6)) } #adds between 1-3 more apples every year, with random diameter + apple = 12.times { @apples.push Apple.new("Red", Random.rand(1..6)) } #creates 12 Red apples with ramdom diameters each year end def any_apples? - return @apples.length > 0 + @apples.length > 0 end def pick_an_apple! @@ -31,7 +31,7 @@ def pick_an_apple! end def dead? - return !@alive + !@alive end end diff --git a/spec/tree_spec.rb b/spec/tree_spec.rb index 7083bf6..6918bbe 100644 --- a/spec/tree_spec.rb +++ b/spec/tree_spec.rb @@ -5,27 +5,27 @@ describe 'Tree' do it 'should be a Class' do - expect(Tree_class.is_a? 'Class').to be_true + expect(Tree.is_a? 'Class').to be_true end - it 'grows one foot' do + context 'when grows one foot' do tree.age! expect(tree.height).to eq(1) end - it 'ages one year' do + context 'when ages one year' do expect(tree.age).to eq(1) end - it 'has no fruit' do + context 'when has no fruit' do expect(tree.any_apples?).to be false end - it 'has apples after 3 years' do + context 'when has apples after 3 years' do tree.age! tree.age! expect(tree.any_apples?).to be true end - it 'dies after 16 years' do + context 'when dies after 16 years' do (1..13).each{ |idx| tree.age!} expect(tree.dead?).to be true end @@ -37,7 +37,6 @@ end end - apple = Apple.new("Red", 30) describe 'Apple' do @@ -46,18 +45,18 @@ end it 'is a Fruit' do - expect(Apple < Fruit).to be true + expect(Apple < Fruit).to be true # expects to be inheriting from apple if it is a fruit end - it 'sets a color' do + context 'when sets a color' do expect(testApple.color).to eq("Red") end - it 'sets a diameter' do + context 'when sets a diameter' do expect(testApple.diameter).to eq(30) end - it 'calls super()' do + context 'when calls super()' do expect(testApple.has_seeds).to be true end end From 6a6a23f8c61757fd22e318bacbaa385554d019bb Mon Sep 17 00:00:00 2001 From: Victoria Date: Fri, 30 Jun 2017 09:09:48 -0400 Subject: [PATCH 3/3] finish tree --- spec/tree_spec.rb | 59 ++++++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/spec/tree_spec.rb b/spec/tree_spec.rb index 6918bbe..cbb9f79 100644 --- a/spec/tree_spec.rb +++ b/spec/tree_spec.rb @@ -3,45 +3,56 @@ tree = Tree.new -describe 'Tree' do +describe Tree do it 'should be a Class' do - expect(Tree.is_a? 'Class').to be_true + expect(Tree.is_a? Class).to eq true end context 'when grows one foot' do - tree.age! - expect(tree.height).to eq(1) + it "equals 1" do + tree.age! + expect(tree.height).to eq(1) + end end + context 'when ages one year' do - expect(tree.age).to eq(1) + it "equals 1" do + expect(tree.age).to eq(1) + end end + context 'when has no fruit' do - expect(tree.any_apples?).to be false + it "equals true" do + expect(tree.any_apples?).to eq true + end end context 'when has apples after 3 years' do - tree.age! - tree.age! - expect(tree.any_apples?).to be true + it "equals true" do + tree.age! + expect(tree.any_apples?).to be true + end end - context 'when dies after 16 years' do - (1..13).each{ |idx| tree.age!} - expect(tree.dead?).to be true + context 'when dies after 25 years' do + it "equals false" do + (1..13).each{ |idx| tree.age!} + expect(tree.dead?).to be false + end end end -describe 'Fruit' do - it 'is a Class' do - expect(Fruit.is_a? Class).to be true +describe Fruit do + it 'should be a Class' do + expect(Fruit.is_a? Class).to eq true end end apple = Apple.new("Red", 30) -describe 'Apple' do - it 'is a Class' do - expect(Apple.is_a? Class).to be true +describe Apple do + it 'should be a Class' do + expect(Apple.is_a? Class).to eq true end it 'is a Fruit' do @@ -49,14 +60,20 @@ end context 'when sets a color' do - expect(testApple.color).to eq("Red") + it "equals red" do + expect(apple.color).to eq("Red") + end end context 'when sets a diameter' do - expect(testApple.diameter).to eq(30) + it "equals 30" do + expect(apple.diameter).to eq(30) + end end context 'when calls super()' do - expect(testApple.has_seeds).to be true + it "equals true" do + expect(apple.has_seeds).to eq true + end end end