diff --git a/pom.xml b/pom.xml
index 69a3b878..af746b18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,26 @@
com.zipcodewilmington
froilans-farm
1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 8
+
+
+
+
+
+
+ junit
+ junit
+ 4.12
+ 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..7a3ea212
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Farm.java
@@ -0,0 +1,44 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+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;
+
+public class Farm {
+ private Shelter farmhouse = new FarmHouse();
+ private Shelter stable = new Stable();
+ private Shelter chickenCoop = new ChickenCoop();
+ private Field field = new Field();
+
+ public Farm(){
+ farmhouse.add(new Farmer("Froilan"));
+ farmhouse.add(new Farmer("Froilanda"));
+ stable.add(new Horse("Fork"));
+ stable.add(new Horse("Spoon"));
+ chickenCoop.add(new Chicken("Chicolate"));
+ chickenCoop.add(new Chicken("Eggward"));
+ field.add(new CropRow());
+ field.add(new CropRow());
+ }
+
+ public Shelter getFarmhouse() {
+ return farmhouse;
+ }
+
+ public Shelter getStable() {
+ return stable;
+ }
+
+ public Shelter getChickenCoop() {
+ return chickenCoop;
+ }
+
+ public Field getField(){
+ return field;
+ }
+}
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..6e23d355
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Food/CropRow.java
@@ -0,0 +1,46 @@
+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;
+ }
+
+
+}
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..a4b44795
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Animal.java
@@ -0,0 +1,38 @@
+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.List;
+
+public abstract class Animal implements Eater, NoiseMaker {
+ private String name;
+ public List meals = new ArrayList<>();
+
+ public Animal() {
+ name = "";
+ }
+
+ 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..56b6204b
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Froilan.java
@@ -0,0 +1,18 @@
+package com.zipcodewilmington.froilansfarm.Mammal;
+
+import com.zipcodewilmington.froilansfarm.Botanist;
+import com.zipcodewilmington.froilansfarm.Food.Crop;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+
+public class Froilan extends Farmer implements Botanist {
+
+ String name;
+
+ public Froilan(String name) { super(name); }
+
+ public Froilan() { name = "Froilan"; }
+
+ public void plant(Crop crop, CropRow cropRow) {
+ cropRow.plantCrop(crop);
+ }
+}
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..c0be9987
--- /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.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;
+
+public class Froilanda extends Farmer implements Rider, Pilot {
+
+ Froilanda froilanda = new Froilanda();
+
+
+ public void eatBreakfast(EarCorn earCorn, Tomato tomato, Egg egg){
+
+ }
+
+
+
+ @Override
+ public void mount(Rideable rideable) {
+
+ }
+
+ @Override
+ public void dismount(Rideable rideable) {
+
+ }
+
+ @Override
+ public void fly() {
+
+ }
+}
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..2a3abfa2
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Mammal/Person.java
@@ -0,0 +1,42 @@
+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.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;
+ }
+
+ @Override
+ public void eat(T edible) { meals.add(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..4449563c
--- /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();
+}
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..57d3daf4
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Simulation.java
@@ -0,0 +1,73 @@
+package com.zipcodewilmington.froilansfarm;
+
+
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.EarCorn;
+import com.zipcodewilmington.froilansfarm.Mammal.Chicken;
+import com.zipcodewilmington.froilansfarm.Mammal.Farmer;
+import com.zipcodewilmington.froilansfarm.Mammal.Horse;
+import com.zipcodewilmington.froilansfarm.Mammal.Person;
+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() {
+
+
+ // Person froilan = new Farmer("Froilan");
+ // Rider froilanda = new Pilot();
+ Farm farm = new Farm();
+ Field field = new Field();
+ EarCorn earCorn = new EarCorn();
+ CropRow cropRow = new CropRow();
+ FarmVehicle tractor1 = new Tractor();
+ FarmVehicle tractor2 = new Tractor();
+ Aircraft cropDuster = new Aircraft();
+
+ Stable stable1 = new Stable();
+ Stable stable2 = new Stable();
+ Stable stable3 = new Stable();
+ ChickenCoop chickenCoop1 = new ChickenCoop();
+ ChickenCoop chickenCoop2 = new ChickenCoop();
+ ChickenCoop chickenCoop3 = new ChickenCoop();
+
+ Arrays
+ .asList("Felipe", "Oscar", "Marvey", "Lorraine", "Sally", "Lil peep")
+ .forEach(name ->chickenCoop1.add(new Chicken(name)));
+
+ Arrays
+ .asList("Eggetha Christie Dr. Bawk Chicklette Mz. Cluck".split(""))
+ .forEach(name -> chickenCoop2.add(new Chicken(name)));
+
+ Arrays
+ .asList("Harry Meghen Amantha Christephanie Henrietta".split(" "))
+ .forEach(name -> chickenCoop3.add(new Chicken(name)));
+
+ Arrays
+ .asList("Party Skips Frank Greta".split(" "))
+ .forEach(name -> stable1.add(new Horse(name)));
+
+ Arrays
+ .asList("Yorgle Tom Sarah".split(" "))
+ .forEach(name -> stable2.add(new Horse(name)));
+
+
+ Arrays
+ .asList("Harry Milo Hoovey".split(" "))
+ .forEach(name -> stable3.add(new Horse(name)));
+
+ }
+}
+
+
+// list.string.map
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..5fdc229f
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/ChickenCoop.java
@@ -0,0 +1,42 @@
+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();
+ Chicken chicken;
+
+ public ChickenCoop(Chicken chicken) {
+ this.chicken = chicken;
+ this.chickenList = chickenList;
+ }
+
+ public ChickenCoop() {
+ }
+
+ public void add(Chicken chicken) {
+ chickenList.add(chicken);
+ }
+
+ public Chicken getObjectByName(String name) {
+ for(Chicken element : chickenList) {
+ if(element.equals(name)) {
+ chicken = element;
+ }
+ }
+ return chicken;
+ }
+
+ 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..65a0b891
--- /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.Person;
+import com.zipcodewilmington.froilansfarm.Shelter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FarmHouse implements Shelter {
+
+ List personList = new ArrayList();
+ Person person;
+
+ public FarmHouse(Person person) {
+ this.person = person;
+ this.personList = personList;
+ }
+
+ public FarmHouse() {}
+
+ public void add(Person person) {
+ personList.add(person);
+ }
+
+ public Person getObjectByName(String name) {
+ for(Person element : personList) {
+ if(element.equals(name)) {
+ person = element;
+ }
+ }
+ return person;
+ }
+
+ public void remove(Person person) {
+ personList.remove(person);
+ }
+
+ public List getPersonList() {
+ return personList;
+ }
+}
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..22d058df
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Structure/Stable.java
@@ -0,0 +1,41 @@
+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();
+ Horse horse;
+
+ public Stable(Horse horse) {
+ this.horse = horse;
+ this.horseList = horseList;
+ }
+
+ public Stable() {}
+
+ public void add(Horse horse) {
+ horseList.add(horse);
+ }
+
+ public Horse getObjectByName(String name) {
+ for(Horse element : horseList) {
+ if(element.equals(name)) {
+ horse = element;
+ }
+ }
+ return horse;
+ }
+
+ 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..8bf08829
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Aircraft.java
@@ -0,0 +1,24 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Rider;
+
+public class Aircraft implements Vehicle{
+
+
+ public String makeNoise() {
+ return "Bzzzzeewwwwwwwwwww Rat-tat-tat-tat-tat";
+ }
+
+ public String shoot(){
+ return "BULLETS";
+ }
+
+ @Override
+ public void ride(Rider rider) {
+ rider = rider;
+ }
+
+ public Rider getRider() {
+ return rider;
+ }
+}
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..7c044251
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDuster.java
@@ -0,0 +1,28 @@
+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 fertilizeCrop(CropRow row){
+ row.fertilizeRow();
+ }
+
+ @Override
+ public void ride(Rider rider) {
+ this.pilot = pilot;
+ }
+
+ @Override
+ public void operate(Farm farm) {
+ for(CropRow element : farm.getField().getMyField()){
+ element.fertilizeRow();
+ }
+ }
+}
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..1f909684
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Vehicles/Tractor.java
@@ -0,0 +1,44 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Edible;
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.Crop;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+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 List getaList() {
+ return aList;
+ }
+}
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/test/java/com/zipcodewilmington/froilansfarm/Food/CropRowTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/Food/CropRowTest.java
new file mode 100644
index 00000000..f5811a03
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/Food/CropRowTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.Food;
+
+import junit.framework.TestCase;
+
+public class CropRowTest extends TestCase {
+
+}
\ No newline at end of file
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..7357610c
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/MammalTests/ChickenTest.java
@@ -0,0 +1,88 @@
+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..35acdfb9
--- /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 = new Froilan(expected);
+ String actual = froilan.getName();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetName() {
+ //given
+ String expected = "Froiland";
+ Froilan froilan = new Froilan(expected);
+ //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 = new Froilan();
+ //when
+ farmer.plant(tomatoPlant, cropRow);
+ //then
+ Assert.assertTrue(tomatoPlant.equals(cropRow.getCropById(0)));
+ }
+
+ @Test
+ public void testMakeNoise() {
+ //given
+ String expected = "Howdy";
+ //when
+ Froilan froilan = new Froilan();
+ String actual = froilan.makeNoise();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testMount() {
+ //given
+ Horse horse = new Horse();
+ Rideable expected = horse;
+ //when
+ Froilan froilan = new Froilan();
+ froilan.mount(horse);
+ Rideable actual = froilan.getIsRiding();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testDismount() {
+ //given
+ Horse horse = new Horse();
+ //when
+ Froilan froilan = new Froilan();
+ froilan.mount(horse);
+ froilan.dismount(horse);
+ //then
+ Assert.assertNull(froilan.getIsRiding());
+ }
+
+ @Test
+ public void testEat() {
+ //given
+ Froilan froilan = new Froilan();
+ //when
+ Tomato tomato = new Tomato();
+ froilan.eat(tomato);
+ froilan.getMealList();
+ //then
+ Assert.assertTrue(froilan.meals.contains(tomato));
+ }
+
+ @Test
+ public void testInheritance() {
+ Froilan froilan = new Froilan();
+ Assert.assertTrue(froilan instanceof Farmer);
+ }
+
+ @Test
+ public void testImplementationBotanist() {
+ Froilan froilan = new Froilan("Joe");
+ Assert.assertTrue(froilan instanceof Botanist);
+ }
+
+}
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..80383f25
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/ChickenCoopTest.java
@@ -0,0 +1,66 @@
+package com.zipcodewilmington.froilansfarm.StructureTests;
+
+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(chicken);
+ 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(expected);
+ 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);
+ }
+}
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..3adb2ccc
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/FarmHouseTest.java
@@ -0,0 +1,82 @@
+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(farmer);
+ 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(expected);
+ 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 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/StableTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/StableTest.java
new file mode 100644
index 00000000..4cde60c5
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/StructureTests/StableTest.java
@@ -0,0 +1,68 @@
+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(horse);
+ 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(expected);
+ 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);
+ }
+}
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..dc6daa4b
--- /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 Aircraft();
+
+ Boolean actual = aircraft instanceof Vehicle;
+
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void aircraftTest(){
+ Vehicle aircraft = new Aircraft();
+
+ 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..a482cf96
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/CropDusterTest.java
@@ -0,0 +1,64 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+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);
+ }
+
+
+}
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..76630b4c
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/Vehicles/TractorTest.java
@@ -0,0 +1,55 @@
+package com.zipcodewilmington.froilansfarm.Vehicles;
+
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Food.CropRow;
+import com.zipcodewilmington.froilansfarm.Food.TomatoPlant;
+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();
+ CropRow row = new CropRow();
+ row.plantCrop(new TomatoPlant());
+ farm.getField().add(row);
+ tractor.operate(farm);
+
+ Integer actual = tractor.getaList().size();
+ Integer expected = 1;
+
+ Assert.assertEquals(expected, actual);
+ }
+
+}