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..bc368406 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/CropRow.java @@ -0,0 +1,52 @@ +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 boolean fertilize() { + for (Crop crop : this.row) { + crop.fertilize(); + } + + return false; + } + +} 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..821fccc1 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/Farmer.java @@ -0,0 +1,38 @@ +package com.zipcodewilmington.froilansfarm; + +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 { + + public Farmer(String name) { + super(name); + } + + @Override + public void plant(CropRow cropRow, Crop crop) { + cropRow.store(crop); + } + + @Override + public void makeNoise() { + System.out.println("howdy"); + } + + @Override + public void mount(Rideable rideable) { + } + + @Override + public void dismount(Rideable rideable) { + } + + @Override + public void eat(Edible edible) { + System.out.println("yum yum"); + } + +} 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..4e9d74f7 100644 --- a/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/froilansfarm/MainApplication.java @@ -1,8 +1,77 @@ package com.zipcodewilmington.froilansfarm; +import com.zipcodewilmington.froilansfarm.animals.Chicken; +import com.zipcodewilmington.froilansfarm.animals.Horse; +import com.zipcodewilmington.froilansfarm.buildings.ChickenCoop; +import com.zipcodewilmington.froilansfarm.buildings.Stable; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; +import com.zipcodewilmington.froilansfarm.plants.Crop; +import com.zipcodewilmington.froilansfarm.plants.TomatoPlant; +import com.zipcodewilmington.froilansfarm.vehicles.Aircraft; +import com.zipcodewilmington.froilansfarm.vehicles.CropDuster; +import com.zipcodewilmington.froilansfarm.vehicles.Tractor; +import com.zipcodewilmington.froilansfarm.vehicles.Vehicle; + +import java.util.List; + /** * Created by leon on 2/26/18. */ public class MainApplication { + public static void main(String[] args) { + // Create the Chicken objects using a loop + Chicken[] chickens = new Chicken[15]; + for (int i = 0; i < chickens.length; i++) { + chickens[i] = new Chicken(); + } + + // Create the ChickenCoops using the Chicken arrays + ChickenCoop[] coops = new ChickenCoop[4]; + coops[0] = new ChickenCoop(new Chicken[] { chickens[0], chickens[1], chickens[2], chickens[3], chickens[4] }); + coops[1] = new ChickenCoop(new Chicken[] { chickens[5], chickens[6], chickens[7], chickens[8] }); + coops[2] = new ChickenCoop(new Chicken[] { chickens[9], chickens[10], chickens[11] }); + coops[3] = new ChickenCoop(new Chicken[] { chickens[12], chickens[13], chickens[14] }); + + // Created the horses objects using a loop + Horse[] horses = new Horse[10]; + for (int i = 0; i < horses.length; i++) { + horses[i] = new Horse(); + } + + // Create the Stables using the Horse arrays + Stable[] stables = new Stable[3]; + stables[0] = new Stable(List.of(new Horse[]{horses[0], horses[1], horses[2], horses[3]})); + + stables[1] = new Stable(List.of(new Horse[]{horses[4], horses[5], horses[6], horses[7]})); + stables[2] = new Stable(List.of(new Horse[]{horses[8], horses[9]})); + + Crop corn; + corn = new Crop() { + @Override + public Edible yield() { + return null; + } + }; + + Crop tomato = new TomatoPlant(); + + // Create the crop rows + CropRow rowOne = new CropRow(new Crop[] {corn}); + CropRow rowTwo = new CropRow(new Crop[] {tomato}); + CropRow rowThree = new CropRow(new Crop[] {}); + CropRow rowFour = new CropRow(new Crop[] {}); + CropRow rowFive = new CropRow(new Crop[] {}); + + // Add the crop rows to the field + Field field = new Field(new CropRow[] {rowOne, rowTwo, rowThree, rowFour, rowFive}); + + Farmer froilan = new Farmer("Froilan"); + Tractor froilansTractor = new Tractor(); + CropDuster froilansCropDuster = new CropDuster(); + Vehicle[] froilainsVehicles = { froilansTractor }; + Farmer froilanda = new Farmer("Froilanda"); + Person[] people = {froilan,froilanda}; + Aircraft cropduster = new CropDuster(); + } } 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..f2b93710 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Chicken.java @@ -0,0 +1,30 @@ +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 { + + public boolean hasBeenFertilized; + + @Override + public Edible yield() { + if(hasBeenFertilized) { + return new EdibleEgg(); + } else { + return null; + } + } + + @Override + public void eat(Edible edible) { + System.out.println("peck peck"); + } + + @Override + public void makeNoise() { + System.out.println("buck buck buckawk"); + } + +} 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..7c0add9c --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/animals/Horse.java @@ -0,0 +1,18 @@ +package com.zipcodewilmington.froilansfarm.animals; + +import com.zipcodewilmington.froilansfarm.interfaces.Edible; +import com.zipcodewilmington.froilansfarm.interfaces.Rideable; + +public class Horse extends Animal implements Rideable { + + @Override + public void eat(Edible edible) { + System.out.println("munch munch"); + } + + @Override + public void makeNoise() { + System.out.println("neigh"); + } + +} 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..4728b821 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/ChickenCoop.java @@ -0,0 +1,29 @@ +package com.zipcodewilmington.froilansfarm.buildings; + +import com.zipcodewilmington.froilansfarm.animals.Chicken; + +import java.util.ArrayList; + +public class ChickenCoop { + + Chicken[] chickenList = new ArrayList<>().toArray(new Chicken[0]); + + public ChickenCoop(Chicken[] chickenList) { + this.chickenList = chickenList; + } + + public Chicken[] getChickenList() { + return chickenList; + } + + public void setChickenList(ArrayList chickenList) { + this.chickenList = chickenList.toArray(new Chicken[0]); + } + + @Override + public String toString() { + return "ChickenCoop{" + + "chickenList=" + chickenList + + '}'; + } +} 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..47c65e64 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/buildings/Stable.java @@ -0,0 +1,36 @@ +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 void addHorse(Horse horse) { + horses.add(horse); + } + + public Stable(List horses) { + this.horses = horses; + } + + public Stable() {} + + public List getHorses() { + return horses; + } + + public void setHorses(List horses) { + this.horses = horses; + } + + @Override + public String toString() { + return "Stable{" + + "horses=" + horses + + '}'; + } +} 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..b254719e --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/days/Monday.java @@ -0,0 +1,16 @@ +package com.zipcodewilmington.froilansfarm.days; + +import com.zipcodewilmington.froilansfarm.CropRow; +import com.zipcodewilmington.froilansfarm.Farmer; +import com.zipcodewilmington.froilansfarm.Field; +import com.zipcodewilmington.froilansfarm.vehicles.CropDuster; + +public class Monday { + public static void monday(Farmer farmer, CropDuster cropDuster, Field field) { + farmer.mount(cropDuster); + cropDuster.fly(); + for(CropRow cropRow : field.getCropRows()) { + cropDuster.fertilize(cropRow); + } + } +} 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..cfeb06a2 --- /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 List tuesday(Farmer farmer, Tractor tractor, Field field) { + everyMorning(); + farmer.mount(tractor); + List yields = new ArrayList<>(); + for(CropRow cropRow : field.getCropRows()) { + for(Crop crop : cropRow.getCrops()) { + tractor.makeNoise(); + Edible yield = tractor.harvest(crop); + if (yield != null) yields.add(yield); + } + } + return yields; + } +} 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..d6309a52 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/food/Corn.java @@ -0,0 +1,6 @@ +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..451bf851 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/food/Tomato.java @@ -0,0 +1,6 @@ +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..a88ed895 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Eater.java @@ -0,0 +1,7 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface Eater { + + void 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..0b174ee9 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/NoiseMaker.java @@ -0,0 +1,7 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface NoiseMaker { + + void 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..479da3be --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Produce.java @@ -0,0 +1,7 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface Produce { + + Edible 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..b1e9e70f --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/plants/Cornstalk.java @@ -0,0 +1,20 @@ +package com.zipcodewilmington.froilansfarm.plants; + +import com.zipcodewilmington.froilansfarm.food.Corn; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class Cornstalk extends Crop { + + @Override + public Edible 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..660df38e --- /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.Tomato; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class TomatoPlant extends Crop { + + @Override + public Edible 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..94337f84 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicles/CropDuster.java @@ -0,0 +1,14 @@ +package com.zipcodewilmington.froilansfarm.vehicles; + +import com.zipcodewilmington.froilansfarm.CropRow; +import com.zipcodewilmington.froilansfarm.plants.Crop; + +public class CropDuster extends Aircraft { + + public void fertilize(CropRow cropRow) { + for(Crop crop : cropRow.getCrops()) { + crop.fertilize(); + } + } + +} 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..56ae2b01 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicles/Vehicle.java @@ -0,0 +1,13 @@ +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 void makeNoise(){ + System.out.println("Vroom Vroom"); + } + +} 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/HorseTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/animals/HorseTest.java new file mode 100644 index 00000000..102433e9 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/animals/HorseTest.java @@ -0,0 +1,34 @@ +package com.zipcodewilmington.froilansfarm.animals; + +import com.zipcodewilmington.froilansfarm.food.Corn; +import org.junit.jupiter.api.Test; + +class HorseTest { + + @Test + void eat() { + //TODO + // GIVEN + Horse horse = new Horse(); + + // WHEN + horse.eat(new Corn()); + + // THEN + // ???? + } + + @Test + void makeNoise() { + //TODO + // GIVEN + Horse horse = new Horse(); + + // WHEN + horse.makeNoise(); + + // THEN + // ???? + } + +} 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..6b1a753e --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/days/EveryMorningTest.java @@ -0,0 +1,40 @@ +package com.zipcodewilmington.froilansfarm.days; + +import com.zipcodewilmington.froilansfarm.Farmer; +import com.zipcodewilmington.froilansfarm.animals.Horse; +import com.zipcodewilmington.froilansfarm.buildings.Stable; +import org.junit.jupiter.api.Test; + +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() { + //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(); + + //put horse objects in stable + stable1.addHorse(horse1); + stable2.addHorse(horse2); + + //add food after plant classes are created + + // + + } + +} 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..6bf55785 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/days/MondayTest.java @@ -0,0 +1,53 @@ +package com.zipcodewilmington.froilansfarm.days; + +import com.zipcodewilmington.froilansfarm.CropRow; +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.CropDuster; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static com.zipcodewilmington.froilansfarm.days.Monday.monday; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class MondayTest { + + //On `Monday`, his sister, `Froilanda` uses the `CropDuster` to `fly` over the `Field` and `fertilize` each of the `CropRow` + @Test + void mondayTest() { + //GIVEN + Farmer froilanda = new Farmer("Froilanda"); + CropDuster cropDuster = new CropDuster(); + Crop corn1 = new Cornstalk(); + Crop corn2 = new Cornstalk(); + Crop corn3 = new Cornstalk(); + Crop corn4 = new Cornstalk(); + Crop tomato1 = new TomatoPlant(); + Crop tomato2 = new TomatoPlant(); + Crop tomato3 = new TomatoPlant(); + Crop tomato4 = new TomatoPlant(); + 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 field = new Field(Arrays.asList(cropRow1, cropRow2, cropRow3, cropRow4)); + + //WHEN + monday(froilanda, cropDuster, field); + + // Assertions + assertTrue(corn1.isFertilized()); + assertTrue(corn2.isFertilized()); + assertTrue(corn3.isFertilized()); + assertTrue(corn4.isFertilized()); + assertTrue(tomato1.isFertilized()); + assertTrue(tomato2.isFertilized()); + assertTrue(tomato3.isFertilized()); + assertTrue(tomato4.isFertilized()); + } + +} 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..03ad63dc --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/days/TuesdayTest.java @@ -0,0 +1,75 @@ +package com.zipcodewilmington.froilansfarm.days; + +import com.zipcodewilmington.froilansfarm.CropRow; +import com.zipcodewilmington.froilansfarm.Farmer; +import com.zipcodewilmington.froilansfarm.Field; +import com.zipcodewilmington.froilansfarm.food.Corn; +import com.zipcodewilmington.froilansfarm.food.Tomato; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; +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.assertEquals; +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)); + + //WHEN + List result1 = tuesday(farmer, tractor, field1); + List expected1 = List.of(new Corn(), new Corn(), new Corn()); + List result2 = tuesday(farmer, tractor, field2); + List expected2 = List.of(new Tomato(), new Tomato(), new Tomato()); + + //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()); + assertEquals(result1.size(), expected1.size()); + assertTrue(result1.get(0) instanceof Corn); + assertTrue(result1.get(1) instanceof Corn); + assertTrue(result1.get(2) instanceof Corn); + assertEquals(result2.size(), expected2.size()); + assertTrue(result2.get(0) instanceof Tomato); + assertTrue(result2.get(1) instanceof Tomato); + assertTrue(result2.get(2) instanceof Tomato); + } + +} 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/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 + } + +}