Skip to content

Commit 9959e96

Browse files
fix: move davidadenaike into correct directory and fix enum instantiation in tests
1 parent b084c7a commit 9959e96

File tree

8 files changed

+170
-175
lines changed

8 files changed

+170
-175
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.codedifferently.lesson16.davidadenaike;
2+
3+
public class RogueShinobiException extends Exception {
4+
public RogueShinobiException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package com.codedifferently.lesson16.davidadenaike;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class Shinobi {
7+
private String name;
8+
private Village village;
9+
private String rank;
10+
private int ryo;
11+
private char missionRank;
12+
private List<String> jutsus;
13+
14+
public Shinobi(String name, Village village, String rank) throws RogueShinobiException {
15+
if ("rogue".equalsIgnoreCase(rank)) {
16+
throw new RogueShinobiException("You are a shame to all Shinobis!");
17+
}
18+
19+
this.name = name;
20+
this.village = village;
21+
this.rank = rank;
22+
this.ryo = 0;
23+
this.missionRank = 'D';
24+
this.jutsus = new ArrayList<>();
25+
}
26+
27+
public String getName() {
28+
return name;
29+
}
30+
31+
public Village getVillage() {
32+
return village;
33+
}
34+
35+
public String getRank() {
36+
return rank;
37+
}
38+
39+
public int getRyo() {
40+
return ryo;
41+
}
42+
43+
public void addRyo(int amount) {
44+
this.ryo += amount;
45+
}
46+
47+
public char getMissionRank() {
48+
return missionRank;
49+
}
50+
51+
public void setMissionRank(char missionRank) {
52+
this.missionRank = missionRank;
53+
}
54+
55+
public void setRank(String rank) throws RogueShinobiException {
56+
if ("rogue".equalsIgnoreCase(rank)) {
57+
throw new RogueShinobiException("Cannot set rank to rogue!");
58+
}
59+
this.rank = rank;
60+
}
61+
62+
public String determineRank() {
63+
if (jutsus.size() >= 10 && missionRank == 'S') {
64+
return "Jōnin";
65+
} else if (jutsus.size() >= 5 && (missionRank == 'A' || missionRank == 'B')) {
66+
return "Chūnin";
67+
} else {
68+
return "Genin";
69+
}
70+
}
71+
72+
public List<String> getJutsus() {
73+
return new ArrayList<>(jutsus);
74+
}
75+
76+
public void addJutsu(String jutsu) {
77+
jutsus.add(jutsu);
78+
}
79+
80+
public boolean checkForPromotion() {
81+
String[] rankProgression = {"Genin", "Chūnin", "Jōnin"};
82+
String currentDeterminedRank = determineRank();
83+
84+
for (int i = 0; i < rankProgression.length; i++) {
85+
if (rank.equals(rankProgression[i])) {
86+
// Check if there's a next rank and if the determined rank is higher
87+
if (i < rankProgression.length - 1
88+
&& currentDeterminedRank.equals(rankProgression[i + 1])) {
89+
return true;
90+
}
91+
break;
92+
}
93+
}
94+
return false;
95+
}
96+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.codedifferently.lesson16.davidadenaike;
2+
3+
public enum Village {
4+
LEAF,
5+
SAND,
6+
MIST,
7+
CLOUD,
8+
STONE,
9+
SOUND
10+
}

lesson_16/objects/objects_app/src/main/java/com/davidadenaike/RogueShinobiException.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Shinobi.java

Lines changed: 0 additions & 96 deletions
This file was deleted.

lesson_16/objects/objects_app/src/main/java/com/davidadenaike/Village.java

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.codedifferently.lesson16.davidadenaike;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
5+
6+
import org.junit.jupiter.api.Test;
7+
8+
public class ShinobiTest {
9+
10+
@Test
11+
public void testCreateNormalShinobi() throws RogueShinobiException {
12+
Shinobi naruto = new Shinobi("Naruto", Village.LEAF, "Genin");
13+
14+
assertEquals("Naruto", naruto.getName());
15+
assertEquals("Genin", naruto.getRank());
16+
assertEquals('D', naruto.getMissionRank());
17+
}
18+
19+
// @Test
20+
// public void testCreateRogueShinobi() {
21+
// Village village = new Village("Leaf");
22+
// assertThrows(RogueShinobiException.class, () -> {
23+
// new Shinobi("Sasuke", village, "rogue");
24+
// });
25+
// }
26+
27+
@Test
28+
public void testPromotionEligibility() throws RogueShinobiException {
29+
Shinobi sasuke = new Shinobi("Sasuke", Village.LEAF, "Genin");
30+
31+
// Add requirements for Chunin
32+
sasuke.setMissionRank('A');
33+
for (int i = 0; i < 5; i++) {
34+
sasuke.addJutsu("Jutsu" + i);
35+
}
36+
37+
assertTrue(sasuke.checkForPromotion());
38+
}
39+
40+
@Test
41+
public void testAddJutsu() throws RogueShinobiException {
42+
Shinobi kakashi = new Shinobi("Kakashi", Village.LEAF, "Jōnin");
43+
44+
kakashi.addJutsu("Chidori");
45+
assertTrue(kakashi.getJutsus().contains("Chidori"));
46+
assertEquals(1, kakashi.getJutsus().size());
47+
}
48+
49+
@Test
50+
public void testRyoManagement() throws RogueShinobiException {
51+
Shinobi sakura = new Shinobi("Sakura", Village.LEAF, "Chūnin");
52+
53+
assertEquals(0, sakura.getRyo());
54+
sakura.addRyo(1000);
55+
assertEquals(1000, sakura.getRyo());
56+
}
57+
}

lesson_16/objects/objects_app/src/test/java/com/davidadenaike/ShinobiTest.java

Lines changed: 0 additions & 62 deletions
This file was deleted.

0 commit comments

Comments
 (0)