From ba97b13844654b848a2667b7962530dc161bdd85 Mon Sep 17 00:00:00 2001 From: Yafiaha Date: Fri, 1 Nov 2024 17:02:58 +0000 Subject: [PATCH 1/3] Feat: Yafiah Lesson-16 HorseStable Object & Test --- .../lesson16/HorseStable/HorseStable.java | 74 +++++++++++++++++++ .../HorseStable/StableFullException.java | 7 ++ .../HorseStableTest/HorseStableTest.java | 59 +++++++++++++++ 3 files changed, 140 insertions(+) create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java create mode 100644 lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java new file mode 100644 index 000000000..4493ce5f7 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java @@ -0,0 +1,74 @@ +package com.codedifferently.lesson16.HorseStable; + +import java.util.ArrayList; +import java.util.List; + +public class HorseStable { + + public enum StableType { + PRIVATE, + COMMERCIAL, + RACE, + SHOW + } + + private final String name; + private final String location; + private final int capacity; + private final StableType stableType; + private final List horses; + + // constructur + public HorseStable(String name, String location, int capacity, StableType stableType) { + this.name = name; + this.location = location; + this.capacity = capacity; + this.stableType = stableType; + this.horses = new ArrayList<>(); + } + + // getters & setters + public String getName() { + return name; + } + + public String getLocation() { + return location; + } + + public int getCapacity() { + return capacity; + } + + public StableType getStableType() { + return stableType; + } + + public List getHorses() { + return horses; + } + + // methods + public String stableFull() { + if (horses.size() >= capacity) { + return "The stable is full. Cannot add more horses."; + } else { + return "Space available in the stable."; + } + } + + public void addHorse(String horseName) throws StableFullException { + if (horses.size() >= capacity) { + throw new StableFullException("Cannot add horse: stable is at full capacity!"); + } + horses.add(horseName); + } + + public void displayHorses() { + if (horses.isEmpty()) { + System.out.println("No horses in the stable."); + return; + } + System.out.println("There are " + horses.size() + " horses in " + name + "."); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java new file mode 100644 index 000000000..20f622de5 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java @@ -0,0 +1,7 @@ +package com.codedifferently.lesson16.HorseStable; + +public class StableFullException extends Exception { + public StableFullException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java new file mode 100644 index 000000000..b8b43c9b5 --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java @@ -0,0 +1,59 @@ +package com.codedifferently.lesson16.HorseStableTest; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.codedifferently.lesson16.HorseStable.HorseStable; +import com.codedifferently.lesson16.HorseStable.StableFullException; + +public class HorseStableTest { + private HorseStable stable; + + @BeforeEach + public void setUp() { + stable = new HorseStable("Sunny Acres", "California", 2, HorseStable.StableType.PRIVATE); + } + + @Test + public void testStableCreation() { + assertEquals("Sunny Acres", stable.getName()); + assertEquals("California", stable.getLocation()); + assertEquals(2, stable.getCapacity()); + assertEquals(HorseStable.StableType.PRIVATE, stable.getStableType()); + } + + @Test + public void testAddHorse_Success() throws StableFullException { + stable.addHorse("Spirit"); + stable.addHorse("Shadow"); + + assertEquals(2, stable.getHorses().size()); + } + + @Test + public void testDisplayHorses_NoHorses() { + stable.displayHorses(); + } + + @Test + public void testDisplayHorses_WithHorses() throws StableFullException { + stable.addHorse("Spirit"); + stable.addHorse("Shadow"); + stable.displayHorses(); + } + + @Test + public void testStableFullMessage() throws StableFullException { + stable.addHorse("Spirit"); + stable.addHorse("Shadow"); + + assertEquals("The stable is full. Cannot add more horses.", stable.stableFull()); + } + + @Test + public void testSpaceAvailableMessage() { + assertEquals("Space available in the stable.", stable.stableFull()); + } +} From 582be8629405a1b8b2a4bcbeee429ec1f906102b Mon Sep 17 00:00:00 2001 From: Yafiaha Date: Fri, 1 Nov 2024 15:37:03 -0400 Subject: [PATCH 2/3] fix-up --- .../lesson16/HorseStableTest/HorseStableTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java index b8b43c9b5..18fe990e3 100644 --- a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java @@ -2,11 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - import com.codedifferently.lesson16.HorseStable.HorseStable; import com.codedifferently.lesson16.HorseStable.StableFullException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class HorseStableTest { private HorseStable stable; @@ -34,14 +33,14 @@ public void testAddHorse_Success() throws StableFullException { @Test public void testDisplayHorses_NoHorses() { - stable.displayHorses(); + stable.displayHorses(); } @Test public void testDisplayHorses_WithHorses() throws StableFullException { stable.addHorse("Spirit"); stable.addHorse("Shadow"); - stable.displayHorses(); + stable.displayHorses(); } @Test From bdade0cea6b999fe610ea6abec37a2f144f0de93 Mon Sep 17 00:00:00 2001 From: yafiaha Date: Mon, 18 Nov 2024 09:34:55 -0500 Subject: [PATCH 3/3] Fix-up : changing the HorseStable lowercase and fixing test --- .../lesson16/HorseStable/HorseStable.java | 16 +++++++++++----- .../HorseStable/StableFullException.java | 2 +- .../HorseStableTest/HorseStableTest.java | 15 ++++++++++----- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java index 4493ce5f7..f8525c9e6 100644 --- a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/HorseStable.java @@ -1,4 +1,4 @@ -package com.codedifferently.lesson16.HorseStable; +package com.codedifferently.lesson16.horseStable; import java.util.ArrayList; import java.util.List; @@ -64,11 +64,17 @@ public void addHorse(String horseName) throws StableFullException { horses.add(horseName); } - public void displayHorses() { + public void removeHorse(String horseName) { + if (!horses.contains(horseName)) { + throw new IllegalArgumentException("Horse not found in the stable."); + } + horses.remove(horseName); + } + + public String displayHorses() { if (horses.isEmpty()) { - System.out.println("No horses in the stable."); - return; + return "No horses in the stable."; } - System.out.println("There are " + horses.size() + " horses in " + name + "."); + return "There are " + horses.size() + " horses in " + name + "."; } } diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java index 20f622de5..4f7f12981 100644 --- a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/HorseStable/StableFullException.java @@ -1,4 +1,4 @@ -package com.codedifferently.lesson16.HorseStable; +package com.codedifferently.lesson16.horseStable; public class StableFullException extends Exception { public StableFullException(String message) { diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java index 18fe990e3..57e37eb40 100644 --- a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/HorseStableTest/HorseStableTest.java @@ -2,8 +2,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import com.codedifferently.lesson16.HorseStable.HorseStable; -import com.codedifferently.lesson16.HorseStable.StableFullException; +import com.codedifferently.lesson16.horseStable.HorseStable; +import com.codedifferently.lesson16.horseStable.StableFullException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -32,15 +32,20 @@ public void testAddHorse_Success() throws StableFullException { } @Test - public void testDisplayHorses_NoHorses() { - stable.displayHorses(); + public void testDisplayHorses_NoHorses() throws StableFullException { + stable.addHorse("Spirit"); + stable.addHorse("Shadow"); + stable.removeHorse("Spirit"); + stable.removeHorse("Shadow"); + + assertEquals(0, stable.getHorses().size()); } @Test public void testDisplayHorses_WithHorses() throws StableFullException { stable.addHorse("Spirit"); stable.addHorse("Shadow"); - stable.displayHorses(); + assertEquals("There are 2 horses in Sunny Acres.", stable.displayHorses()); } @Test