From b745f7c9961a005fa9646e2ae1366180f6e738e2 Mon Sep 17 00:00:00 2001 From: PabLim-Par Date: Fri, 1 Nov 2024 21:24:56 +0000 Subject: [PATCH 1/3] Feat: adds Pablo Limon-Paredes Saiyan Object Lesson16 --- .../lesson16/saiyanoop/Saiyan.java | 88 +++++++++++++ .../lesson16/saiyanoop/SaiyanTest.java | 116 ++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java create mode 100644 lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java new file mode 100644 index 000000000..3845cbe4e --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java @@ -0,0 +1,88 @@ +package com.codedifferently.lesson16.saiyanoop; + +import java.util.ArrayList; + +public class Saiyan { + enum SaiyanForms { + BASE, // 0 - 1999 + SSJ1, // 2000 - 2999 + SSJ2, // 3000 - 3999 + SSJ3 // 4000 + } + + private int powerLevel; + private String name; + private ArrayList accessories; + private SaiyanForms saiyanForms; + private boolean hasATail; + + public Saiyan( + int powerLevel, + String name, + ArrayList accessories, + SaiyanForms saiyanForms, + boolean hasATail) { + this.powerLevel = powerLevel; + this.name = name; + this.accessories = accessories; + this.saiyanForms = saiyanForms; + this.hasATail = hasATail; + } + + public int getPowerLevel() { + return powerLevel; + } + + public void setPowerLevel(int powerLevel) { + this.powerLevel = powerLevel; + SaiyanForms form = SaiyanForms.BASE; + if (powerLevel > 2000 && powerLevel < 2999) { + form = SaiyanForms.SSJ1; + } else if (powerLevel > 3000 && powerLevel < 3999) { + form = SaiyanForms.SSJ2; + } else if (powerLevel > 4000) { + form = SaiyanForms.SSJ3; + } + setSaiyanForms(form); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ArrayList getAccessories() { + return accessories; + } + + public void addAccessories(String addingAcc) { + this.accessories.add(addingAcc); + } + + public void removeAccessories(String removeAcc) { + accessories.remove(removeAcc); + } + + public void removeAllAccessories() { + accessories.removeAll(accessories); + } + + public SaiyanForms getSaiyanForms() { + return saiyanForms; + } + + public void setSaiyanForms(SaiyanForms saiyanForms) { + this.saiyanForms = saiyanForms; + } + + public boolean isHasATail() { + return hasATail; + } + + public void setHasATail(boolean hasATail) { + this.hasATail = hasATail; + } +} diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java new file mode 100644 index 000000000..02bdf8d95 --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java @@ -0,0 +1,116 @@ +package com.codedifferently.lesson16.saiyanoop; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; +import java.util.Arrays; + +import org.junit.jupiter.api.Test; + +import com.codedifferently.lesson16.saiyanoop.Saiyan.SaiyanForms; + +public class SaiyanTest { + @Test + void testgetPowerLevel() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + SaiyanForms.BASE, + false); + assertEquals(1200, saiyan.getPowerLevel()); + } + + @Test + void testpowerLevelDroppingAndFormDown() { + Saiyan saiyan = + new Saiyan( + 4200, + "Goku", + new ArrayList( + Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt, Blue Undershirt")), + SaiyanForms.SSJ3, + false); + saiyan.setPowerLevel(3300); + assertEquals(SaiyanForms.SSJ2, saiyan.getSaiyanForms()); + saiyan.setPowerLevel(2300); + assertEquals(SaiyanForms.SSJ1, saiyan.getSaiyanForms()); + saiyan.setPowerLevel(1300); + assertEquals(SaiyanForms.BASE, saiyan.getSaiyanForms()); + } + + @Test + void testpowerLevelRisingAndFormUp() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList( + Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt, Blue Undershirt")), + SaiyanForms.BASE, + false); + saiyan.setPowerLevel(2600); + assertEquals(SaiyanForms.SSJ1, saiyan.getSaiyanForms()); + saiyan.setPowerLevel(3600); + assertEquals(SaiyanForms.SSJ2, saiyan.getSaiyanForms()); + saiyan.setPowerLevel(4600); + assertEquals(SaiyanForms.SSJ3, saiyan.getSaiyanForms()); + } + + @Test + void testdoesHaveATail() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + SaiyanForms.BASE, + false); + saiyan.setHasATail(true); + assertEquals(true, saiyan.isHasATail()); + } + + @Test + void testdoesNotHaveATail() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + SaiyanForms.BASE, + false); + assertEquals(false, saiyan.isHasATail()); + } + + @Test + void testgetName() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + SaiyanForms.BASE, + false); + assertEquals("Goku", saiyan.getName()); + } + + @Test + void testsetName() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + SaiyanForms.BASE, + false); + saiyan.setName("Kakarot"); + assertEquals("Kakarot", saiyan.getName()); + } + + @Test + void testwhatAccessoriesTheyHaveOn() {} + + @Test + void test() {} +} From 24a81085221cb1f26b043e03b654e3bf2f6deaf7 Mon Sep 17 00:00:00 2001 From: PabLim-Par Date: Fri, 1 Nov 2024 21:27:17 +0000 Subject: [PATCH 2/3] Feat: runs Spotlessapply --- .../com/codedifferently/lesson16/saiyanoop/SaiyanTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java index 02bdf8d95..6646f0254 100644 --- a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java @@ -2,13 +2,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import com.codedifferently.lesson16.saiyanoop.Saiyan.SaiyanForms; import java.util.ArrayList; import java.util.Arrays; - import org.junit.jupiter.api.Test; -import com.codedifferently.lesson16.saiyanoop.Saiyan.SaiyanForms; - public class SaiyanTest { @Test void testgetPowerLevel() { From ad7b0b7dd24f4ab4d97a4408af29e0f9c776e647 Mon Sep 17 00:00:00 2001 From: PabLim-Par Date: Sat, 2 Nov 2024 14:57:39 +0000 Subject: [PATCH 3/3] Feat: adds custom exception and updates both test and regular file --- .../InvalidPowerLevelCustomExcepetion.java | 7 ++ .../lesson16/saiyanoop/Saiyan.java | 9 +- .../lesson16/saiyanoop/SaiyanTest.java | 88 ++++++++++++++++--- 3 files changed, 90 insertions(+), 14 deletions(-) create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/InvalidPowerLevelCustomExcepetion.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/InvalidPowerLevelCustomExcepetion.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/InvalidPowerLevelCustomExcepetion.java new file mode 100644 index 000000000..4b7f9befb --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/InvalidPowerLevelCustomExcepetion.java @@ -0,0 +1,7 @@ +package com.codedifferently.lesson16.saiyanoop; + +public class InvalidPowerLevelCustomExcepetion extends Exception { + public InvalidPowerLevelCustomExcepetion(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java index 3845cbe4e..47ac7f606 100644 --- a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/saiyanoop/Saiyan.java @@ -33,8 +33,12 @@ public int getPowerLevel() { return powerLevel; } - public void setPowerLevel(int powerLevel) { + public void setPowerLevel(int powerLevel) throws InvalidPowerLevelCustomExcepetion { this.powerLevel = powerLevel; + if (powerLevel <= 0) { + throw new InvalidPowerLevelCustomExcepetion("Power Level can not be zero or less!"); + } + SaiyanForms form = SaiyanForms.BASE; if (powerLevel > 2000 && powerLevel < 2999) { form = SaiyanForms.SSJ1; @@ -68,6 +72,9 @@ public void removeAccessories(String removeAcc) { public void removeAllAccessories() { accessories.removeAll(accessories); + for (int i = accessories.size() - 1; i >= 0; i--) { + accessories.remove(i); + } } public SaiyanForms getSaiyanForms() { diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java index 6646f0254..b02b4158c 100644 --- a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/saiyanoop/SaiyanTest.java @@ -1,6 +1,7 @@ package com.codedifferently.lesson16.saiyanoop; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; import com.codedifferently.lesson16.saiyanoop.Saiyan.SaiyanForms; import java.util.ArrayList; @@ -14,20 +15,19 @@ void testgetPowerLevel() { new Saiyan( 1200, "Goku", - new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), SaiyanForms.BASE, false); assertEquals(1200, saiyan.getPowerLevel()); } @Test - void testpowerLevelDroppingAndFormDown() { + void testpowerLevelDroppingAndFormDown() throws InvalidPowerLevelCustomExcepetion { Saiyan saiyan = new Saiyan( 4200, "Goku", - new ArrayList( - Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt, Blue Undershirt")), + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), SaiyanForms.SSJ3, false); saiyan.setPowerLevel(3300); @@ -39,13 +39,12 @@ void testpowerLevelDroppingAndFormDown() { } @Test - void testpowerLevelRisingAndFormUp() { + void testpowerLevelRisingAndFormUp() throws InvalidPowerLevelCustomExcepetion { Saiyan saiyan = new Saiyan( 1200, "Goku", - new ArrayList( - Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt, Blue Undershirt")), + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), SaiyanForms.BASE, false); saiyan.setPowerLevel(2600); @@ -62,7 +61,7 @@ void testdoesHaveATail() { new Saiyan( 1200, "Goku", - new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), SaiyanForms.BASE, false); saiyan.setHasATail(true); @@ -75,7 +74,7 @@ void testdoesNotHaveATail() { new Saiyan( 1200, "Goku", - new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), SaiyanForms.BASE, false); assertEquals(false, saiyan.isHasATail()); @@ -87,7 +86,7 @@ void testgetName() { new Saiyan( 1200, "Goku", - new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), SaiyanForms.BASE, false); assertEquals("Goku", saiyan.getName()); @@ -99,7 +98,7 @@ void testsetName() { new Saiyan( 1200, "Goku", - new ArrayList(Arrays.asList("WristBands, Boots, Orange Gi, Blue Belt")), + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), SaiyanForms.BASE, false); saiyan.setName("Kakarot"); @@ -107,8 +106,71 @@ void testsetName() { } @Test - void testwhatAccessoriesTheyHaveOn() {} + void testgetAnAccessory() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), + SaiyanForms.BASE, + false); + assertEquals("Power Pole", saiyan.getAccessories().get(0)); + } + + @Test + void testaddingAnAccessory() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), + SaiyanForms.BASE, + false); + saiyan.addAccessories("Senzu Bean"); + assertEquals(4, saiyan.getAccessories().size()); + } + + @Test + void testremovingAllAccessories() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), + SaiyanForms.BASE, + false); + saiyan.removeAllAccessories(); + assertEquals(0, saiyan.getAccessories().size()); + } @Test - void test() {} + void testremoveAccessories() { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), + SaiyanForms.BASE, + false); + saiyan.removeAccessories("Power Pole"); + assertEquals(2, saiyan.getAccessories().size()); + } + + @Test + void testcanNotGetZeroOrNegativePowerLevel() throws InvalidPowerLevelCustomExcepetion { + Saiyan saiyan = + new Saiyan( + 1200, + "Goku", + new ArrayList(Arrays.asList("Power Pole", "Scouter", "Flying Nimbus")), + SaiyanForms.BASE, + false); + + try { + saiyan.setPowerLevel(-10); + fail("Expected InvalidPowerLevelCustomException to be thrown"); + } catch (InvalidPowerLevelCustomExcepetion e) { + assertEquals("Power Level can not be zero or less!", e.getMessage()); + } + } }