diff --git a/pom.xml b/pom.xml
index 69a3b878..747602e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,32 @@
com.zipcodewilmington
froilans-farm
1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
+
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
\ No newline at end of file
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Botanist.java b/src/main/java/com/zipcodewilmington/froilansfarm/Botanist.java
new file mode 100644
index 00000000..0620f731
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Botanist.java
@@ -0,0 +1,10 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.Food.Crop;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+
+public interface Botanist {
+
+ void plant(Crop crop, CropRow cropRow);
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Eater.java b/src/main/java/com/zipcodewilmington/froilansfarm/Eater.java
new file mode 100644
index 00000000..c89071f0
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Eater.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+public interface Eater < T extends Edible > {
+ void eat(T edible);
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Edible.java b/src/main/java/com/zipcodewilmington/froilansfarm/Edible.java
new file mode 100644
index 00000000..ac82f7ad
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Edible.java
@@ -0,0 +1,5 @@
+package com.zipcodewilmington.froilansfarm;
+
+public interface Edible {
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Farm.java b/src/main/java/com/zipcodewilmington/froilansfarm/Farm.java
new file mode 100644
index 00000000..442822fc
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Farm.java
@@ -0,0 +1,115 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.Food.CarrotFlower;
+import com.zipcodewilmington.froilansfarm.Food.CornStalk;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+import com.zipcodewilmington.froilansfarm.Mammal.*;
+import com.zipcodewilmington.froilansfarm.Structure.ChickenCoop;
+import com.zipcodewilmington.froilansfarm.Structure.FarmHouse;
+import com.zipcodewilmington.froilansfarm.Structure.Pantry;
+import com.zipcodewilmington.froilansfarm.Structure.Stable;
+import com.zipcodewilmington.froilansfarm.Vehicles.Aircraft;
+import com.zipcodewilmington.froilansfarm.Vehicles.CropDuster;
+import com.zipcodewilmington.froilansfarm.Vehicles.Tractor;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class Farm {
+ private Shelter farmhouse = new FarmHouse();
+ private List> stables = Arrays.asList(
+ new Stable(),
+ new Stable(),
+ new Stable());
+ private List> chickenCoops = Arrays.asList(
+ new ChickenCoop(),
+ new ChickenCoop(),
+ new ChickenCoop());
+ private Field field = new Field();
+ private CropDuster cropDuster = new CropDuster();
+ private Tractor tractor = new Tractor();
+ private Tractor johnDeer = new Tractor();
+ private Pantry pantry;
+
+ public Farm(){
+ populateFarmHouse();
+ populateAllChickenCoops();
+ populateAllStables();
+ populateField();
+ this.pantry = new Pantry();
+ }
+
+ public Shelter getFarmhouse() {
+ return farmhouse;
+ }
+
+ public List> getStables() {
+ return stables;
+ }
+
+ public List> getChickenCoops() {
+ return chickenCoops;
+ }
+
+ public Field getField(){
+ return field;
+ }
+
+ public CropDuster getCropDuster() {
+ return cropDuster;
+ }
+
+ public Tractor getTractor() {
+ return tractor;
+ }
+
+ public Tractor getJohnDeer() {
+ return johnDeer;
+ }
+
+ private void populateAllStables(){
+ Arrays
+ .asList("Party Skips Frank Greta".split(" "))
+ .forEach(name -> stables.get(0).add(new Horse(name)));
+ Arrays
+ .asList("Yorgle Spoon Fork".split(" "))
+ .forEach(name -> stables.get(1).add(new Horse(name)));
+ Arrays
+ .asList("Harry Milo Hoovey".split(" "))
+ .forEach(name -> stables.get(2).add(new Horse(name)));
+ }
+
+ private void populateAllChickenCoops(){
+ Arrays
+ .asList("Felipe", "Oscar", "Marvey", "Lorraine", "Sally", "Lil peep")
+ .forEach(name ->chickenCoops.get(0).add(new Chicken(name)));
+ Arrays
+ .asList("Eggetha Christie Dr. Bawk Chicklette Mz. Cluck Chicolate".split(""))
+ .forEach(name -> chickenCoops.get(1).add(new Chicken(name)));
+ Arrays
+ .asList("Harry Meghen Amantha Christephanie Henrietta Eggward".split(" "))
+ .forEach(name -> chickenCoops.get(2).add(new Chicken(name)));
+ }
+
+ private void populateField(){
+ Arrays
+ .asList(new CornStalk(),new TomatoPlant(), new CarrotFlower(), new CornStalk(), new TomatoPlant())
+ .forEach(crop -> {
+ CropRow row = new CropRow();
+ row.plantCrop(crop);
+ field.add(row);
+ });
+ }
+
+ public void populateFarmHouse(){
+ Froilanda msFroid = Froilanda.getInstance();
+ Froilan mrFroid = Froilan.getInstance();
+ farmhouse.add(msFroid);
+ farmhouse.add(mrFroid);
+ }
+
+ public Pantry getPantry() {
+ return pantry;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Field.java b/src/main/java/com/zipcodewilmington/froilansfarm/Field.java
new file mode 100644
index 00000000..d0e912ce
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Field.java
@@ -0,0 +1,19 @@
+package com.zipcodewilmington.froilansfarm;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Field {
+
+ private List myField = new ArrayList<>();
+
+
+ public void add(CropRow row){
+ myField.add(row);
+ }
+
+ public List getMyField() {
+ return myField;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/Carrot.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Carrot.java
new file mode 100644
index 00000000..af57f801
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Carrot.java
@@ -0,0 +1,8 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+public class Carrot implements Edible {
+
+ public Carrot() {}
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/CarrotFlower.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/CarrotFlower.java
new file mode 100644
index 00000000..641ae675
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/CarrotFlower.java
@@ -0,0 +1,20 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+public class CarrotFlower extends Crop{
+
+ public CarrotFlower(Integer id){
+ super(id);
+ }
+
+ public CarrotFlower(){
+ }
+
+ @Override
+ public Carrot yield () {
+ if(this.checkFertilized() && !this.checkHarvested()){ // does check harvested have to be false in order to harvest th corn?
+ this.setHarvested(true);
+ return new Carrot();
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/CornStalk.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/CornStalk.java
new file mode 100644
index 00000000..f950a279
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/CornStalk.java
@@ -0,0 +1,21 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+public class CornStalk extends Crop {
+
+ public CornStalk(Integer id){
+ super(id);
+ }
+
+ public CornStalk(){
+ }
+
+ @Override
+ public EarCorn yield () {
+ if(this.checkFertilized() && !this.checkHarvested()){ // does check harvested have to be false in order to harvest th corn?
+ this.setHarvested(true);
+ return new EarCorn();
+ }
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/Crop.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Crop.java
new file mode 100644
index 00000000..be77d15e
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Crop.java
@@ -0,0 +1,45 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+public abstract class Crop implements Produce {
+ private Boolean fertilized;
+ private Boolean isHarvested;
+ private Integer id;
+
+ public Crop(Integer id) {
+ this.fertilized = false;
+ this.isHarvested = false;
+ this.id = id;
+ }
+
+ public Crop() {
+ this.fertilized = false;
+ this.isHarvested = false;
+ this.id = null;
+ }
+
+
+ public void fertilize(){
+ this.fertilized = true;
+ }
+
+ @Override
+ abstract public Edible yield();
+
+ public Boolean checkFertilized() {
+ return fertilized;
+ }
+
+ public Boolean checkHarvested() {
+ return isHarvested;
+ }
+
+ public void setHarvested(Boolean harvested) {
+ isHarvested = harvested;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/CropRow.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/CropRow.java
new file mode 100644
index 00000000..fddbb10e
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/CropRow.java
@@ -0,0 +1,48 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CropRow {
+ private List cropList;
+
+ public CropRow() {
+ cropList = new ArrayList<>();
+ }
+
+ public void plantCrop(Crop crop) {
+ this.cropList.add(crop);
+ }
+
+ public Integer getNumberOfCrops() {
+ return cropList.size();
+ }
+
+ public Crop getCropById(Integer id) {
+ Crop result = null;
+ for (Crop crop : cropList) {
+ result = id == crop.getId() ? crop : null;
+ }
+ return result;
+ }
+
+
+ public void fertilizeRow() {
+ cropList.forEach(Crop::fertilize);
+ }
+
+ public ArrayList harvestRow() {
+ ArrayList harvest = new ArrayList<>();
+ cropList.forEach(crop -> {
+ harvest.add(crop.yield());
+ crop.setHarvested(true);
+ });
+ return harvest;
+ }
+
+ public List getCropList() {
+ return cropList;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/EarCorn.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/EarCorn.java
new file mode 100644
index 00000000..f4d6d050
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/EarCorn.java
@@ -0,0 +1,12 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+public class EarCorn implements Edible {
+
+ public EarCorn() {
+ }
+
+
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/Egg.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Egg.java
new file mode 100644
index 00000000..bde67efa
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Egg.java
@@ -0,0 +1,20 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+public class Egg implements Edible {
+
+ private boolean isFertilized;
+
+ public Egg() {
+ isFertilized = false;
+ }
+
+ public boolean isItFertilized() {
+ return isFertilized;
+ }
+
+ public void setIsFertilized(boolean fertilize) {
+ this.isFertilized = fertilize;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/Produce.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Produce.java
new file mode 100644
index 00000000..c2423d62
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Produce.java
@@ -0,0 +1,8 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+public interface Produce {
+ Boolean isFertilized = null;
+ Edible yield();
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/Tomato.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Tomato.java
new file mode 100644
index 00000000..46822591
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/Tomato.java
@@ -0,0 +1,10 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+
+public class Tomato implements Edible {
+
+ public Tomato() {
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Food/TomatoPlant.java b/src/main/java/com/zipcodewilmington/froilansfarm/Food/TomatoPlant.java
new file mode 100644
index 00000000..7961dcb4
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/TomatoPlant.java
@@ -0,0 +1,23 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import com.zipcodewilmington.froilansfarm.Food.Crop;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+
+public class TomatoPlant extends Crop {
+
+ public TomatoPlant(Integer id) {
+ super(id);
+ }
+
+ public TomatoPlant() {
+ }
+
+ @Override
+ public Tomato yield() {
+ if(this.checkFertilized() && !this.checkHarvested()){
+ this.setHarvested(true);
+ return new Tomato();
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java b/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java
index fd743ffc..21cef2cc 100644
--- a/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java
@@ -1,8 +1,28 @@
package com.zipcodewilmington.froilansfarm;
+import com.zipcodewilmington.froilansfarm.Mammal.Animal;
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+
/**
* Created by leon on 2/26/18.
*/
-public class MainApplication {
+public class MainApplication{
+
+ public static void main(String[] args) {
+ run();
+ }
+
+ public static void run() {
+ Person person1 = new Person();
+ System.out.println(person1.makeNoise());
+ Animal chicken1 = new Chicken();
+ System.out.println(chicken1.makeNoise());
+ Person farmer1 = new Farmer();
+ System.out.println(farmer1.makeNoise());
+
+ }
+
}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Animal.java b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Animal.java
new file mode 100644
index 00000000..8cfce7f1
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Animal.java
@@ -0,0 +1,54 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+import com.zipcodewilmington.froilansfarm.Eater;
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.NoiseMaker;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public abstract class Animal implements Eater, NoiseMaker {
+ private String name;
+ public List meals = new ArrayList<>();
+
+ public Animal() {
+ name = "";
+ }
+
+ public void eat(List edibles) {
+ for (T edible : edibles) {
+ eat(edible);
+ }
+ }
+
+
+ public void eat(T edible){
+ getMealList().add(edible);
+ }
+
+ public void eat(T... edible) {
+ eat(Arrays.asList(edible));
+ }
+
+ //public void eat(T edible) { meals.add(edible); }
+
+ public List getMealList() { return meals; }
+
+ public String makeNoise() {
+ return null;
+ }
+
+ public Animal(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Chicken.java b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Chicken.java
new file mode 100644
index 00000000..ff0817e2
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Chicken.java
@@ -0,0 +1,36 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.Egg;
+import com.zipcodewilmington.froilansfarm.Food.Produce;
+
+
+public class Chicken extends Animal implements Edible, Produce {
+ private Boolean isFertilized;
+
+ public Chicken(String name) {
+ super(name);
+ this.meals = meals;
+ }
+
+ public Chicken() { }
+
+ @Override
+ public String makeNoise() {
+ return "Cluck Cluck";
+ }
+
+ public void fertilize(){
+ this.isFertilized = true;
+ }
+
+ @Override
+ public Egg yield() {
+ if (isFertilized){
+ return new Egg();
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Farmer.java b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Farmer.java
new file mode 100644
index 00000000..a587e9b8
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Farmer.java
@@ -0,0 +1,45 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+import com.zipcodewilmington.froilansfarm.Botanist;
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.Crop;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.Produce;
+import com.zipcodewilmington.froilansfarm.Rideable;
+import com.zipcodewilmington.froilansfarm.Rider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Farmer extends Person implements Rider {
+
+ private Rideable isRiding = null;
+
+
+ public Farmer(String name) {
+ super(name);
+ }
+
+ public Farmer() {
+ super("Froilan");
+ }
+
+
+ @Override
+ public String makeNoise(){
+ return "Howdy";
+ }
+
+ @Override
+ public void mount(Rideable rideable) {
+ this.isRiding = rideable;
+ }
+
+ @Override
+ public void dismount(Rideable rideable) {
+ this.isRiding = null;
+ }
+
+ public Rideable getIsRiding() { return isRiding; }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Froilan.java b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Froilan.java
new file mode 100644
index 00000000..27afb962
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Froilan.java
@@ -0,0 +1,26 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+import com.zipcodewilmington.froilansfarm.Botanist;
+import com.zipcodewilmington.froilansfarm.Field;
+import com.zipcodewilmington.froilansfarm.Food.*;
+
+public class Froilan extends Farmer implements Botanist {
+ private static final Froilan froilan = new Froilan();
+
+ public static Froilan getInstance() { return froilan; }
+
+ public Froilan() { super("Froilan"); }
+
+
+ public void plant(Crop crop, CropRow cropRow) {
+ cropRow.plantCrop(crop);
+ }
+
+ public void plantRows(Field field) {
+ this.plant(new CornStalk(), field.getMyField().get(0));
+ this.plant(new TomatoPlant(), field.getMyField().get(1));
+ this.plant(new CarrotFlower(), field.getMyField().get(2));
+ this.plant(new CornStalk(), field.getMyField().get(3));
+ this.plant(new TomatoPlant(), field.getMyField().get(4));
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Froilanda.java b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Froilanda.java
new file mode 100644
index 00000000..c44e195e
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Froilanda.java
@@ -0,0 +1,35 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Food.Egg;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+import com.zipcodewilmington.froilansfarm.Pilot;
+import com.zipcodewilmington.froilansfarm.Rideable;
+import com.zipcodewilmington.froilansfarm.Rider;
+import com.zipcodewilmington.froilansfarm.Vehicles.CropDuster;
+import com.zipcodewilmington.froilansfarm.Vehicles.Vehicle;
+
+public class Froilanda extends Farmer implements Pilot {
+ private static final Froilanda froilanda = new Froilanda();
+
+ public static Froilanda getInstance(){
+ return froilanda;
+ }
+
+ private Froilanda() {
+ super("Froilanda");
+ }
+//this is a singleton
+
+ public void eatBreakfast(EarCorn earCorn, Tomato tomato, Egg egg){
+ }
+
+
+ @Override
+ public void fly(Farm farm) {
+ if(getIsRiding() instanceof CropDuster){
+ ((CropDuster>) getIsRiding()).operate(farm);
+ }
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Horse.java b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Horse.java
new file mode 100644
index 00000000..c27cfbd0
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Horse.java
@@ -0,0 +1,29 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+//Horse can only eat Earcorn right now
+// < Parameter type goes in here, "extends" - limits what the parameter type can be >
+
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Rideable;
+import com.zipcodewilmington.froilansfarm.Rider;
+
+public class Horse extends Animal implements Rideable {
+
+ private Farmer rider;
+
+ public Horse(String name) {
+ super(name);
+ }
+
+ public Horse() {}
+
+ @Override
+ public String makeNoise(){
+ return "Neigh";
+ }
+
+ @Override
+ public void ride(Farmer rider) {
+ this.rider = rider;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Person.java b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Person.java
new file mode 100644
index 00000000..aa157b68
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Person.java
@@ -0,0 +1,60 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Eater;
+import com.zipcodewilmington.froilansfarm.NoiseMaker;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class Person implements Eater, NoiseMaker {
+
+ private String name;
+ public List meals = new ArrayList<>();
+
+ public Person(String name) {
+ this.name = name;
+ }
+
+ public Person() {
+ name = "";
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void eat(List edibles) {
+ for (T edible : edibles) {
+ eat(edible);
+ }
+ }
+
+
+ @Override
+ public void eat(T edible){
+ getMealList().add(edible);
+ }
+
+ public void eat(T... edible) {
+ eat(Arrays.asList(edible));
+ }
+
+
+
+ public List getMealList() {
+ return meals;
+ }
+
+ @Override
+ public String makeNoise() {
+ return "Hello";
+ }
+
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/NoiseMaker.java b/src/main/java/com/zipcodewilmington/froilansfarm/NoiseMaker.java
new file mode 100644
index 00000000..32c142d1
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/NoiseMaker.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm;
+
+public interface NoiseMaker {
+ default String makeNoise() {
+ return "Ahhhhhhh";
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Pilot.java b/src/main/java/com/zipcodewilmington/froilansfarm/Pilot.java
new file mode 100644
index 00000000..1e7dab73
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Pilot.java
@@ -0,0 +1,9 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+
+public interface Pilot {
+
+ public void fly(Farm farm);
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Rideable.java b/src/main/java/com/zipcodewilmington/froilansfarm/Rideable.java
new file mode 100644
index 00000000..351d9af1
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Rideable.java
@@ -0,0 +1,6 @@
+package com.zipcodewilmington.froilansfarm;
+
+public interface Rideable {
+
+ void ride(R rider);
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Rider.java b/src/main/java/com/zipcodewilmington/froilansfarm/Rider.java
new file mode 100644
index 00000000..d63747fe
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Rider.java
@@ -0,0 +1,8 @@
+package com.zipcodewilmington.froilansfarm;
+
+public interface Rider {
+
+ void mount(R rideable);
+ void dismount(R rideable);
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Shelter.java b/src/main/java/com/zipcodewilmington/froilansfarm/Shelter.java
new file mode 100644
index 00000000..addaacc1
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Shelter.java
@@ -0,0 +1,10 @@
+package com.zipcodewilmington.froilansfarm;
+
+public interface Shelter {
+
+ void add(ShelterableType thingToBeStored);
+
+ ShelterableType getObjectByName(String name);
+
+ void remove(ShelterableType thingToBeStored);
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Simulation.java b/src/main/java/com/zipcodewilmington/froilansfarm/Simulation.java
new file mode 100644
index 00000000..09ab23de
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Simulation.java
@@ -0,0 +1,35 @@
+package com.zipcodewilmington.froilansfarm;
+
+
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Mammal.*;
+import com.zipcodewilmington.froilansfarm.Structure.ChickenCoop;
+import com.zipcodewilmington.froilansfarm.Structure.Stable;
+import com.zipcodewilmington.froilansfarm.Vehicles.Aircraft;
+import com.zipcodewilmington.froilansfarm.Vehicles.CropDuster;
+import com.zipcodewilmington.froilansfarm.Vehicles.FarmVehicle;
+import com.zipcodewilmington.froilansfarm.Vehicles.Tractor;
+
+import java.util.Arrays;
+
+public class Simulation implements Runnable {
+ public static void main(String[] args) {
+ new Simulation().run();
+ }
+
+ public void run() {
+ Weekdays weekdays = new Weekdays(new Farm());
+ weekdays.tuesday();
+ weekdays.wednesday();
+ weekdays.thursday();
+ weekdays.friday();
+ weekdays.saturday();
+ weekdays.sunday();
+ weekdays.monday();
+
+ System.out.println("some stuff");
+ }
+}
+
+
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Structure/ChickenCoop.java b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/ChickenCoop.java
new file mode 100644
index 00000000..73147fac
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/ChickenCoop.java
@@ -0,0 +1,38 @@
+package com.zipcodewilmington.froilansfarm.Structure;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Shelter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ChickenCoop implements Shelter {
+
+ List chickenList = new ArrayList();
+
+
+
+ public ChickenCoop() {
+ }
+
+ public void add(Chicken chicken) {
+ chickenList.add(chicken);
+ }
+
+ public Chicken getObjectByName(String name) {
+ for(Chicken chicken : chickenList) {
+ if(chicken.getName().equals(name)) {
+ return chicken;
+ }
+ }
+ return null;
+ }
+
+ public void remove(Chicken chicken) {
+ chickenList.remove(chicken);
+ }
+
+ public List getChickenList() {
+ return chickenList;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Structure/FarmHouse.java b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/FarmHouse.java
new file mode 100644
index 00000000..becfe640
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/FarmHouse.java
@@ -0,0 +1,41 @@
+package com.zipcodewilmington.froilansfarm.Structure;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Froilan;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+import com.zipcodewilmington.froilansfarm.Shelter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FarmHouse implements Shelter {
+
+ List personList = new ArrayList();
+
+ public FarmHouse() {}
+
+ public void add(Person person) {
+ personList.add(person);
+ }
+
+ public Person getObjectByName(String name) {
+ for(Person person : personList) {
+ if(person.getName().equals(name)) {
+ return person;
+ }
+ }
+ return null;
+ }
+
+ public void remove(Person person) {
+ personList.remove(person);
+ }
+
+ public List getPersonList() {
+ return personList;
+ }
+
+ public Person getFroi(){
+ Froilan froi = (Froilan) getObjectByName("Froilan");
+ return froi;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Structure/Pantry.java b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/Pantry.java
new file mode 100644
index 00000000..8a39355f
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/Pantry.java
@@ -0,0 +1,112 @@
+package com.zipcodewilmington.froilansfarm.Structure;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.Carrot;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Food.Egg;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class Pantry {
+ private List carrotsBasket = new ArrayList<>();
+ private List earCornsBasket = new ArrayList<>();
+ private List eggsBasket = new ArrayList<>();
+ private List tomatoesBasket = new ArrayList<>();
+
+ public Pantry(){
+ populateCarrots();
+ populateEarCorns();
+ populateEggs();
+ populateTomatoes();
+ }
+
+ public Integer countCarrots() {
+ return carrotsBasket.size();
+ }
+
+ public void storeCarrot(T carrot) {
+ this.carrotsBasket.add((Carrot) carrot);
+ }
+
+ public List takeCarrot(Integer count){
+ Carrot[] result = new Carrot[count];
+ for (int i = 0; i < count; i++) {
+ result[i] = this.carrotsBasket.remove(0);
+ }
+ return Arrays.asList(result);
+ }
+
+ public Integer countEarCorns() {
+ return earCornsBasket.size();
+ }
+
+ public void storeEarCorn(T earCorn) {
+ this.earCornsBasket.add((EarCorn) earCorn);
+ }
+
+ public List takeEarCorn(Integer count){
+ EarCorn[] result = new EarCorn[count];
+ for (int i = 0; i < count; i++) {
+ result[i] = this.earCornsBasket.remove(0);
+ }
+ return Arrays.asList(result);
+ }
+
+ public Integer countEggs() {
+ return eggsBasket.size();
+ }
+
+ public void storeEgg(T egg) {
+ this.eggsBasket.add((Egg) egg);
+ }
+
+ public List takeEgg(Integer count){
+ Egg[] result = new Egg[count];
+ for (int i = 0; i < count; i++) {
+ result[i] = this.eggsBasket.remove(0);
+ }
+ return Arrays.asList(result);
+ }
+
+ public Integer countTomatoes() {
+ return tomatoesBasket.size();
+ }
+
+ public void storeTomato(T tomato) {
+ this.tomatoesBasket.add((Tomato) tomato);
+ }
+
+ public List takeTomato(Integer count){
+ Tomato[] result = new Tomato[count];
+ for (int i = 0; i < count; i++) {
+ result[i] = this.tomatoesBasket.remove(0);
+ }
+ return Arrays.asList(result);
+ }
+
+ public void populateCarrots(){
+ for (int i = 0; i < 100; i++) {
+ this.storeCarrot((T) new Carrot());
+ }
+ }
+ public void populateEarCorns(){
+ for (int i = 0; i < 100; i++) {
+ this.storeEarCorn((T) new EarCorn());
+ }
+ }
+ public void populateEggs(){
+ for (int i = 0; i < 100; i++) {
+ this.storeEgg((T) new Egg());
+ }
+ }
+ public void populateTomatoes(){
+ for (int i = 0; i < 100; i++) {
+ this.storeTomato((T) new Tomato());
+ }
+ }
+}
+
+//
\ No newline at end of file
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Structure/Stable.java b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/Stable.java
new file mode 100644
index 00000000..493cc41f
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/Stable.java
@@ -0,0 +1,35 @@
+package com.zipcodewilmington.froilansfarm.Structure;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Shelter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Stable implements Shelter {
+
+ List horseList = new ArrayList();
+
+ public Stable() {}
+
+ public void add(Horse horse) {
+ horseList.add(horse);
+ }
+
+ public Horse getObjectByName(String name) {
+ for(Horse horse : horseList) {
+ if(horse.getName().equals(name)) {
+ return horse;
+ }
+ }
+ return null;
+ }
+
+ public void remove(Horse horse) {
+ horseList.remove(horse);
+ }
+
+ public List getHorseList() {
+ return horseList;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Aircraft.java b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Aircraft.java
new file mode 100644
index 00000000..ae54baf7
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Aircraft.java
@@ -0,0 +1,18 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Rider;
+
+public abstract class Aircraft implements Vehicle{
+
+
+
+ public String makeNoise() {
+ return "Bzzzzeewwwwwwwwwww Rat-tat-tat-tat-tat";
+ }
+
+ public String shoot(){
+ return "BULLETS";
+ }
+
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDuster.java b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDuster.java
new file mode 100644
index 00000000..6b03a6e0
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDuster.java
@@ -0,0 +1,32 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Field;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Pilot;
+import com.zipcodewilmington.froilansfarm.Rider;
+
+public class CropDuster extends Aircraft implements FarmVehicle {
+ private Pilot pilot;
+
+ public void fly(Field field) {
+ for(CropRow element : field.getMyField()){
+ element.fertilizeRow();
+ }
+ }
+
+
+ @Override
+ public void ride(Rider rider) {
+ this.pilot = (Pilot)rider;
+ }
+
+ @Override
+ public void operate(Farm farm) {
+ this.fly(farm.getField());
+ }
+
+ public Pilot getPilot() {
+ return pilot;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/FarmVehicle.java b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/FarmVehicle.java
new file mode 100644
index 00000000..95694db0
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/FarmVehicle.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+
+public interface FarmVehicle extends Vehicle{
+ void operate(Farm farm); //
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Tractor.java b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Tractor.java
new file mode 100644
index 00000000..8ed67a29
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Tractor.java
@@ -0,0 +1,64 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.*;
+import com.zipcodewilmington.froilansfarm.Rider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Tractor implements FarmVehicle{
+ private Rider rider;
+ private List aList = new ArrayList<>();
+
+ public void harvest(Edible crop){
+ aList.add(crop);
+ }
+
+
+ public String makeNoise() {
+ return "Chuggumgumgumgumgum";
+ }
+
+
+
+ public void ride(Rider rider) {
+ this.rider = rider;
+ }
+
+ public void operate(Farm farm) {
+ List rows = farm.getField().getMyField();
+ for(int i = 0; i < rows.size(); i++){
+ ArrayList listOfCrops = rows.get(i).harvestRow();
+ for(int j = 0; j < listOfCrops.size(); j++){
+ harvest(listOfCrops.get(j));
+ }
+ }
+ }
+
+ public void storeHarvest(Farm farm){
+ for(Edible edible: aList){
+ if(edible instanceof EarCorn){
+ farm.getPantry().storeEarCorn(edible);
+ }
+ if(edible instanceof Egg){
+ farm.getPantry().storeEgg(edible);
+ }
+ if(edible instanceof Tomato){
+ farm.getPantry().storeTomato(edible);
+ }
+ if(edible instanceof Carrot){
+ farm.getPantry().storeCarrot(edible);
+ }
+ }
+ }
+
+ public List getaList() {
+ return aList;
+ }
+
+ public Rider getRider() {
+ return rider;
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Vehicle.java b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Vehicle.java
new file mode 100644
index 00000000..931ff10c
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Vehicle.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.NoiseMaker;
+import com.zipcodewilmington.froilansfarm.Rideable;
+
+public interface Vehicle extends NoiseMaker, Rideable {
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Weekdays.java b/src/main/java/com/zipcodewilmington/froilansfarm/Weekdays.java
new file mode 100644
index 00000000..2f015547
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Weekdays.java
@@ -0,0 +1,142 @@
+package com.zipcodewilmington.froilansfarm;
+
+
+import com.zipcodewilmington.froilansfarm.Food.*;
+import com.zipcodewilmington.froilansfarm.Mammal.*;
+import com.zipcodewilmington.froilansfarm.Structure.ChickenCoop;
+import com.zipcodewilmington.froilansfarm.Structure.Stable;
+import com.zipcodewilmington.froilansfarm.Vehicles.CropDuster;
+import com.zipcodewilmington.froilansfarm.Vehicles.Tractor;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class Weekdays {
+ private Farm farm = new Farm();
+
+ public Weekdays(Farm farm){
+ this.farm = farm;
+ }
+
+ Froilan froilan = (Froilan) farm.getFarmhouse().getObjectByName("Froilan");
+ Froilanda froilanda = Froilanda.getInstance();
+
+ List> stables = farm.getStables();
+ List> chickenCoops = farm.getChickenCoops();
+
+ EarCorn earCorn = new EarCorn();
+ CornStalk cornStalk = new CornStalk();
+ TomatoPlant tomatoPlant = new TomatoPlant();
+ CropRow cropRow = new CropRow();
+
+ CropDuster cropDuster = farm.getCropDuster();
+ Tractor tractor = farm.getTractor();
+
+ public void sunday() {
+ List cropRows = farm.getField().getMyField();
+ morningRoutine(farm);
+ froilan.plantRows(farm.getField());
+ lunch();
+ dinner();
+ }
+
+ public void monday() {
+ morningRoutine(farm);
+ froilanda.mount(cropDuster);
+ froilanda.fly(farm);
+ lunch();
+ dinner();
+ }
+
+ public void tuesday() {
+ morningRoutine(farm);
+ froilan.mount(tractor);
+ tractor.operate(farm);
+ lunch();
+ dinner();
+ }
+
+ public void wednesday() {
+ List cropRows = farm.getField().getMyField();
+ morningRoutine(farm);
+ froilan.plantRows(farm.getField());
+ lunch();
+ dinner();
+ }
+
+ public void thursday() {
+ morningRoutine(farm);
+ froilan.mount(tractor);
+ tractor.operate(farm);
+ lunch();
+ dinner();
+ }
+
+ public void friday() {
+ List cropRows = farm.getField().getMyField();
+ morningRoutine(farm);
+ froilan.plantRows(farm.getField());
+ lunch();
+ dinner();
+ }
+
+ public void saturday() {
+ morningRoutine(farm);
+ lunch();
+ dinner();
+ }
+
+ public void morningRoutine(Farm farm) {
+ for (int i = 0; i < stables.size(); i++) {
+ Stable stable = (Stable) stables.get(i);
+ for (Horse horse : stable.getHorseList()) {
+ horse.eat(new EarCorn(), new EarCorn(), new EarCorn());
+ froilan.mount(horse);
+ horse.ride(froilan);
+ }
+ }
+
+ for(int i = 0; i < chickenCoops.size(); i++) {
+ ChickenCoop coop = (ChickenCoop) chickenCoops.get(i);
+ List x = farm.getPantry().takeEarCorn(1);
+ coop.getChickenList().forEach(chicken -> chicken.eat((EarCorn) x));
+ }
+
+
+ List breakFast = farm.getPantry().takeEarCorn(1);
+ breakFast.addAll(farm.getPantry().takeTomato(2));
+ breakFast.addAll(farm.getPantry().takeEgg(5));
+ froilan.eat(breakFast);
+ breakFast = farm.getPantry().takeEarCorn(2);
+ breakFast.addAll(farm.getPantry().takeTomato(1));
+ breakFast.addAll(farm.getPantry().takeEgg(2));
+ froilanda.eat(breakFast);
+
+ }
+
+ public void lunch() {
+ List lunch = farm.getPantry().takeCarrot(2);
+ lunch.addAll(farm.getPantry().takeTomato(3));
+ lunch.addAll(farm.getPantry().takeEgg(3));
+ froilan.eat(lunch);
+ lunch = farm.getPantry().takeEarCorn(1);
+ lunch.addAll(farm.getPantry().takeCarrot(3));
+ lunch.addAll(farm.getPantry().takeEgg(2));
+ froilanda.eat(lunch);
+ }
+
+ public void dinner() {
+ List dinner = farm.getPantry().takeCarrot(1);
+ dinner.addAll(farm.getPantry().takeEarCorn(1));
+ dinner.addAll(farm.getPantry().takeTomato(2));
+ dinner.addAll(farm.getPantry().takeEgg(2));
+ froilan.eat(dinner);
+ dinner = farm.getPantry().takeCarrot(1);
+ dinner.addAll(farm.getPantry().takeEarCorn(1));
+ dinner.addAll(farm.getPantry().takeTomato(2));
+ dinner.addAll(farm.getPantry().takeEgg(2));
+ froilanda.eat(dinner);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FarmTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FarmTest.java
new file mode 100644
index 00000000..9d8d934e
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FarmTest.java
@@ -0,0 +1,41 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+import com.zipcodewilmington.froilansfarm.Structure.ChickenCoop;
+import com.zipcodewilmington.froilansfarm.Structure.FarmHouse;
+import com.zipcodewilmington.froilansfarm.Structure.Stable;
+import com.zipcodewilmington.froilansfarm.Vehicles.CropDuster;
+import com.zipcodewilmington.froilansfarm.Vehicles.Tractor;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class FarmTest {
+
+ @Test
+ public void farmConstructorTest() {
+ Farm farm = new Farm();
+
+ boolean actualFarm = farm.getFarmhouse() != null;
+ boolean actualCoops = farm.getChickenCoops() != null;
+ boolean actualDuster = farm.getCropDuster() != null;
+ boolean actualStables = farm.getStables() != null;
+ boolean actualTractor = farm.getTractor() != null;
+ boolean actualField = farm.getField() != null;
+ boolean actualJohnDeer = farm.getJohnDeer() != null;
+
+
+ Assert.assertTrue(actualFarm);
+ Assert.assertTrue(actualCoops);
+ Assert.assertTrue(actualDuster);
+ Assert.assertTrue(actualStables);
+ Assert.assertTrue(actualTractor);
+ Assert.assertTrue(actualField);
+ Assert.assertTrue(actualJohnDeer);
+
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CarrotFlowerTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CarrotFlowerTest.java
new file mode 100644
index 00000000..7e6d57f3
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CarrotFlowerTest.java
@@ -0,0 +1,72 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.*;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CarrotFlowerTest {
+
+ @Test
+ public void setHarvestedTest() {
+ CarrotFlower carrotFlower = new CarrotFlower(2);
+ carrotFlower.setHarvested(true);
+ boolean actual = carrotFlower.checkHarvested();
+ Assert.assertEquals(true, actual);
+
+ }
+
+ @Test
+ public void checkHarvestedTest() {
+ CarrotFlower carrotFlower = new CarrotFlower(2);
+ boolean actual = carrotFlower.checkHarvested();
+ Assert.assertEquals(false, actual);
+
+ }
+
+ @Test
+ public void setFertilizedTest(){
+ CarrotFlower carrotFlower = new CarrotFlower(2);
+ carrotFlower.fertilize();
+ Boolean stalkIsFertilized = carrotFlower.checkFertilized();
+ Assert.assertTrue(stalkIsFertilized);
+ }
+
+ @Test
+ public void checkFertilizedTest() {
+ CarrotFlower carrotFlower = new CarrotFlower(2);
+ Boolean stalkIsFertilized = carrotFlower.checkFertilized();
+ Assert.assertFalse(stalkIsFertilized);
+
+ }
+
+
+ @Test
+ public void testCornStalkInheritance() {
+ CarrotFlower carrotFlower = new CarrotFlower(2);
+ Assert.assertTrue(carrotFlower instanceof Crop);
+ }
+
+ @Test
+ public void yieldTest(){
+ CarrotFlower carrotFlower = new CarrotFlower();
+ carrotFlower.fertilize();
+ //when
+ Edible harvest = carrotFlower.yield();
+ Boolean harvested = carrotFlower.checkHarvested();
+ //then
+ Assert.assertTrue(harvest instanceof Carrot);
+ Assert.assertTrue(harvested);
+ }
+
+ @Test
+ public void yieldNullTest(){
+ CarrotFlower carrotFlower = new CarrotFlower();
+ //when
+ Edible harvest = carrotFlower.yield();
+ Boolean harvested = carrotFlower.checkHarvested();
+ //then
+ Assert.assertNull(harvest);
+ Assert.assertFalse(harvested);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CarrotTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CarrotTest.java
new file mode 100644
index 00000000..9ae858bf
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CarrotTest.java
@@ -0,0 +1,22 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.Carrot;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CarrotTest {
+
+ @Test
+ public void carrotTest() {
+ Carrot carrot = new Carrot();
+
+ }
+
+ @Test
+ public void testEarCornImplementation() {
+ Carrot carrot = new Carrot();
+ Assert.assertTrue(carrot instanceof Edible);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CornStalkTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CornStalkTest.java
new file mode 100644
index 00000000..b5e59541
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CornStalkTest.java
@@ -0,0 +1,76 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.CornStalk;
+import com.zipcodewilmington.froilansfarm.Food.Crop;
+
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CornStalkTest {
+
+ @Test
+ public void setHarvestedTest() {
+ CornStalk cornStalk = new CornStalk(2);
+ cornStalk.setHarvested(true);
+ boolean actual = cornStalk.checkHarvested();
+ Assert.assertEquals(true, actual);
+
+ }
+
+ @Test
+ public void checkHarvestedTest() {
+ CornStalk cornStalk = new CornStalk(2);
+ boolean actual = cornStalk.checkHarvested();
+ Assert.assertEquals(false, actual);
+
+ }
+
+ @Test
+ public void setFertilizedTest(){
+ CornStalk cornStalk = new CornStalk(2);
+ cornStalk.fertilize();
+ Boolean stalkIsFertilized = cornStalk.checkFertilized();
+ Assert.assertTrue(stalkIsFertilized);
+ }
+
+ @Test
+ public void checkFertilizedTest() {
+ CornStalk cornStalk = new CornStalk(2);
+ Boolean stalkIsFertilized = cornStalk.checkFertilized();
+ Assert.assertFalse(stalkIsFertilized);
+
+ }
+
+
+ @Test
+ public void testCornStalkInheritance() {
+ CornStalk cornStalk = new CornStalk(2);
+ Assert.assertTrue(cornStalk instanceof Crop);
+ }
+
+ @Test
+ public void yieldTest(){
+ CornStalk cornStalk = new CornStalk();
+ cornStalk.fertilize();
+ //when
+ Edible harvest = cornStalk.yield();
+ Boolean harvested = cornStalk.checkHarvested();
+ //then
+ Assert.assertTrue(harvest instanceof EarCorn);
+ Assert.assertTrue(harvested);
+ }
+
+ @Test
+ public void yieldNullTest(){
+ CornStalk cornStalk = new CornStalk();
+ //when
+ Edible harvest = cornStalk.yield();
+ Boolean harvested = cornStalk.checkHarvested();
+ //then
+ Assert.assertNull(harvest);
+ Assert.assertFalse(harvested);
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CropRowTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CropRowTest.java
new file mode 100644
index 00000000..0eb42af6
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/CropRowTest.java
@@ -0,0 +1,93 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.*;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class CropRowTest {
+
+ @Test
+ public void cropRowConstructorTest(){
+ //given
+ CropRow myCropRow = new CropRow();
+ Integer exp = 0;
+ Integer act = myCropRow.getNumberOfCrops();
+ //then
+ Assert.assertEquals(exp,act);
+ }
+
+ @Test
+ public void plantCropTest() {
+ //given
+ CropRow myCropRow = new CropRow();
+ Crop tomatoPlant = new TomatoPlant();
+ //when
+ myCropRow.plantCrop(tomatoPlant);
+ Integer exp = 1;
+ Integer act = myCropRow.getNumberOfCrops();
+ //then
+ Assert.assertEquals(exp,act);
+ }
+
+ @Test
+ public void getCropByIdTest(){
+ //given
+ CropRow myCropRow = new CropRow();
+ Crop tomato1 = new TomatoPlant(1);
+ Crop corn = new CornStalk(2);
+ Crop tomato2 = new TomatoPlant(3);
+ //when
+ myCropRow.plantCrop(corn);
+ myCropRow.plantCrop(tomato1);
+ myCropRow.plantCrop(tomato2);
+ Crop retrieved = myCropRow.getCropById(3);
+ //then
+ Assert.assertEquals(tomato2,retrieved);
+ }
+
+ @Test
+ public void fertilizeRowTest(){
+ //given
+ CropRow myCropRow = new CropRow();
+ Crop tomato1 = new TomatoPlant(1);
+ Crop corn = new CornStalk(2);
+ Crop tomato2 = new TomatoPlant(3);
+ myCropRow.plantCrop(corn);
+ myCropRow.plantCrop(tomato1);
+ myCropRow.plantCrop(tomato2);
+ //when
+ myCropRow.fertilizeRow();
+ Boolean cornIsFertilized = corn.checkFertilized();
+ Boolean tomato1IsFertilized = tomato1.checkFertilized();
+ //then
+ Assert.assertTrue(cornIsFertilized);
+ Assert.assertTrue(tomato1IsFertilized);
+
+ }
+
+ @Test
+ public void harvestRowTest(){
+ //given
+ CropRow myCropRow = new CropRow();
+ Crop tomato1 = new TomatoPlant(1);
+ Crop corn = new CornStalk(2);
+ Crop tomato2 = new TomatoPlant(3);
+ myCropRow.plantCrop(corn);
+ myCropRow.plantCrop(tomato1);
+ myCropRow.plantCrop(tomato2);
+ myCropRow.fertilizeRow();
+ //when
+ ArrayList basket = myCropRow.harvestRow();
+ for(Edible item: basket){
+ System.out.println(item.getClass().getSimpleName());
+ }
+ //then
+
+ }
+
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/EarCornTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/EarCornTest.java
new file mode 100644
index 00000000..d1bf8261
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/EarCornTest.java
@@ -0,0 +1,22 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Food.Egg;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class EarCornTest {
+
+ @Test
+ public void eggTest() {
+ EarCorn earCorn = new EarCorn();
+
+ }
+
+ @Test
+ public void testEarCornImplementation() {
+ EarCorn earCorn = new EarCorn();
+ Assert.assertTrue(earCorn instanceof Edible);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/EggTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/EggTest.java
new file mode 100644
index 00000000..76fc8f92
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/EggTest.java
@@ -0,0 +1,38 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.Egg;
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class EggTest {
+
+ @Test
+ public void eggTest() {
+ Edible egg = new Egg();
+ Assert.assertTrue(egg instanceof Egg);
+ }
+
+ @Test
+ public void testEggImplementation() {
+ Egg egg = new Egg();
+ Assert.assertTrue(egg instanceof Edible);
+ }
+
+ @Test
+ public void isItFertilizedTest(){
+ Egg egg = new Egg();
+ Boolean fertilized = egg.isItFertilized();
+ Assert.assertFalse(fertilized);
+ }
+
+ @Test
+ public void setIsFertilizedTest(){
+ Egg egg = new Egg();
+ egg.setIsFertilized(true);
+ Boolean fertilized = egg.isItFertilized();
+ Assert.assertTrue(fertilized);
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/ProduceTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/ProduceTest.java
new file mode 100644
index 00000000..f31ecf9f
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/ProduceTest.java
@@ -0,0 +1,4 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+public class ProduceTest {
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/TomatoPlantTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/TomatoPlantTest.java
new file mode 100644
index 00000000..6169dcba
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/TomatoPlantTest.java
@@ -0,0 +1,25 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TomatoPlantTest {
+
+ @Test
+ public void yieldTest(){
+ TomatoPlant tomatoPlant = new TomatoPlant();
+ tomatoPlant.fertilize();
+ Edible food = tomatoPlant.yield();
+ Assert.assertTrue(food instanceof Tomato);
+ }
+
+ @Test
+ public void yieldNullTest(){
+ TomatoPlant tomatoPlant = new TomatoPlant();
+ Edible food = tomatoPlant.yield();
+ Assert.assertNull(food);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/TomatoTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/TomatoTest.java
new file mode 100644
index 00000000..ee3a90d9
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FoodTests/TomatoTest.java
@@ -0,0 +1,22 @@
+package com.zipcodewilmington.froilansfarm.FoodTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.Egg;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TomatoTest {
+
+ @Test
+ public void tomatoTest() {
+ Tomato tomato = new Tomato();
+ }
+
+ @Test
+ public void testTomatoImplementation() {
+ Tomato tomato = new Tomato();
+ Assert.assertTrue(tomato instanceof Edible);
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/ChickenTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/ChickenTest.java
new file mode 100644
index 00000000..76550874
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/ChickenTest.java
@@ -0,0 +1,90 @@
+package com.zipcodewilmington.froilansfarm.MammalTests;
+
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Food.Egg;
+import com.zipcodewilmington.froilansfarm.Food.Produce;
+import com.zipcodewilmington.froilansfarm.Mammal.Animal;
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ChickenTest {
+
+ @Test
+ public void testConstructor() {
+ //given
+ String expected = "Franklin";
+ //when
+ Chicken chicken = new Chicken(expected);
+ String actual = chicken.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetName() {
+ //given
+ String expected = "Theodore";
+ //when
+ Chicken chicken = new Chicken(expected);
+ String actual = chicken.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMakeNoise() {
+ //given
+ String expected = "Cluck Cluck";
+ //when
+ Chicken chicken = new Chicken();
+ String actual = chicken.makeNoise();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+
+ @Test
+ public void testYield() {
+ //given
+ Chicken chicken = new Chicken();
+ //when
+ chicken.fertilize();
+ Edible egg = chicken.yield();
+ //then
+ Assert.assertTrue(egg instanceof Egg);
+ }
+
+ @Test
+ public void testEat() {
+ //given
+ Chicken chicken = new Chicken();
+ //when
+ EarCorn earCorn = new EarCorn();
+ chicken.eat(earCorn);
+ chicken.getMealList();
+ //then
+ Assert.assertTrue(chicken.meals.contains(earCorn));
+ }
+
+ @Test
+ public void testInheritance() {
+ Chicken chicken = new Chicken("Clucks");
+ Assert.assertTrue(chicken instanceof Animal);
+ }
+
+ @Test
+ public void testImplementation() {
+ Chicken chicken = new Chicken("Fluffers");
+ Assert.assertTrue(chicken instanceof Edible);
+ }
+
+ @Test
+ public void testImplementationProduce() {
+ Chicken chicken = new Chicken();
+ Assert.assertTrue(chicken instanceof Produce);
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FarmerTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FarmerTest.java
new file mode 100644
index 00000000..36570181
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FarmerTest.java
@@ -0,0 +1,99 @@
+package com.zipcodewilmington.froilansfarm.MammalTests;
+
+import com.zipcodewilmington.froilansfarm.Botanist;
+import com.zipcodewilmington.froilansfarm.Food.Crop;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+import com.zipcodewilmington.froilansfarm.Rideable;
+import com.zipcodewilmington.froilansfarm.Rider;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FarmerTest {
+
+ @Test
+ public void testconstructor() {
+ //given
+ String expected = "Froilanda";
+ //when
+ Farmer farmer = new Farmer(expected);
+ String actual = farmer.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetName() {
+ //given
+ String expected = "Froiland";
+ Person person = new Farmer(expected);
+ //when
+ String actual = person.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMakeNoise() {
+ //given
+ String expected = "Howdy";
+ //when
+ Farmer farmer = new Farmer();
+ String actual = farmer.makeNoise();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMount() {
+ //given
+ Horse horse = new Horse();
+ Rideable expected = horse;
+ //when
+ Farmer farmer = new Farmer();
+ farmer.mount(horse);
+ Rideable actual = farmer.getIsRiding();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testDismount() {
+ //given
+ Horse horse = new Horse();
+ //when
+ Farmer farmer = new Farmer();
+ farmer.mount(horse);
+ farmer.dismount(horse);
+ //then
+ Assert.assertNull(farmer.getIsRiding());
+ }
+
+ @Test
+ public void testEat() {
+ //given
+ Farmer farmer = new Farmer();
+ //when
+ Tomato tomato = new Tomato();
+ farmer.eat(tomato);
+ farmer.getMealList();
+ //then
+ Assert.assertTrue(farmer.meals.contains(tomato));
+ }
+
+ @Test
+ public void testInheritance() {
+ Farmer farmer = new Farmer("Annette");
+ Assert.assertTrue(farmer instanceof Person);
+ }
+
+ @Test
+ public void testImplementationRider() {
+ Farmer farmer = new Farmer("Joe");
+ Assert.assertTrue(farmer instanceof Rider);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FroilanTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FroilanTest.java
new file mode 100644
index 00000000..b9178190
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FroilanTest.java
@@ -0,0 +1,112 @@
+package com.zipcodewilmington.froilansfarm.MammalTests;
+
+import com.zipcodewilmington.froilansfarm.Botanist;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Froilan;
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+import com.zipcodewilmington.froilansfarm.Rideable;
+import com.zipcodewilmington.froilansfarm.Rider;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FroilanTest {
+
+ @Test
+ public void testconstructor() {
+ //given
+ String expected = "Froilan";
+ //when
+ Froilan froilan = Froilan.getInstance();
+ String actual = froilan.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetName() {
+ //given
+ String expected = "Froilan";
+ Froilan froilan = Froilan.getInstance();
+ //when
+ String actual = froilan.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testPlant() {
+ //given
+ TomatoPlant tomatoPlant = new TomatoPlant(0);
+ CropRow cropRow = new CropRow();
+ Froilan farmer = Froilan.getInstance();
+ //when
+ farmer.plant(tomatoPlant, cropRow);
+ //then
+ Assert.assertTrue(tomatoPlant.equals(cropRow.getCropById(0)));
+ }
+
+ @Test
+ public void testMakeNoise() {
+ //given
+ String expected = "Howdy";
+ //when
+ Froilan froilan = Froilan.getInstance();
+ String actual = froilan.makeNoise();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMount() {
+ //given
+ Horse horse = new Horse();
+ Rideable expected = horse;
+ //when
+ Froilan froilan = Froilan.getInstance();
+ froilan.mount(horse);
+ Rideable actual = froilan.getIsRiding();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testDismount() {
+ //given
+ Horse horse = new Horse();
+ //when
+ Froilan froilan = Froilan.getInstance();
+ froilan.mount(horse);
+ froilan.dismount(horse);
+ //then
+ Assert.assertNull(froilan.getIsRiding());
+ }
+
+ @Test
+ public void testEat() {
+ //given
+ Froilan froilan = Froilan.getInstance();
+ //when
+ Tomato tomato = new Tomato();
+ froilan.eat(tomato);
+ froilan.getMealList();
+ //then
+ Assert.assertTrue(froilan.meals.contains(tomato));
+ }
+
+ @Test
+ public void testInheritance() {
+ Froilan froilan = Froilan.getInstance();
+ Assert.assertTrue(froilan instanceof Farmer);
+ }
+
+ @Test
+ public void testImplementationBotanist() {
+ Froilan froilan = Froilan.getInstance();
+ Assert.assertTrue(froilan instanceof Botanist);
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FroilandaTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FroilandaTest.java
new file mode 100644
index 00000000..dc2dcd67
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/FroilandaTest.java
@@ -0,0 +1,123 @@
+package com.zipcodewilmington.froilansfarm.MammalTests;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Froilanda;
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Pilot;
+import com.zipcodewilmington.froilansfarm.Rideable;
+import com.zipcodewilmington.froilansfarm.Vehicles.CropDuster;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FroilandaTest {
+ @Test
+ public void testconstructor() {
+ //given
+ String expected = "Froilanda";
+ //when
+ Froilanda froilanda = Froilanda.getInstance();
+ String actual = froilanda.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetName() {
+ //given
+ String expected = "Froilanda";
+ Froilanda froilanda = Froilanda.getInstance();
+ //when
+ String actual = froilanda.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMakeNoise() {
+ //given
+ String expected = "Howdy";
+ //when
+ Froilanda froilanda = Froilanda.getInstance();
+ String actual = froilanda.makeNoise();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMount() {
+ //given
+ Horse horse = new Horse();
+ Rideable expected = horse;
+ //when
+ Froilanda froilanda = Froilanda.getInstance();
+ froilanda.mount(horse);
+
+ Rideable actual = froilanda.getIsRiding();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testDismount() {
+ //given
+ Horse horse = new Horse();
+ //when
+ Froilanda froilanda = Froilanda.getInstance();
+ froilanda.mount(horse);
+ froilanda.dismount(horse);
+ //then
+ Assert.assertNull(froilanda.getIsRiding());
+ }
+
+ @Test
+ public void testEat() {
+ //given
+ Froilanda froilanda = Froilanda.getInstance();
+ //when
+ Tomato tomato = new Tomato();
+ froilanda.eat(tomato);
+ froilanda.getMealList();
+ //then
+ Assert.assertTrue(froilanda.meals.contains(tomato));
+ }
+
+ @Test
+ public void testFly() {
+ //given
+ Froilanda froilanda = Froilanda.getInstance();
+ CropDuster cropDuster = new CropDuster();
+ Farm farm = new Farm();
+ Assert.assertFalse(farm
+ .getField()
+ .getMyField()
+ .get(0)
+ .getCropList()
+ .get(0)
+ .checkFertilized());
+ //when
+ froilanda.mount(cropDuster);
+ froilanda.fly(farm);
+ //then
+ Assert.assertTrue(farm
+ .getField()
+ .getMyField()
+ .get(0)
+ .getCropList()
+ .get(0)
+ .checkFertilized());
+ }
+
+ @Test
+ public void testInheritance() {
+ Froilanda froilanda = Froilanda.getInstance();
+ Assert.assertTrue(froilanda instanceof Farmer);
+ }
+
+ @Test
+ public void testImplementationBotanist() {
+ Froilanda froilanda = Froilanda.getInstance();
+ Assert.assertTrue(froilanda instanceof Pilot);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/HorseTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/HorseTest.java
new file mode 100644
index 00000000..e5590a8d
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/HorseTest.java
@@ -0,0 +1,83 @@
+package com.zipcodewilmington.froilansfarm.MammalTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Mammal.Animal;
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Rideable;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class HorseTest {
+
+ @Test
+ public void testConstructor() {
+ //given
+ String expected = "Cyan";
+ //when
+ Horse horse = new Horse(expected);
+ String actual = horse.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetName() {
+ //given
+ String expected = "Spring";
+ //when
+ Horse horse = new Horse(expected);
+ String actual = horse.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMakeNoise() {
+ //given
+ String expected = "Neigh";
+ //when
+ Horse horse = new Horse();
+ String actual = horse.makeNoise();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testRide() {
+ //given
+ Horse horse = new Horse();
+ Farmer farmer = new Farmer();
+ //when
+ horse.ride(farmer);
+ //then
+
+
+ }
+
+ @Test
+ public void testEat() {
+ //given
+ Horse horse = new Horse();
+ //when
+ EarCorn earCorn = new EarCorn();
+ horse.eat(earCorn);
+ horse.getMealList();
+ //then
+ Assert.assertTrue(horse.meals.contains(earCorn));
+ }
+
+ @Test
+ public void testInheritance() {
+ Horse horse = new Horse("Harvey");
+ Assert.assertTrue(horse instanceof Animal);
+ }
+
+ @Test
+ public void testImplementation() {
+ Horse horse = new Horse();
+ Assert.assertTrue(horse instanceof Rideable);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/PersonTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/PersonTest.java
new file mode 100644
index 00000000..f00af7a0
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/PersonTest.java
@@ -0,0 +1,69 @@
+package com.zipcodewilmington.froilansfarm.MammalTests;
+
+import com.zipcodewilmington.froilansfarm.Eater;
+import com.zipcodewilmington.froilansfarm.Food.Tomato;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+import com.zipcodewilmington.froilansfarm.NoiseMaker;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class PersonTest {
+
+ @Test
+ public void testConstructor() {
+ //given
+ String expected = "Sophia";
+ Person person = new Person(expected);
+ //when
+ String actual = person.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetName() {
+ //given
+ String expected = "Tyler";
+ //when
+ Person person = new Person(expected);
+ String actual = person.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMakeNoise() {
+ //given
+ String expected = "Hello";
+ Person person = new Person();
+ //when
+ String actual = person.makeNoise();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testEat() {
+ //given
+ Person person = new Person();
+ //when
+ Tomato tomato = new Tomato();
+ person.eat(tomato);
+ person.getMealList();
+ //then
+ Assert.assertTrue(person.meals.contains(tomato));
+ }
+
+ @Test
+ public void testImplementationEater() {
+ Person person = new Person();
+ Assert.assertTrue(person instanceof Eater);
+ }
+
+ @Test
+ public void testImplementationNoiseMaker() {
+ Person person = new Person();
+ Assert.assertTrue(person instanceof NoiseMaker);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/ChickenCoopTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/ChickenCoopTest.java
new file mode 100644
index 00000000..92faab34
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/ChickenCoopTest.java
@@ -0,0 +1,83 @@
+package com.zipcodewilmington.froilansfarm.StructureTests;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Shelter;
+import com.zipcodewilmington.froilansfarm.Structure.ChickenCoop;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ChickenCoopTest {
+
+ @Test
+ public void testConstructor() {
+ //given
+ String expected = "Frank";
+ Chicken chicken = new Chicken(expected);
+ //when
+ ChickenCoop chickenCoop = new ChickenCoop();
+ chickenCoop.add(chicken);
+ //then
+ Assert.assertTrue(chickenCoop.getChickenList().contains(chicken));
+ }
+
+ @Test
+ public void testGetObjectByName() {
+ //given
+ String name = "Frank";
+ Chicken expected = new Chicken(name);
+ //when
+ ChickenCoop chickenCoop = new ChickenCoop();
+ chickenCoop.add(expected);
+ Chicken actual = chickenCoop.getObjectByName(name);
+ //then
+ Assert.assertTrue(expected.equals(actual));
+ }
+
+ @Test
+ public void testAdd() {
+ //given
+ Chicken chicken = new Chicken("Harry");
+ //when
+ ChickenCoop chickenCoop = new ChickenCoop();
+ chickenCoop.add(chicken);
+ //then
+ Assert.assertTrue(chickenCoop.getChickenList().contains(chicken));
+ }
+
+ @Test
+ public void testRemove() {
+ //given
+ Chicken chicken1 = new Chicken("Harry");
+ Chicken chicken2 = new Chicken("Megan");
+ //when
+ ChickenCoop chickenCoop = new ChickenCoop();
+ chickenCoop.add(chicken1);
+ chickenCoop.add(chicken2);
+ chickenCoop.remove(chicken1);
+ //then
+ Assert.assertFalse(chickenCoop.getChickenList().contains(chicken1));
+ }
+
+ @Test
+ public void testImplementation() {
+ ChickenCoop chickenCoop = new ChickenCoop();
+ Assert.assertTrue(chickenCoop instanceof Shelter);
+ }
+
+ @Test
+ public void elementTest() {
+
+ //Given
+ ChickenCoop chickenCoop = new ChickenCoop();
+ Chicken actual = chickenCoop.getObjectByName("Felipe");
+ Assert.assertNull(actual);
+ chickenCoop.add(new Chicken("Felipe"));
+
+ //When
+ actual = chickenCoop.getObjectByName("Felipe");
+
+ //Then
+ Assert.assertNotNull(actual);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/FarmHouseTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/FarmHouseTest.java
new file mode 100644
index 00000000..602e366b
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/FarmHouseTest.java
@@ -0,0 +1,98 @@
+package com.zipcodewilmington.froilansfarm.StructureTests;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+import com.zipcodewilmington.froilansfarm.Shelter;
+import com.zipcodewilmington.froilansfarm.Structure.ChickenCoop;
+import com.zipcodewilmington.froilansfarm.Structure.FarmHouse;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FarmHouseTest {
+
+ @Test
+ public void testConstructor() {
+ //given
+ String expected = "Froiland";
+ Farmer farmer = new Farmer(expected);
+ //when
+ FarmHouse farmhouse = new FarmHouse();
+ farmhouse.add(farmer);
+ //then
+ Assert.assertTrue(farmhouse.getPersonList().contains(farmer));
+ }
+
+ @Test
+ public void testGetObjectByName() {
+ //given
+ String name = "Frank";
+ Person expected = new Farmer(name);
+ //when
+ FarmHouse farmhouse = new FarmHouse();
+ farmhouse.add(expected);
+ Person actual = farmhouse.getObjectByName(name);
+ //then
+ Assert.assertTrue(expected.equals(actual));
+ }
+
+
+ @Test
+ public void testAdd() {
+ //given
+ Person person = new Farmer("Froilan");
+ //when
+ FarmHouse farmhouse = new FarmHouse();
+ farmhouse.add(person);
+ //then
+ Assert.assertTrue(farmhouse.getPersonList().contains(person));
+ }
+
+ @Test
+ public void testRemove() {
+ //given
+ Person person1 = new Farmer("Froilan");
+ Person person2 = new Farmer("Froilanda");
+ //when
+ FarmHouse farmhouse = new FarmHouse();
+ farmhouse.add(person1);
+ farmhouse.add(person2);
+ farmhouse.remove(person1);
+ //then
+ Assert.assertFalse(farmhouse.getPersonList().contains(person1));
+ }
+
+ @Test
+ public void testImplementation() {
+ FarmHouse farmhouse = new FarmHouse();
+ Assert.assertTrue(farmhouse instanceof Shelter);
+ }
+
+ @Test
+ public void elementTest() {
+
+ //Given
+ FarmHouse farmHouse = new FarmHouse();
+ Person actual = farmHouse.getObjectByName("Froilan");
+ Assert.assertNull(actual);
+ farmHouse.add(new Person("Froilan"));
+
+ //When
+ actual = farmHouse.getObjectByName("Froilan");
+
+ //Then
+ Assert.assertNotNull(actual);
+ }
+
+// @Test
+// public void testGetName() {
+// //given
+// String expected = "Froilan";
+// Person person = new Farmer(expected);
+// //when
+// FarmHouse farmhouse = new FarmHouse();
+// farmhouse.getObjectByName(expected);
+// //then
+// System.out.println(farmhouse.getObjectByName(expected));
+// }
+ }
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/PantryTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/PantryTest.java
new file mode 100644
index 00000000..a3fdc372
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/PantryTest.java
@@ -0,0 +1,41 @@
+package com.zipcodewilmington.froilansfarm.StructureTests;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.Carrot;
+import com.zipcodewilmington.froilansfarm.Structure.Pantry;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+public class PantryTest {
+ @Test
+ public void takeTest(){
+ //given
+ Pantry myPantry = new Pantry();
+ //when
+ //Carrot[] twoCarrots = myPantry.takeCarrot(2);
+ Integer expected = 8;
+ Integer actual = myPantry.countCarrots();
+ //then
+ Assert.assertEquals(expected,actual);
+
+ //System.out.println(twoCarrots.length + " " + twoCarrots.getClass().getSimpleName());
+
+ }
+
+ @Test
+ public void storeCarrotTest(){
+ //given
+ Pantry myPantry = new Pantry();
+ Edible myCarrot = new Carrot();
+ //when
+ myPantry.storeCarrot(myCarrot);
+ Integer actual = myPantry.countCarrots();
+ Integer expected = 101;
+ //then
+ Assert.assertEquals(expected,actual);
+
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/StableTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/StableTest.java
new file mode 100644
index 00000000..cb3161a2
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/StableTest.java
@@ -0,0 +1,83 @@
+package com.zipcodewilmington.froilansfarm.StructureTests;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Shelter;
+import com.zipcodewilmington.froilansfarm.Structure.ChickenCoop;
+import com.zipcodewilmington.froilansfarm.Structure.Stable;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class StableTest {
+
+ @Test
+ public void testConstructor() {
+ //given
+ String expected = "Judy";
+ Horse horse = new Horse(expected);
+ //when
+ Stable stable = new Stable();
+ stable.add(horse);
+ //then
+ Assert.assertTrue(stable.getHorseList().contains(horse));
+ }
+
+ @Test
+ public void testGetObjectByName() {
+ //given
+ String name = "Frank";
+ Horse expected = new Horse(name);
+ //when
+ Stable stable = new Stable();
+ stable.add(expected);
+ Horse actual = stable.getObjectByName(name);
+ //then
+ Assert.assertTrue(expected.equals(actual));
+ }
+
+ @Test
+ public void testAdd() {
+ //given
+ Horse horse = new Horse("Annabell");
+ //when
+ Stable stable = new Stable();
+ stable.add(horse);
+ //then
+ Assert.assertTrue(stable.getHorseList().contains(horse));
+ }
+
+ @Test
+ public void testRemove() {
+ //given
+ Horse horse1 = new Horse("Annabell");
+ Horse horse2 = new Horse("Ruth");
+ //when
+ Stable stable = new Stable();
+ stable.add(horse1);
+ stable.add(horse2);
+ stable.remove(horse1);
+ //then
+ Assert.assertFalse(stable.getHorseList().contains(horse1));
+ }
+
+ @Test
+ public void testImplementation() {
+ Stable stable = new Stable();
+ Assert.assertTrue(stable instanceof Shelter);
+ }
+ @Test
+ public void elementTest() {
+
+ //Given
+ Stable stable = new Stable();
+ Horse actual = stable.getObjectByName("Spoon");
+ Assert.assertNull(actual);
+ stable.add(new Horse("Spoon"));
+
+ //When
+ actual = stable.getObjectByName("Spoon");
+
+ //Then
+ Assert.assertNotNull(actual);
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/AircraftTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/AircraftTest.java
new file mode 100644
index 00000000..269c4d1f
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/AircraftTest.java
@@ -0,0 +1,35 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Froilan;
+import com.zipcodewilmington.froilansfarm.Mammal.Froilanda;
+import com.zipcodewilmington.froilansfarm.Pilot;
+import com.zipcodewilmington.froilansfarm.Rider;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.awt.*;
+
+public class AircraftTest {
+
+ @Test
+ public void constructor(){
+ Vehicle aircraft = new CropDuster<>();
+
+ Boolean actual = aircraft instanceof Vehicle;
+
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void aircraftTest(){
+ Vehicle aircraft = new CropDuster<>();
+
+ String actual = aircraft.makeNoise();
+ String expected = "Bzzzzeewwwwwwwwwww Rat-tat-tat-tat-tat";
+
+ Assert.assertEquals(expected, actual);
+ }
+
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDusterTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDusterTest.java
new file mode 100644
index 00000000..35102fc7
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDusterTest.java
@@ -0,0 +1,81 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+import com.zipcodewilmington.froilansfarm.Mammal.Froilanda;
+import com.zipcodewilmington.froilansfarm.Rider;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CropDusterTest {
+
+ @Test
+ public void constructorTest1(){
+ CropDuster duster = new CropDuster();
+
+ Boolean actual = duster instanceof Vehicle;
+
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void constructorTest2(){
+ CropDuster duster = new CropDuster();
+
+ Boolean actual = duster instanceof FarmVehicle;
+
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void constructorTest3(){
+ CropDuster duster = new CropDuster();
+
+ Boolean actual = duster instanceof Aircraft;
+
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void fertilizeTest(){
+ CropDuster duster = new CropDuster();
+ Farm farm = new Farm();
+ TomatoPlant plant = new TomatoPlant();
+ CropRow row = new CropRow();
+ row.plantCrop(plant);
+ farm.getField().add(row);
+ duster.operate(farm);
+
+ Boolean actual = plant.checkFertilized();
+
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void shootTest(){
+ Aircraft duster = new CropDuster();
+
+ String actual = duster.shoot();
+ String expected = "BULLETS";
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void rideTest(){
+ CropDuster duster = new CropDuster();
+
+ Farm farm = new Farm();
+
+ Froilanda froilanda = Froilanda.getInstance();
+ froilanda.mount(duster);
+
+ duster.ride(froilanda);
+
+ Boolean actual = duster.getPilot() != null;
+
+ Assert.assertTrue(actual);
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/TractorTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/TractorTest.java
new file mode 100644
index 00000000..71949d75
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/TractorTest.java
@@ -0,0 +1,66 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+import com.zipcodewilmington.froilansfarm.Mammal.Froilan;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TractorTest {
+
+ @Test
+ public void constructorTest1(){
+ Vehicle tractor = new Tractor();
+
+ Boolean instance = tractor instanceof Vehicle;
+
+ Assert.assertTrue(instance);
+ }
+
+ @Test
+ public void constructorTest2(){
+ Vehicle tractor = new Tractor();
+
+ Boolean instance = tractor instanceof FarmVehicle;
+
+ Assert.assertTrue(instance);
+ }
+
+ @Test
+ public void constructorMakeNoise(){
+ Vehicle tractor = new Tractor();
+
+ String actual = tractor.makeNoise();
+ String expected = "Chuggumgumgumgumgum";
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void tractorHarvestTest(){
+ Tractor tractor = new Tractor();
+
+ Farm farm = new Farm();
+ tractor.operate(farm);
+
+ Integer actual = tractor.getaList().size();
+ Integer expected = 5;
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void rideTest(){
+ Froilan froi = new Froilan();
+ Tractor tractor = new Tractor();
+
+ tractor.ride(froi);
+
+ Boolean actual = tractor.getRider() != null;
+
+ Assert.assertTrue(actual);
+ }
+
+
+}