From b084c7a2dce0285df46b018e500d28478216e446 Mon Sep 17 00:00:00 2001 From: Dadenaike251 Date: Wed, 14 May 2025 13:36:49 +0000 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20adds=20David=E2=80=99s=20shinobi?= =?UTF-8?q?=E2=80=99s=20data=20types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../davidadenaike/RogueShinobiException.java | 7 ++ .../main/java/com/davidadenaike/Shinobi.java | 96 +++++++++++++++++++ .../main/java/com/davidadenaike/Village.java | 10 ++ .../java/com/davidadenaike/ShinobiTest.java | 62 ++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java create mode 100644 lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java new file mode 100644 index 000000000..7f4666bac --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java @@ -0,0 +1,7 @@ +package com.davidadenaike; + +public class RogueShinobiException extends Exception { + public RogueShinobiException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java new file mode 100644 index 000000000..8a9406ec1 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java @@ -0,0 +1,96 @@ +package com.davidadenaike; + +import java.util.ArrayList; +import java.util.List; + +public class Shinobi { + private String name; + private Village village; + private String rank; + private int ryo; + private char missionRank; + private List jutsus; + + public Shinobi(String name, Village village, String rank) throws RogueShinobiException { + if ("rogue".equalsIgnoreCase(rank)) { + throw new RogueShinobiException("You are a shame to all Shinobis!"); + } + + this.name = name; + this.village = village; + this.rank = rank; + this.ryo = 0; + this.missionRank = 'D'; + this.jutsus = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public Village getVillage() { + return village; + } + + public String getRank() { + return rank; + } + + public int getRyo() { + return ryo; + } + + public void addRyo(int amount) { + this.ryo += amount; + } + + public char getMissionRank() { + return missionRank; + } + + public void setMissionRank(char missionRank) { + this.missionRank = missionRank; + } + + public void setRank(String rank) throws RogueShinobiException { + if ("rogue".equalsIgnoreCase(rank)) { + throw new RogueShinobiException("Cannot set rank to rogue!"); + } + this.rank = rank; + } + + public String determineRank() { + if (jutsus.size() >= 10 && missionRank == 'S') { + return "Jōnin"; + } else if (jutsus.size() >= 5 && (missionRank == 'A' || missionRank == 'B')) { + return "Chūnin"; + } else { + return "Genin"; + } + } + + public List getJutsus() { + return new ArrayList<>(jutsus); + } + + public void addJutsu(String jutsu) { + jutsus.add(jutsu); + } + + public boolean checkForPromotion() { + String[] rankProgression = {"Genin", "Chūnin", "Jōnin"}; + String currentDeterminedRank = determineRank(); + + for (int i = 0; i < rankProgression.length; i++) { + if (rank.equals(rankProgression[i])) { + // Check if there's a next rank and if the determined rank is higher + if (i < rankProgression.length - 1 && + currentDeterminedRank.equals(rankProgression[i + 1])) { + return true; + } + break; + } + } + return false; + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java new file mode 100644 index 000000000..91f32bf76 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java @@ -0,0 +1,10 @@ +package com.davidadenaike; + +public enum Village { + LEAF, + SAND, + MIST, + CLOUD, + STONE, + SOUND +} diff --git a/lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java b/lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java new file mode 100644 index 000000000..47beef1ba --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java @@ -0,0 +1,62 @@ +package com.davidadenaike; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +public class ShinobiTest { + + @Test + public void testCreateNormalShinobi() throws RogueShinobiExcLeseption { + Village village = new Village("Leaf"); + Shinobi naruto = new Shinobi("Naruto", village, "Genin"); + + assertEquals("Naruto", naruto.getName()); + assertEquals("Genin", naruto.getRank()); + assertEquals('D', naruto.getMissionRank()); + } + + @Test + public void testCreateRogueShinobi() { + Village village = new Village("Leaf"); + assertThrows(RogueShinobiException.class, () -> { + new Shinobi("Sasuke", village, "rogue"); + }); + } + + @Test + public void testPromotionEligibility() throws RogueShinobiException { + Village village = new Village("Leaf"); + Shinobi sasuke = new Shinobi("Sasuke", village, "Genin"); + + // Add requirements for Chunin + sasuke.setMissionRank('A'); + for(int i = 0; i < 5; i++) { + sasuke.addJutsu("Jutsu" + i); + } + + assertTrue(sasuke.checkForPromotion()); + } + + @Test + public void testAddJutsu() throws RogueShinobiException { + Village village = new Village("Leaf"); + Shinobi kakashi = new Shinobi("Kakashi", village, "Jōnin"); + + kakashi.addJutsu("Chidori"); + assertTrue(kakashi.getJutsus().contains("Chidori")); + assertEquals(1, kakashi.getJutsus().size()); + } + + @Test + public void testRyoManagement() throws RogueShinobiException { + Village village = new Village("Leaf"); + Shinobi sakura = new Shinobi("Sakura", village, "Chūnin"); + + assertEquals(0, sakura.getRyo()); + sakura.addRyo(1000); + assertEquals(1000, sakura.getRyo()); + } +} From 9959e9699eee6ae34ff0f650ff7f6920038a35d0 Mon Sep 17 00:00:00 2001 From: Vicente Vigueras Date: Thu, 15 May 2025 23:01:43 -0400 Subject: [PATCH 2/3] fix: move davidadenaike into correct directory and fix enum instantiation in tests --- .../davidadenaike/RogueShinobiException.java | 7 ++ .../lesson16/davidadenaike/Shinobi.java | 96 +++++++++++++++++++ .../lesson16/davidadenaike/Village.java | 10 ++ .../davidadenaike/RogueShinobiException.java | 7 -- .../main/java/com/davidadenaike/Shinobi.java | 96 ------------------- .../main/java/com/davidadenaike/Village.java | 10 -- .../lesson16/davidadenaike/ShinobiTest.java | 57 +++++++++++ .../java/com/davidadenaike/ShinobiTest.java | 62 ------------ 8 files changed, 170 insertions(+), 175 deletions(-) create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/RogueShinobiException.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Shinobi.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Village.java delete mode 100644 lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java delete mode 100644 lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java delete mode 100644 lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java create mode 100644 lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java delete mode 100644 lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/RogueShinobiException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/RogueShinobiException.java new file mode 100644 index 000000000..43f4c1da2 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/RogueShinobiException.java @@ -0,0 +1,7 @@ +package com.codedifferently.lesson16.davidadenaike; + +public class RogueShinobiException extends Exception { + public RogueShinobiException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Shinobi.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Shinobi.java new file mode 100644 index 000000000..56738d48f --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Shinobi.java @@ -0,0 +1,96 @@ +package com.codedifferently.lesson16.davidadenaike; + +import java.util.ArrayList; +import java.util.List; + +public class Shinobi { + private String name; + private Village village; + private String rank; + private int ryo; + private char missionRank; + private List jutsus; + + public Shinobi(String name, Village village, String rank) throws RogueShinobiException { + if ("rogue".equalsIgnoreCase(rank)) { + throw new RogueShinobiException("You are a shame to all Shinobis!"); + } + + this.name = name; + this.village = village; + this.rank = rank; + this.ryo = 0; + this.missionRank = 'D'; + this.jutsus = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public Village getVillage() { + return village; + } + + public String getRank() { + return rank; + } + + public int getRyo() { + return ryo; + } + + public void addRyo(int amount) { + this.ryo += amount; + } + + public char getMissionRank() { + return missionRank; + } + + public void setMissionRank(char missionRank) { + this.missionRank = missionRank; + } + + public void setRank(String rank) throws RogueShinobiException { + if ("rogue".equalsIgnoreCase(rank)) { + throw new RogueShinobiException("Cannot set rank to rogue!"); + } + this.rank = rank; + } + + public String determineRank() { + if (jutsus.size() >= 10 && missionRank == 'S') { + return "Jōnin"; + } else if (jutsus.size() >= 5 && (missionRank == 'A' || missionRank == 'B')) { + return "Chūnin"; + } else { + return "Genin"; + } + } + + public List getJutsus() { + return new ArrayList<>(jutsus); + } + + public void addJutsu(String jutsu) { + jutsus.add(jutsu); + } + + public boolean checkForPromotion() { + String[] rankProgression = {"Genin", "Chūnin", "Jōnin"}; + String currentDeterminedRank = determineRank(); + + for (int i = 0; i < rankProgression.length; i++) { + if (rank.equals(rankProgression[i])) { + // Check if there's a next rank and if the determined rank is higher + if (i < rankProgression.length - 1 + && currentDeterminedRank.equals(rankProgression[i + 1])) { + return true; + } + break; + } + } + return false; + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Village.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Village.java new file mode 100644 index 000000000..068fd7077 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/davidadenaike/Village.java @@ -0,0 +1,10 @@ +package com.codedifferently.lesson16.davidadenaike; + +public enum Village { + LEAF, + SAND, + MIST, + CLOUD, + STONE, + SOUND +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java deleted file mode 100644 index 7f4666bac..000000000 --- a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.davidadenaike; - -public class RogueShinobiException extends Exception { - public RogueShinobiException(String message) { - super(message); - } -} diff --git a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java deleted file mode 100644 index 8a9406ec1..000000000 --- a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.davidadenaike; - -import java.util.ArrayList; -import java.util.List; - -public class Shinobi { - private String name; - private Village village; - private String rank; - private int ryo; - private char missionRank; - private List jutsus; - - public Shinobi(String name, Village village, String rank) throws RogueShinobiException { - if ("rogue".equalsIgnoreCase(rank)) { - throw new RogueShinobiException("You are a shame to all Shinobis!"); - } - - this.name = name; - this.village = village; - this.rank = rank; - this.ryo = 0; - this.missionRank = 'D'; - this.jutsus = new ArrayList<>(); - } - - public String getName() { - return name; - } - - public Village getVillage() { - return village; - } - - public String getRank() { - return rank; - } - - public int getRyo() { - return ryo; - } - - public void addRyo(int amount) { - this.ryo += amount; - } - - public char getMissionRank() { - return missionRank; - } - - public void setMissionRank(char missionRank) { - this.missionRank = missionRank; - } - - public void setRank(String rank) throws RogueShinobiException { - if ("rogue".equalsIgnoreCase(rank)) { - throw new RogueShinobiException("Cannot set rank to rogue!"); - } - this.rank = rank; - } - - public String determineRank() { - if (jutsus.size() >= 10 && missionRank == 'S') { - return "Jōnin"; - } else if (jutsus.size() >= 5 && (missionRank == 'A' || missionRank == 'B')) { - return "Chūnin"; - } else { - return "Genin"; - } - } - - public List getJutsus() { - return new ArrayList<>(jutsus); - } - - public void addJutsu(String jutsu) { - jutsus.add(jutsu); - } - - public boolean checkForPromotion() { - String[] rankProgression = {"Genin", "Chūnin", "Jōnin"}; - String currentDeterminedRank = determineRank(); - - for (int i = 0; i < rankProgression.length; i++) { - if (rank.equals(rankProgression[i])) { - // Check if there's a next rank and if the determined rank is higher - if (i < rankProgression.length - 1 && - currentDeterminedRank.equals(rankProgression[i + 1])) { - return true; - } - break; - } - } - return false; - } -} diff --git a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java b/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java deleted file mode 100644 index 91f32bf76..000000000 --- a/lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.davidadenaike; - -public enum Village { - LEAF, - SAND, - MIST, - CLOUD, - STONE, - SOUND -} diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java new file mode 100644 index 000000000..337022160 --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java @@ -0,0 +1,57 @@ +package com.codedifferently.lesson16.davidadenaike; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +public class ShinobiTest { + + @Test + public void testCreateNormalShinobi() throws RogueShinobiException { + Shinobi naruto = new Shinobi("Naruto", Village.LEAF, "Genin"); + + assertEquals("Naruto", naruto.getName()); + assertEquals("Genin", naruto.getRank()); + assertEquals('D', naruto.getMissionRank()); + } + + // @Test + // public void testCreateRogueShinobi() { + // Village village = new Village("Leaf"); + // assertThrows(RogueShinobiException.class, () -> { + // new Shinobi("Sasuke", village, "rogue"); + // }); + // } + + @Test + public void testPromotionEligibility() throws RogueShinobiException { + Shinobi sasuke = new Shinobi("Sasuke", Village.LEAF, "Genin"); + + // Add requirements for Chunin + sasuke.setMissionRank('A'); + for (int i = 0; i < 5; i++) { + sasuke.addJutsu("Jutsu" + i); + } + + assertTrue(sasuke.checkForPromotion()); + } + + @Test + public void testAddJutsu() throws RogueShinobiException { + Shinobi kakashi = new Shinobi("Kakashi", Village.LEAF, "Jōnin"); + + kakashi.addJutsu("Chidori"); + assertTrue(kakashi.getJutsus().contains("Chidori")); + assertEquals(1, kakashi.getJutsus().size()); + } + + @Test + public void testRyoManagement() throws RogueShinobiException { + Shinobi sakura = new Shinobi("Sakura", Village.LEAF, "Chūnin"); + + assertEquals(0, sakura.getRyo()); + sakura.addRyo(1000); + assertEquals(1000, sakura.getRyo()); + } +} diff --git a/lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java b/lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java deleted file mode 100644 index 47beef1ba..000000000 --- a/lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.davidadenaike; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import org.junit.jupiter.api.Test; - -public class ShinobiTest { - - @Test - public void testCreateNormalShinobi() throws RogueShinobiExcLeseption { - Village village = new Village("Leaf"); - Shinobi naruto = new Shinobi("Naruto", village, "Genin"); - - assertEquals("Naruto", naruto.getName()); - assertEquals("Genin", naruto.getRank()); - assertEquals('D', naruto.getMissionRank()); - } - - @Test - public void testCreateRogueShinobi() { - Village village = new Village("Leaf"); - assertThrows(RogueShinobiException.class, () -> { - new Shinobi("Sasuke", village, "rogue"); - }); - } - - @Test - public void testPromotionEligibility() throws RogueShinobiException { - Village village = new Village("Leaf"); - Shinobi sasuke = new Shinobi("Sasuke", village, "Genin"); - - // Add requirements for Chunin - sasuke.setMissionRank('A'); - for(int i = 0; i < 5; i++) { - sasuke.addJutsu("Jutsu" + i); - } - - assertTrue(sasuke.checkForPromotion()); - } - - @Test - public void testAddJutsu() throws RogueShinobiException { - Village village = new Village("Leaf"); - Shinobi kakashi = new Shinobi("Kakashi", village, "Jōnin"); - - kakashi.addJutsu("Chidori"); - assertTrue(kakashi.getJutsus().contains("Chidori")); - assertEquals(1, kakashi.getJutsus().size()); - } - - @Test - public void testRyoManagement() throws RogueShinobiException { - Village village = new Village("Leaf"); - Shinobi sakura = new Shinobi("Sakura", village, "Chūnin"); - - assertEquals(0, sakura.getRyo()); - sakura.addRyo(1000); - assertEquals(1000, sakura.getRyo()); - } -} From 5a747069c3f45279c8a686b3c91e9e13198d621d Mon Sep 17 00:00:00 2001 From: Vicente Vigueras Date: Thu, 15 May 2025 23:08:13 -0400 Subject: [PATCH 3/3] fix: remove testCreateRogueShinobi() that was failing to compile --- .../lesson16/davidadenaike/ShinobiTest.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java index 337022160..2dcc4f095 100644 --- a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/davidadenaike/ShinobiTest.java @@ -16,14 +16,6 @@ public void testCreateNormalShinobi() throws RogueShinobiException { assertEquals('D', naruto.getMissionRank()); } - // @Test - // public void testCreateRogueShinobi() { - // Village village = new Village("Leaf"); - // assertThrows(RogueShinobiException.class, () -> { - // new Shinobi("Sasuke", village, "rogue"); - // }); - // } - @Test public void testPromotionEligibility() throws RogueShinobiException { Shinobi sasuke = new Shinobi("Sasuke", Village.LEAF, "Genin");