From 7412c94e3f42aec2f3ee4881fac22cbf266a1a10 Mon Sep 17 00:00:00 2001 From: Davis Date: Thu, 10 Apr 2025 18:46:50 +0000 Subject: [PATCH 1/3] feat:adds custom data types HW (incomplete) --- .../objects_app/src/main/onepiece/DevilFruits.java | 11 +++++++++++ .../objects/objects_app/src/main/onepiece/Haki.java | 12 ++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java create mode 100644 lesson_16/objects/objects_app/src/main/onepiece/Haki.java diff --git a/lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java b/lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java new file mode 100644 index 00000000..d8de7769 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java @@ -0,0 +1,11 @@ +package main.onepiece; + +public class DevilFruits { + public enum fruits { + Logia, + Paramecia, + Zoan, + Mythical_zoan; + } +} + diff --git a/lesson_16/objects/objects_app/src/main/onepiece/Haki.java b/lesson_16/objects/objects_app/src/main/onepiece/Haki.java new file mode 100644 index 00000000..6f168a37 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/onepiece/Haki.java @@ -0,0 +1,12 @@ +package main.onepiece; + +public class Haki { + public enum types { + Observation, + Armament, + Conquerors, + Advanced_Observation, + Advanced_Armenment, + Advanced_Conquerors; + } +} From 2fb00a42317c7483f2862bcfbf4e10ac9e9c67f8 Mon Sep 17 00:00:00 2001 From: Davis Date: Fri, 11 Apr 2025 17:00:20 +0000 Subject: [PATCH 2/3] feat:add oop principles HW (incomplete) --- .../onepiece/HasNoDreamException.java | 7 ++ .../lesson16/onepiece/NotPirateException.java | 7 ++ .../lesson16/onepiece/Pirate.java | 81 ++++++++++++++++++ .../src/main/onepiece/DevilFruits.java | 11 --- .../objects_app/src/main/onepiece/Haki.java | 12 --- .../lesson16/onepiece/PirateTest.java | 82 +++++++++++++++++++ 6 files changed, 177 insertions(+), 23 deletions(-) create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/HasNoDreamException.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java delete mode 100644 lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java delete mode 100644 lesson_16/objects/objects_app/src/main/onepiece/Haki.java create mode 100644 lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/HasNoDreamException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/HasNoDreamException.java new file mode 100644 index 00000000..4aba2c4c --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/HasNoDreamException.java @@ -0,0 +1,7 @@ +package com.codedifferently.lesson16.onepiece; + +public class HasNoDreamException extends Exception { + public HasNoDreamException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java new file mode 100644 index 00000000..be316252 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java @@ -0,0 +1,7 @@ +package com.codedifferently.lesson16.onepiece; + +public class NotPirateException extends Exception { + public NotPirateException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java new file mode 100644 index 00000000..90b4e581 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java @@ -0,0 +1,81 @@ +package com.codedifferently.lesson16.onepiece; + +import java.util.Random; + +public class Pirate { + public enum HakiType { + Observation, + Armament, + Conquerors, + Advanced_Observation, + Advanced_Armament, + Advanced_Conquerors, + Will_of_D; + } + + private String name; + private String crew; + private long bounty; + private boolean hasDream; + private boolean isPirate; + private HakiType powers; + private final HakiType[] haki = HakiType.values(); + private static final Random cflip = new Random(); + + public Pirate(String name, String crew, long bounty) { + this.name = name; + this.crew = crew; + this.bounty = bounty; + this.hasDream = true; + this.isPirate = true; + this.powers = HakiType.Will_of_D; + } + + // Getters and setters + public String getName() { + return name; + } + + public String getCrew() { + return crew; + } + + public long getBounty() { + return bounty; + } + + public boolean getHasDream() { + return hasDream; + } + + public boolean getIsPirate() { + return isPirate; + } + + public void rollPowers() { + int randomIndex = cflip.nextInt(haki.length); + HakiType newHaki = haki[randomIndex]; + powers = newHaki; + System.out.println("Random Haki: " + powers); + } + + public void setName(String name) { + this.name = name; + } + + public void setCrew(String crew) { + this.crew = crew; + } + + public void setBounty(Long bounty) { + this.bounty = bounty; + } + + public void setHasDream(boolean hasDream) { + this.hasDream = hasDream; + } + + public void setIsPirate(boolean isPirate) { + this.isPirate = isPirate; + } +} diff --git a/lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java b/lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java deleted file mode 100644 index d8de7769..00000000 --- a/lesson_16/objects/objects_app/src/main/onepiece/DevilFruits.java +++ /dev/null @@ -1,11 +0,0 @@ -package main.onepiece; - -public class DevilFruits { - public enum fruits { - Logia, - Paramecia, - Zoan, - Mythical_zoan; - } -} - diff --git a/lesson_16/objects/objects_app/src/main/onepiece/Haki.java b/lesson_16/objects/objects_app/src/main/onepiece/Haki.java deleted file mode 100644 index 6f168a37..00000000 --- a/lesson_16/objects/objects_app/src/main/onepiece/Haki.java +++ /dev/null @@ -1,12 +0,0 @@ -package main.onepiece; - -public class Haki { - public enum types { - Observation, - Armament, - Conquerors, - Advanced_Observation, - Advanced_Armenment, - Advanced_Conquerors; - } -} diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java new file mode 100644 index 00000000..15f872d5 --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java @@ -0,0 +1,82 @@ +package com.codedifferently.lesson16.onepiece; + +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PirateTest { + + Pirate pirate; + + @BeforeEach + void setUp() { + pirate = new Pirate(2, "Zoro", "Swordsman", 900000); + } + + @Test + void testGetId() { + int actual = pirate.getId(); + + assertThat(actual).isEqualTo(2); + } + + @Test + void testSetId() { + pirate.setId(3); + int actual = pirate.getId(); + + assertThat(actual).isEqualTo(3); + } + + @Test + void testGetName() { + String actual = pirate.getName(); + + assertThat(actual).isEqualTo("Zoro"); + } + + @Test + void testSetName() { + pirate.setName("Sanji"); + String actual = pirate.getName(); + + assertThat(actual).isEqualTo("Sanji"); + } + + @Test + void testGetDepartment() { + String actual = pirate.getDepartment(); + + assertThat(actual).isEqualTo("Swordsman"); + } + + @Test + void testSetDepartment() { + pirate.setDepartment("Cook"); + String actual = pirate.getDepartment(); + + assertThat(actual).isEqualTo("Cook"); + } + + @Test + void testGetSalary() { + double actual = pirate.getSalary(); + + assertThat(actual).isEqualTo(900000); + } + + @Test + void testSetSalary() { + pirate.setSalary(850000); + double actual = pirate.getSalary(); + + assertThat(actual).isEqualTo(850000); + } + + @Test + void testGetDetails() { + String actual = pirate.getDetails(); + + assertThat(actual).isEqualTo("2 Zoro Swordsman 900000.0"); + } +} From 39f3b03a6d005895f221c7f8e50dc3985b8d0e02 Mon Sep 17 00:00:00 2001 From: Davis Date: Sun, 13 Apr 2025 02:16:41 +0000 Subject: [PATCH 3/3] chore: fixed incomplete code as well made sure foramt was correct --- .../lesson16/onepiece/NotPirateException.java | 7 -- .../lesson16/onepiece/Pirate.java | 51 ++++---- .../lesson16/onepiece/PirateTest.java | 109 +++++++++++++----- 3 files changed, 107 insertions(+), 60 deletions(-) delete mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java deleted file mode 100644 index be316252..00000000 --- a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/NotPirateException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.codedifferently.lesson16.onepiece; - -public class NotPirateException extends Exception { - public NotPirateException(String message) { - super(message); - } -} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java index 90b4e581..791baca3 100644 --- a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/onepiece/Pirate.java @@ -4,31 +4,32 @@ public class Pirate { public enum HakiType { - Observation, - Armament, - Conquerors, - Advanced_Observation, - Advanced_Armament, - Advanced_Conquerors, - Will_of_D; + OBSERVATION, + ARMANENT, + CONQUERORS, + ADVANCED_OBSERVATION, + ADVANCED_ARMANENT, + ADVANCED_CONQUERORS, + WILL_OF_D; } private String name; private String crew; - private long bounty; - private boolean hasDream; - private boolean isPirate; + private Long bounty; + private String role; + private Boolean hasDream; private HakiType powers; + private final HakiType[] haki = HakiType.values(); private static final Random cflip = new Random(); - public Pirate(String name, String crew, long bounty) { + public Pirate(String name, String crew, Long bounty, String role, Boolean hasDream) { this.name = name; this.crew = crew; this.bounty = bounty; + this.role = role; this.hasDream = true; - this.isPirate = true; - this.powers = HakiType.Will_of_D; + this.powers = HakiType.WILL_OF_D; } // Getters and setters @@ -44,12 +45,20 @@ public long getBounty() { return bounty; } - public boolean getHasDream() { - return hasDream; + public String getRole() { + return role; + } + + public boolean getHasDream() throws HasNoDreamException { + if (!hasDream) { + throw new HasNoDreamException(name + " has no dream!"); + } + System.out.println("Has Dream"); + return true; } - public boolean getIsPirate() { - return isPirate; + public HakiType getPowers() { + return powers; } public void rollPowers() { @@ -71,11 +80,11 @@ public void setBounty(Long bounty) { this.bounty = bounty; } - public void setHasDream(boolean hasDream) { - this.hasDream = hasDream; + public void setRole(String role) { + this.role = role; } - public void setIsPirate(boolean isPirate) { - this.isPirate = isPirate; + public void setHasDream(boolean hasDream) { + this.hasDream = hasDream; } } diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java index 15f872d5..5eae379c 100644 --- a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/onepiece/PirateTest.java @@ -1,6 +1,12 @@ package com.codedifferently.lesson16.onepiece; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.codedifferently.lesson16.onepiece.Pirate.HakiType; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -10,73 +16,112 @@ public class PirateTest { @BeforeEach void setUp() { - pirate = new Pirate(2, "Zoro", "Swordsman", 900000); + pirate = new Pirate("Luffy", "StrawHatPirates", 3000000000L, "Captain", true); } @Test - void testGetId() { - int actual = pirate.getId(); + void testGetName() { + String actual = pirate.getName(); - assertThat(actual).isEqualTo(2); + assertThat(actual).isEqualTo("Luffy"); } @Test - void testSetId() { - pirate.setId(3); - int actual = pirate.getId(); + void testSetName() { + pirate.setName("BlackBeard"); + String actual = pirate.getName(); - assertThat(actual).isEqualTo(3); + assertThat(actual).isEqualTo("BlackBeard"); } @Test - void testGetName() { - String actual = pirate.getName(); + void testGetCrew() { + String actual = pirate.getCrew(); - assertThat(actual).isEqualTo("Zoro"); + assertThat(actual).isEqualTo("StrawHatPirates"); } @Test - void testSetName() { - pirate.setName("Sanji"); - String actual = pirate.getName(); + void testSetCrew() { + pirate.setCrew("BlackBeardPirates"); + String actual = pirate.getCrew(); - assertThat(actual).isEqualTo("Sanji"); + assertThat(actual).isEqualTo("BlackBeardPirates"); } @Test - void testGetDepartment() { - String actual = pirate.getDepartment(); + void testGetBounty() { + Long actual = pirate.getBounty(); - assertThat(actual).isEqualTo("Swordsman"); + assertThat(actual).isEqualTo(3000000000L); } @Test - void testSetDepartment() { - pirate.setDepartment("Cook"); - String actual = pirate.getDepartment(); + void testSetBounty() { + pirate.setBounty(3996000000L); + Long actual = pirate.getBounty(); - assertThat(actual).isEqualTo("Cook"); + assertThat(actual).isEqualTo(3996000000L); } @Test - void testGetSalary() { - double actual = pirate.getSalary(); + void testGetRole() { + String actual = pirate.getRole(); - assertThat(actual).isEqualTo(900000); + assertThat(actual).isEqualTo("Captain"); } @Test - void testSetSalary() { - pirate.setSalary(850000); - double actual = pirate.getSalary(); + void testSetRole() { + pirate.setRole("Captain"); + String actual = pirate.getRole(); - assertThat(actual).isEqualTo(850000); + assertThat(actual).isEqualTo("Captain"); } @Test - void testGetDetails() { - String actual = pirate.getDetails(); + void testgetHasDream() { + try { + pirate.getHasDream(); + } catch (HasNoDreamException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void testRollPowers() { + pirate.rollPowers(); + assertNotNull(pirate.getPowers(), "Powers should not be null after rolling"); + boolean isValid = false; + for (HakiType h : HakiType.values()) { + if (pirate.getPowers() == h) { + isValid = true; + break; + } + } + assertTrue(isValid, "Powers should be a valid HakiType"); + } + + @Test + void testRollPowersOutput() { + + // Capture console output + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + System.setOut(new PrintStream(outputStream)); + + pirate.rollPowers(); + + String output = outputStream.toString().trim(); + boolean matches = false; + for (HakiType h : HakiType.values()) { + if (output.equals("Random Haki: " + h)) { + matches = true; + break; + } + } + + assertTrue(matches, "Haki Options"); - assertThat(actual).isEqualTo("2 Zoro Swordsman 900000.0"); + System.setOut(System.out); } }