diff --git a/.gitignore b/.gitignore
index 95abee5d..6929df67 100644
--- a/.gitignore
+++ b/.gitignore
@@ -103,4 +103,8 @@ target/*
.project
.classpath
-.settings
\ No newline at end of file
+.settings
+
+# other
+.idea
+.DS_STORE
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 69a3b878..ab263c7f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,5 +8,19 @@
froilans-farm
1.0-SNAPSHOT
+
+ 19
+ 19
+ 19
+
-
\ No newline at end of file
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.9.3
+ test
+
+
+
+
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/CropRow.java b/src/main/java/com/zipcodewilmington/froilansfarm/CropRow.java
new file mode 100644
index 00000000..1311ef8a
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/CropRow.java
@@ -0,0 +1,49 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.plants.Crop;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+public class CropRow {
+
+ private final List row = new LinkedList<>();
+
+ public CropRow() {}
+
+ public CropRow(Crop crop) {
+ this.row.add(crop);
+ }
+
+ public CropRow(Crop[] crops) {
+ this.row.addAll(Arrays.asList(crops));
+ }
+
+ public CropRow(List crops) {
+ this.row.addAll(crops);
+ }
+
+ public List getCrops() {
+ return this.row;
+ }
+
+ public void store(Crop crop) {
+ this.row.add(crop);
+ }
+
+ public void store(Crop[] crops) {
+ this.row.addAll(Arrays.asList(crops));
+ }
+
+ public void store(List crops) {
+ this.row.addAll(crops);
+ }
+
+ public void fertilize() {
+ for (Crop crop : this.row) {
+ crop.fertilize();
+ }
+ }
+
+}
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..31824f48
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Farm.java
@@ -0,0 +1,26 @@
+package com.zipcodewilmington.froilansfarm;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Farm {
+
+ private List fields = new ArrayList<>();
+
+ public Farm(List fields) {
+ this.fields.addAll(fields);
+ }
+
+ public Farm(Field field) {
+ this.fields.add(field);
+ }
+
+ public List getFields() {
+ return this.fields;
+ }
+
+ public void addFields(Field... fields) {
+ this.fields.addAll(List.of(fields));
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Farmer.java b/src/main/java/com/zipcodewilmington/froilansfarm/Farmer.java
new file mode 100644
index 00000000..c3186b8d
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Farmer.java
@@ -0,0 +1,68 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.animals.Horse;
+import com.zipcodewilmington.froilansfarm.food.Corn;
+import com.zipcodewilmington.froilansfarm.interfaces.Botanist;
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+import com.zipcodewilmington.froilansfarm.interfaces.Rideable;
+import com.zipcodewilmington.froilansfarm.interfaces.Rider;
+import com.zipcodewilmington.froilansfarm.plants.Crop;
+
+public class Farmer extends Person implements Botanist, Rider {
+
+ //new changes
+ private int cornCount;
+ private int tomatoCount;
+ private int eggCount;
+
+
+
+ public Farmer(String name) {
+ super(name);
+ }
+
+ @Override
+ public void plant(CropRow cropRow, Crop crop) {
+ cropRow.store(crop);
+ }
+
+ @Override
+ public String makeNoise() {
+ System.out.println("howdy");
+ return null;
+ }
+
+ @Override
+ public void mount(Rideable rideable) {
+ }
+
+ @Override
+ public void dismount(Rideable rideable) {
+ }
+
+ @Override
+ public String eat(Edible edible) {
+ System.out.println("yum yum");
+ return null;
+ }
+
+
+ //new changes
+ public void feedHorse(Horse horse, Corn corn) {
+ for (int i = 0; i < 3; i++){
+ horse.eat(corn);
+ }
+ }
+
+ public int getCornCount() {
+ return cornCount;
+ }
+
+ public int getTomatoCount() {
+ return tomatoCount;
+ }
+
+ public int getEggCount() {
+ return eggCount;
+ }
+}
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..30a1692c
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Field.java
@@ -0,0 +1,41 @@
+package com.zipcodewilmington.froilansfarm;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+public class Field {
+
+ private final List cropRows = new LinkedList<>();
+
+ public Field() {}
+
+ public Field(CropRow croprow) {
+ this.cropRows.add(croprow);
+ }
+
+ public Field(CropRow[] cropRows) {
+ this.cropRows.addAll(Arrays.asList(cropRows));
+ }
+
+ public Field(List cropRows) {
+ this.cropRows.addAll(cropRows);
+ }
+
+ public List getCropRows() {
+ return this.cropRows;
+ }
+
+ public void store(CropRow cropRow) {
+ this.cropRows.add(cropRow);
+ }
+
+ public void store(CropRow[] cropRows) {
+ this.cropRows.addAll(Arrays.asList(cropRows));
+ }
+
+ public void store(List cropRows) {
+ this.cropRows.addAll(cropRows);
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java b/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java
index fd743ffc..27c35334 100644
--- a/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java
@@ -4,5 +4,7 @@
* Created by leon on 2/26/18.
*/
public class MainApplication {
-
+ public static void main(String[] args) {
+ //TODO
+ }
}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/Person.java b/src/main/java/com/zipcodewilmington/froilansfarm/Person.java
new file mode 100644
index 00000000..2f823ebb
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/Person.java
@@ -0,0 +1,14 @@
+package com.zipcodewilmington.froilansfarm;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Eater;
+import com.zipcodewilmington.froilansfarm.interfaces.NoiseMaker;
+
+public abstract class Person implements Eater, NoiseMaker {
+
+ public String name;
+
+ public Person(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/animals/Animal.java b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Animal.java
new file mode 100644
index 00000000..b8854a2d
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Animal.java
@@ -0,0 +1,8 @@
+package com.zipcodewilmington.froilansfarm.animals;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Eater;
+import com.zipcodewilmington.froilansfarm.interfaces.NoiseMaker;
+
+public abstract class Animal implements Eater, NoiseMaker {
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/animals/Chicken.java b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Chicken.java
new file mode 100644
index 00000000..4a2be1f4
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Chicken.java
@@ -0,0 +1,37 @@
+package com.zipcodewilmington.froilansfarm.animals;
+
+import com.zipcodewilmington.froilansfarm.food.EdibleEgg;
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+import com.zipcodewilmington.froilansfarm.interfaces.Produce;
+
+public class Chicken extends Animal implements Produce {
+
+ private String chickenPeck ="peck peck";
+ private String chickenBuck ="buck buck buckawk";
+ public boolean hasBeenFertilized;
+
+
+
+ @Override
+ public EdibleEgg yield() {
+ if(hasBeenFertilized) {
+ return new EdibleEgg();
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public String eat(Edible edible) {
+ System.out.println(chickenPeck);
+ return chickenPeck;
+ }
+
+
+ @Override
+ public String makeNoise() {
+ System.out.println(chickenBuck);
+ return chickenBuck;
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/animals/Horse.java b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Horse.java
new file mode 100644
index 00000000..5bd61db7
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Horse.java
@@ -0,0 +1,22 @@
+package com.zipcodewilmington.froilansfarm.animals;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+import com.zipcodewilmington.froilansfarm.interfaces.Rideable;
+
+public class Horse extends Animal implements Rideable {
+
+ private String horseMunch ="munch munch";
+ private String horseNeigh ="neigh";
+ @Override
+ public String eat(Edible edible) {
+ System.out.println(horseMunch);
+ return horseMunch;
+ }
+
+ @Override
+ public String makeNoise() {
+ System.out.println(horseNeigh);
+ return horseNeigh;
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/buildings/ChickenCoop.java b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/ChickenCoop.java
new file mode 100644
index 00000000..c3c9688b
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/ChickenCoop.java
@@ -0,0 +1,11 @@
+package com.zipcodewilmington.froilansfarm.buildings;
+
+import com.zipcodewilmington.froilansfarm.animals.Chicken;
+
+import java.util.ArrayList;
+
+public class ChickenCoop {
+
+ ArrayList chickenList = new ArrayList<>();
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/buildings/FarmHouse.java b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/FarmHouse.java
new file mode 100644
index 00000000..f9e44c93
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/FarmHouse.java
@@ -0,0 +1,11 @@
+package com.zipcodewilmington.froilansfarm.buildings;
+
+import com.zipcodewilmington.froilansfarm.Person;
+
+import java.util.ArrayList;
+
+public class FarmHouse {
+
+ ArrayList peopleList = new ArrayList<>();
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/buildings/Stable.java b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/Stable.java
new file mode 100644
index 00000000..d1ba0d32
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/Stable.java
@@ -0,0 +1,17 @@
+package com.zipcodewilmington.froilansfarm.buildings;
+
+import com.zipcodewilmington.froilansfarm.animals.Horse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Stable {
+
+ private List horses = new ArrayList<>();
+
+ public boolean addHorse(Horse horse) {
+ horses.add(horse);
+ return true;
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/days/EveryMorning.java b/src/main/java/com/zipcodewilmington/froilansfarm/days/EveryMorning.java
new file mode 100644
index 00000000..47db8dd0
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/days/EveryMorning.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.days;
+
+public class EveryMorning {
+ public static void everyMorning() {
+ //TODO
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/days/Monday.java b/src/main/java/com/zipcodewilmington/froilansfarm/days/Monday.java
new file mode 100644
index 00000000..2b85f1da
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/days/Monday.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.days;
+
+public class Monday {
+ public static void monday() {
+ //TODO
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/days/Tuesday.java b/src/main/java/com/zipcodewilmington/froilansfarm/days/Tuesday.java
new file mode 100644
index 00000000..c194e777
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/days/Tuesday.java
@@ -0,0 +1,30 @@
+package com.zipcodewilmington.froilansfarm.days;
+
+import com.zipcodewilmington.froilansfarm.CropRow;
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Farmer;
+import com.zipcodewilmington.froilansfarm.Field;
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+import com.zipcodewilmington.froilansfarm.plants.Crop;
+import com.zipcodewilmington.froilansfarm.vehicles.Tractor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.zipcodewilmington.froilansfarm.days.EveryMorning.everyMorning;
+
+public class Tuesday {
+ public static void tuesday(Farmer farmer, Tractor tractor, Farm farm) {
+ everyMorning();
+ farmer.mount(tractor);
+ List yields = new ArrayList<>();
+ for(Field field : farm.getFields()) {
+ for(CropRow cropRow : field.getCropRows()) {
+ for(Crop crop : cropRow.getCrops()) {
+ tractor.makeNoise();
+ yields.add(tractor.harvest(crop));
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/food/Corn.java b/src/main/java/com/zipcodewilmington/froilansfarm/food/Corn.java
new file mode 100644
index 00000000..009bef63
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/food/Corn.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.food;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+
+public class Corn implements Edible {
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/food/EdibleEgg.java b/src/main/java/com/zipcodewilmington/froilansfarm/food/EdibleEgg.java
new file mode 100644
index 00000000..212780fb
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/food/EdibleEgg.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.food;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+
+public class EdibleEgg implements Edible {
+
+}
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..c2500232
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/food/Tomato.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.food;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+
+public class Tomato implements Edible {
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Botanist.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Botanist.java
new file mode 100644
index 00000000..7956e5c4
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Botanist.java
@@ -0,0 +1,10 @@
+package com.zipcodewilmington.froilansfarm.interfaces;
+
+import com.zipcodewilmington.froilansfarm.CropRow;
+import com.zipcodewilmington.froilansfarm.plants.Crop;
+
+public interface Botanist {
+
+ void plant(CropRow cropRow, Crop crop);
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Eater.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Eater.java
new file mode 100644
index 00000000..fac3989e
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Eater.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.interfaces;
+
+public interface Eater {
+
+ String eat(Edible edible);
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Edible.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Edible.java
new file mode 100644
index 00000000..96c36393
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Edible.java
@@ -0,0 +1,5 @@
+package com.zipcodewilmington.froilansfarm.interfaces;
+
+public interface Edible {
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/NoiseMaker.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/NoiseMaker.java
new file mode 100644
index 00000000..82cb0f3b
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/NoiseMaker.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.interfaces;
+
+public interface NoiseMaker {
+
+ String makeNoise();
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Produce.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Produce.java
new file mode 100644
index 00000000..2389c614
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Produce.java
@@ -0,0 +1,9 @@
+package com.zipcodewilmington.froilansfarm.interfaces;
+
+import com.zipcodewilmington.froilansfarm.food.EdibleEgg;
+
+public interface Produce {
+
+ EdibleEgg yield();
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rideable.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rideable.java
new file mode 100644
index 00000000..e0428efd
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rideable.java
@@ -0,0 +1,5 @@
+package com.zipcodewilmington.froilansfarm.interfaces;
+
+public interface Rideable {
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rider.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rider.java
new file mode 100644
index 00000000..fc6f6588
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rider.java
@@ -0,0 +1,9 @@
+package com.zipcodewilmington.froilansfarm.interfaces;
+
+public interface Rider {
+
+ void mount(Rideable rideable);
+
+ void dismount(Rideable rideable);
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/plants/Cornstalk.java b/src/main/java/com/zipcodewilmington/froilansfarm/plants/Cornstalk.java
new file mode 100644
index 00000000..9de454fd
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/plants/Cornstalk.java
@@ -0,0 +1,21 @@
+package com.zipcodewilmington.froilansfarm.plants;
+
+import com.zipcodewilmington.froilansfarm.food.Corn;
+import com.zipcodewilmington.froilansfarm.food.EdibleEgg;
+
+
+public class Cornstalk extends Crop {
+
+ @Override
+ public EdibleEgg yield() {
+ if(isFertilized() && !isHarvested()) {
+ this.harvest();
+ return new Corn();
+ }
+ else {
+ this.harvest();
+ return null;
+ }
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/plants/Crop.java b/src/main/java/com/zipcodewilmington/froilansfarm/plants/Crop.java
new file mode 100644
index 00000000..bc772d25
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/plants/Crop.java
@@ -0,0 +1,31 @@
+package com.zipcodewilmington.froilansfarm.plants;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Produce;
+
+public abstract class Crop implements Produce {
+
+ private boolean harvested;
+ private boolean fertilized;
+
+ public Crop() {
+ this.harvested = false;
+ this.fertilized = false;
+ }
+
+ public void fertilize() {
+ this.fertilized = true;
+ }
+
+ public void harvest() {
+ this.harvested = true;
+ }
+
+ public boolean isFertilized() {
+ return fertilized;
+ }
+
+ public boolean isHarvested() {
+ return harvested;
+ }
+
+}
diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/plants/TomatoPlant.java b/src/main/java/com/zipcodewilmington/froilansfarm/plants/TomatoPlant.java
new file mode 100644
index 00000000..44ea11de
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/plants/TomatoPlant.java
@@ -0,0 +1,20 @@
+package com.zipcodewilmington.froilansfarm.plants;
+
+import com.zipcodewilmington.froilansfarm.food.EdibleEgg;
+import com.zipcodewilmington.froilansfarm.food.Tomato;
+
+public class TomatoPlant extends Crop {
+
+ @Override
+ public EdibleEgg yield() {
+ if(isFertilized() && !isHarvested()) {
+ this.harvest();
+ return new Tomato();
+ }
+ else {
+ this.harvest();
+ return null;
+ }
+ }
+
+}
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..cf1e13af
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicles/Aircraft.java
@@ -0,0 +1,9 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Rideable;
+
+public class Aircraft implements Rideable {
+
+ public void fly() {}
+
+}
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..2edc4be2
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicles/CropDuster.java
@@ -0,0 +1,8 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+public class CropDuster extends Aircraft {
+
+ //TODO
+ public void fertilize(/*CropRow cropRow*/) {}
+
+}
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..c7951f8b
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicles/FarmVehicle.java
@@ -0,0 +1,4 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+public class FarmVehicle extends Vehicle {
+}
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..4f46b5b3
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicles/Tractor.java
@@ -0,0 +1,12 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+import com.zipcodewilmington.froilansfarm.plants.Crop;
+
+public class Tractor extends FarmVehicle {
+
+ public Edible harvest(Crop crop) {
+ return crop.yield();
+ }
+
+}
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..b59ccd5b
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicles/Vehicle.java
@@ -0,0 +1,14 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import com.zipcodewilmington.froilansfarm.interfaces.NoiseMaker;
+import com.zipcodewilmington.froilansfarm.interfaces.Rideable;
+
+public class Vehicle implements Rideable, NoiseMaker {
+
+ @Override
+ public String makeNoise(){
+ System.out.println("Vroom Vroom");
+ return null;
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/EdibleEggTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/EdibleEggTest.java
new file mode 100644
index 00000000..000b3e17
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/EdibleEggTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm;
+
+import org.junit.jupiter.api.Test;
+
+class EdibleEggTest {
+
+}
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..2dcc5708
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FarmTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm;
+
+import org.junit.jupiter.api.Test;
+
+class FarmTest {
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/FarmerTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/FarmerTest.java
new file mode 100644
index 00000000..51a76da8
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/FarmerTest.java
@@ -0,0 +1,32 @@
+package com.zipcodewilmington.froilansfarm;
+
+import org.junit.jupiter.api.Test;
+
+class FarmerTest {
+
+ @Test
+ void plant() {
+ //TODO
+ }
+
+ @Test
+ void makeNoise() {
+ //TODO
+ }
+
+ @Test
+ void mount() {
+ //TODO
+ }
+
+ @Test
+ void dismount() {
+ //TODO
+ }
+
+ @Test
+ void eat() {
+ //TODO
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/animals/AnimalTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/animals/AnimalTest.java
new file mode 100644
index 00000000..8577486b
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/animals/AnimalTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.animals;
+
+import org.junit.jupiter.api.Test;
+
+class AnimalTest {
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/animals/ChickenTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/animals/ChickenTest.java
new file mode 100644
index 00000000..42e55be4
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/animals/ChickenTest.java
@@ -0,0 +1,68 @@
+package com.zipcodewilmington.froilansfarm.animals;
+
+import com.zipcodewilmington.froilansfarm.food.Corn;
+import com.zipcodewilmington.froilansfarm.food.EdibleEgg;
+import com.zipcodewilmington.froilansfarm.interfaces.Edible;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class ChickenTest {
+
+ @Test
+ void isChickenFertilized(){
+ //TODO
+
+ // GIVEN
+ Chicken chicken = new Chicken();
+ // WHEN
+ boolean isFertilized = chicken.hasBeenFertilized;
+ // THEN
+ assertEquals(false, isFertilized);
+ }
+
+ @Test
+ void isYielded(){
+ //TODO
+
+ // GIVEN
+ Chicken chicken = new Chicken();
+ EdibleEgg egg1 = new EdibleEgg();
+ // WHEN
+ Edible e = chicken.yield();
+ // THEN
+ assertEquals(false, e);
+ }
+
+
+ @Test
+ void printsCorrectStringWhenChickenEats() {
+ //TODO
+
+ // GIVEN
+ Chicken chicken = new Chicken();
+
+ // WHEN
+ String consume = chicken.eat(new Corn());
+
+ // THEN
+ assertEquals("peck peck", consume);
+ }
+
+ @Test
+ void printsCorrectStringWhenChickenMakesNoise() {
+ //TODO
+
+ // GIVEN
+ Chicken chicken = new Chicken();
+
+ // WHEN
+ String noise = chicken.makeNoise();
+
+ // THEN
+ assertEquals("buck buck buckawk", noise);
+
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/animals/HorseTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/animals/HorseTest.java
new file mode 100644
index 00000000..00506dc5
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/animals/HorseTest.java
@@ -0,0 +1,39 @@
+package com.zipcodewilmington.froilansfarm.animals;
+
+import com.zipcodewilmington.froilansfarm.food.Corn;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class HorseTest {
+
+ @Test
+ void printsCorrectStringWhenHorseEats() {
+ //TODO
+
+ // GIVEN
+ Horse horse = new Horse();
+
+ // WHEN
+
+ String consume = horse.eat(new Corn());
+
+ // THEN
+ assertEquals("munch munch", consume);
+ }
+
+ @Test
+ void printsCorrectStringWhenHorseMakesNoise() {
+ //TODO
+
+ // GIVEN
+ Horse horse = new Horse();
+
+ // WHEN
+ String noise = horse.makeNoise();
+
+ // THEN
+ assertEquals("neigh", noise);
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/buildings/ChickenCoopTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/buildings/ChickenCoopTest.java
new file mode 100644
index 00000000..cf323b83
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/buildings/ChickenCoopTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.buildings;
+
+import org.junit.jupiter.api.Test;
+
+class ChickenCoopTest {
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/buildings/FarmHouseTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/buildings/FarmHouseTest.java
new file mode 100644
index 00000000..fbaaaab6
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/buildings/FarmHouseTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.buildings;
+
+import org.junit.jupiter.api.Test;
+
+class FarmHouseTest {
+
+}
\ No newline at end of file
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/buildings/StableTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/buildings/StableTest.java
new file mode 100644
index 00000000..7001a6f6
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/buildings/StableTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.buildings;
+
+import org.junit.jupiter.api.Test;
+
+class StableTest {
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/days/EveryMorningTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/days/EveryMorningTest.java
new file mode 100644
index 00000000..e5ddd14c
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/days/EveryMorningTest.java
@@ -0,0 +1,101 @@
+package com.zipcodewilmington.froilansfarm.days;
+
+import com.zipcodewilmington.froilansfarm.Farmer;
+import com.zipcodewilmington.froilansfarm.animals.Horse;
+import com.zipcodewilmington.froilansfarm.buildings.Stable;
+import com.zipcodewilmington.froilansfarm.food.Corn;
+import com.zipcodewilmington.froilansfarm.food.EdibleEgg;
+import com.zipcodewilmington.froilansfarm.food.Tomato;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class EveryMorningTest {
+
+
+ // * Every morning, `Froilan` and `Froilanda` begin their morning by
+ // * Riding each `Horse` in each `Stable`.
+ // * Feeding each `Horse` 3 ear of `Corn`.
+ // * For breakfast,
+ // * `Froilan` eats 1 `EarCorn`, 2 `Tomoato`, and 5 `Egg`.
+ // * `Froilanda` eats 2 `EarCorn`, 1 `Tomoato`, and 2 `Egg`.
+
+ @Test
+ void everyMorning() {
+ //TODO
+ //GIVEN
+ Farmer farmer = new Farmer("Froilan");
+ Farmer farmer2 = new Farmer("Froilanda");
+
+ Horse horse1 = new Horse();
+ Horse horse2 = new Horse();
+
+ Stable stable1 = new Stable();
+ Stable stable2 = new Stable();
+
+ Corn corn1 = new Corn();
+ Corn corn2 = new Corn();
+ Corn corn3 = new Corn();
+ Corn corn4 = new Corn();
+ Corn corn5 = new Corn();
+ Corn corn6 = new Corn();
+ Corn corn7 = new Corn();
+ Corn corn8 = new Corn();
+ Corn corn9 = new Corn();
+
+ Tomato tomato1 = new Tomato();
+ Tomato tomato2 = new Tomato();
+ Tomato tomato3 = new Tomato();
+
+ EdibleEgg egg1 = new EdibleEgg();
+ EdibleEgg egg2 = new EdibleEgg();
+ EdibleEgg egg3 = new EdibleEgg();
+ EdibleEgg egg4 = new EdibleEgg();
+ EdibleEgg egg5 = new EdibleEgg();
+ EdibleEgg egg6 = new EdibleEgg();
+ EdibleEgg egg7 = new EdibleEgg();
+
+ boolean inStable1 = stable1.addHorse(horse1);
+ boolean inStable2 = stable2.addHorse(horse2);
+ assertTrue(inStable1);
+ assertTrue(inStable2);
+
+ //WHEN
+ farmer.mount(horse1);
+ farmer2.mount(horse2);
+
+ farmer.feedHorse(horse1, corn1);
+ farmer.feedHorse(horse2, corn2);
+ farmer.feedHorse(horse1, corn3);
+ farmer.feedHorse(horse2, corn4);
+ farmer.feedHorse(horse1, corn5);
+ farmer.feedHorse(horse2, corn6);
+
+ farmer.eat(corn1);
+ farmer.eat(tomato1);
+ farmer.eat(tomato2);
+ farmer.eat(egg1);
+ farmer.eat(egg2);
+ farmer.eat(egg3);
+ farmer.eat(egg4);
+ farmer.eat(egg5);
+
+ farmer2.eat(corn2);
+ farmer2.eat(corn3);
+ farmer2.eat(tomato3);
+ farmer2.eat(egg6);
+ farmer2.eat(egg7);
+
+ //THEN
+ assertEquals(1, farmer.getCornCount());
+ assertEquals(2, farmer.getTomatoCount());
+ assertEquals(5, farmer.getEggCount());
+ assertEquals(2, farmer2.getCornCount());
+ assertEquals(1, farmer2.getTomatoCount());
+ assertEquals(2, farmer2.getEggCount());
+
+
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/days/MondayTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/days/MondayTest.java
new file mode 100644
index 00000000..4e5ea6ec
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/days/MondayTest.java
@@ -0,0 +1,24 @@
+package com.zipcodewilmington.froilansfarm.days;
+
+import com.zipcodewilmington.froilansfarm.Farmer;
+import com.zipcodewilmington.froilansfarm.vehicles.CropDuster;
+import com.zipcodewilmington.froilansfarm.vehicles.Vehicle;
+import org.junit.jupiter.api.Test;
+
+class MondayTest {
+
+ //On `Monday`, his sister, `Froilanda` uses the `CropDuster` to `fly` over the `Field` and `fertilize` each of the `CropRow`
+ @Test
+ void mondayTest() {
+ //TODO
+ Farmer farmer1 = new Farmer("Froilanda");
+ CropDuster cropDuster1 = new CropDuster();
+
+ //fly method
+
+ //fertilize(cropRow crop) method
+
+
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/days/SundayTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/days/SundayTest.java
new file mode 100644
index 00000000..4148cd8e
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/days/SundayTest.java
@@ -0,0 +1,17 @@
+package com.zipcodewilmington.froilansfarm.days;
+
+import com.zipcodewilmington.froilansfarm.Farmer;
+import org.junit.jupiter.api.Test;
+
+public class SundayTest {
+
+ //`Sunday`, `Froilan` plants 3 different type of `Crop` in his first, second, and third `CropRow`.
+ @Test
+ void sundayTest(){
+ //TODO
+ Farmer farmer1 = new Farmer("Froilan");
+
+
+
+ }
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/days/TuesdayTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/days/TuesdayTest.java
new file mode 100644
index 00000000..98b40118
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/days/TuesdayTest.java
@@ -0,0 +1,62 @@
+package com.zipcodewilmington.froilansfarm.days;
+
+import com.zipcodewilmington.froilansfarm.CropRow;
+import com.zipcodewilmington.froilansfarm.Farm;
+import com.zipcodewilmington.froilansfarm.Farmer;
+import com.zipcodewilmington.froilansfarm.Field;
+import com.zipcodewilmington.froilansfarm.plants.Cornstalk;
+import com.zipcodewilmington.froilansfarm.plants.Crop;
+import com.zipcodewilmington.froilansfarm.plants.TomatoPlant;
+import com.zipcodewilmington.froilansfarm.vehicles.Tractor;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static com.zipcodewilmington.froilansfarm.days.Tuesday.tuesday;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class TuesdayTest {
+
+ @Test
+ void tuesdayTest() {
+ //GIVEN
+ Farmer farmer = new Farmer("Froilan");
+ Tractor tractor = new Tractor();
+ Crop corn1 = new Cornstalk();
+ corn1.fertilize();
+ Crop corn2 = new Cornstalk();
+ corn2.fertilize();
+ Crop corn3 = new Cornstalk();
+ corn3.fertilize();
+ Crop corn4 = new Cornstalk();
+ Crop tomato1 = new TomatoPlant();
+ Crop tomato2 = new TomatoPlant();
+ tomato2.fertilize();
+ Crop tomato3 = new TomatoPlant();
+ tomato3.fertilize();
+ Crop tomato4 = new TomatoPlant();
+ tomato4.fertilize();
+ CropRow cropRow1 = new CropRow(Arrays.asList(corn1, corn2));
+ CropRow cropRow2 = new CropRow(Arrays.asList(corn3, corn4));
+ CropRow cropRow3 = new CropRow(Arrays.asList(tomato1, tomato2));
+ CropRow cropRow4 = new CropRow(Arrays.asList(tomato3, tomato4));
+ Field field1 = new Field(Arrays.asList(cropRow1, cropRow2));
+ Field field2 = new Field(Arrays.asList(cropRow3, cropRow4));
+ Farm farm = new Farm(List.of(field1, field2));
+
+ //WHEN
+ tuesday(farmer, tractor, farm);
+
+ //THEN
+ assertTrue(corn1.isHarvested());
+ assertTrue(corn2.isHarvested());
+ assertTrue(corn3.isHarvested());
+ assertTrue(corn4.isHarvested());
+ assertTrue(tomato1.isHarvested());
+ assertTrue(tomato2.isHarvested());
+ assertTrue(tomato3.isHarvested());
+ assertTrue(tomato4.isHarvested());
+ }
+
+}
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..217ac499
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/AircraftTest.java
@@ -0,0 +1,12 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import org.junit.jupiter.api.Test;
+
+class AircraftTest {
+
+ @Test
+ void fly() {
+ //TODO
+ }
+
+}
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..923470aa
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/CropDusterTest.java
@@ -0,0 +1,12 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import org.junit.jupiter.api.Test;
+
+class CropDusterTest {
+
+ @Test
+ void fertilize() {
+ //TODO
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/FarmVehicleTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/FarmVehicleTest.java
new file mode 100644
index 00000000..fe4e1b6a
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/FarmVehicleTest.java
@@ -0,0 +1,7 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import org.junit.jupiter.api.Test;
+
+class FarmVehicleTest {
+
+}
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..da267c39
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/TractorTest.java
@@ -0,0 +1,12 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import org.junit.jupiter.api.Test;
+
+class TractorTest {
+
+ @Test
+ void harvest() {
+ //TODO
+ }
+
+}
diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/VehicleTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/VehicleTest.java
new file mode 100644
index 00000000..fca85595
--- /dev/null
+++ b/src/test/java/com/zipcodewilmington/froilansfarm/vehicles/VehicleTest.java
@@ -0,0 +1,12 @@
+package com.zipcodewilmington.froilansfarm.vehicles;
+
+import org.junit.jupiter.api.Test;
+
+class VehicleTest {
+
+ @Test
+ void makeNoise() {
+ //TODO
+ }
+
+}