From 07be63915f083b83f657e0db5e1aaaa7c8bbc2f7 Mon Sep 17 00:00:00 2001 From: marleomac3 Date: Mon, 4 Nov 2024 01:41:25 +0000 Subject: [PATCH 1/2] feat: created footballteam object class w/ custom exception --- .../DuplicatePlayerException.java | 7 ++ .../footballteamobject/FootballTeam.java | 107 ++++++++++++++++++ .../footballteamobject/FootballTeamTest.java | 95 ++++++++++++++++ 3 files changed, 209 insertions(+) create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/DuplicatePlayerException.java create mode 100644 lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java create mode 100644 lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/DuplicatePlayerException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/DuplicatePlayerException.java new file mode 100644 index 000000000..8ce51b41c --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/DuplicatePlayerException.java @@ -0,0 +1,7 @@ +package com.codedifferently.footballteamobject; + +public class DuplicatePlayerException extends Exception { + public DuplicatePlayerException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java new file mode 100644 index 000000000..45852b1b8 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java @@ -0,0 +1,107 @@ +package com.codedifferently.footballteamobject; + +import java.util.HashMap; +import java.util.Map; + +public class FootballTeam { + + public static class DuplicatePlayerException extends Exception { + public DuplicatePlayerException(String message) { + super(message); + } + } + + private int playerCount; + private int jerseyNumber50AndOver; + private int jerseyNumberUnder50; + private Map players = new HashMap<>(); + private final String teamName; + private final String location; + private final Conference conference; + + public FootballTeam( + String teamName, String location, Conference conference, Map players) { + this.teamName = teamName; + this.location = location; + this.conference = conference; + this.players = players; + } + + public enum Conference { + // Power Five Conferences + ACC, + BIG_12, + BIG_10, + PAC_12, + SEC, + // Group of Five Conferences + AMERICAN, + CONFERENCE_USA, + MAC, + MOUNTAIN_WEST, + SUN_BELT + } + + public boolean isPowerFive() { + if (conference == Conference.ACC + || conference == Conference.BIG_12 + || conference == Conference.BIG_10 + || conference == Conference.PAC_12 + || conference == Conference.SEC) { + return true; + } + return false; + } + + public String getTeamName() { + return teamName; + } + + public String getLocation() { + return location; + } + + public Conference getConference() { + return conference; + } + + public int getPlayerCount() { + return playerCount; + } + + public Map getPlayers() { + return players; + } + + public void addPlayer(int number, String name) throws DuplicatePlayerException { + if (players.containsKey(number)) { + throw new DuplicatePlayerException( + "A player with that number already exists."); + } + players.put(number, name); + playerCount++; + } + + public void removePlayer(int number) { + players.remove(number); + playerCount--; + } + + public void tallyJerseyNumbers() { + for (Map.Entry entry : players.entrySet()) { + if (entry.getKey() < 50) { + jerseyNumberUnder50++; + } else { + jerseyNumber50AndOver++; + } + } + } + + public int getJerseyNumber50AndOver() { + return jerseyNumber50AndOver; + } + + public int getJerseyNumberUnder50() { + return jerseyNumberUnder50; + } +} diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java new file mode 100644 index 000000000..e88171449 --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java @@ -0,0 +1,95 @@ +package com.codedifferently.footballteamobject; + +import java.util.HashMap; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.codedifferently.footballteamobject.FootballTeam.Conference; + +public class FootballTeamTest { + FootballTeam team; + private Map players; + + @BeforeEach + void setUp() { + team = new FootballTeam("Alabama", "Tuscaloosa", FootballTeam.Conference.SEC, new HashMap<>()); + players = new HashMap<>(); + players.put(2, "Derrick Henry"); + } + + @Test + public void testGetTeamName_ReturnsCorrectName() { + assertEquals("Alabama", team.getTeamName()); + } + + @Test + public void testGetTeamName_ReturnsNonNull() { + assertNotNull(team.getTeamName()); + } + + @Test + public void testAddPlayer() throws FootballTeam.DuplicatePlayerException { + team.addPlayer(1, "John Doe"); + assertEquals(1, team.getPlayerCount()); + assertEquals("John Doe", team.getPlayers().get(1)); + } + + @Test + public void testRemovePlayer() throws FootballTeam.DuplicatePlayerException { + team.addPlayer(1, "John Doe"); + team.removePlayer(1); + assertEquals(0, team.getPlayerCount()); + assertFalse(team.getPlayers().containsKey(1)); + } + + @Test + public void testTallyJerseyNumbers_Under50() throws FootballTeam.DuplicatePlayerException { + team.addPlayer(1, "Player 1"); + team.tallyJerseyNumbers(); + assertEquals(1, team.getJerseyNumberUnder50()); + } + + @Test + public void testPowerFiveConferences() { + FootballTeam team = new FootballTeam("Team Name", "Location", Conference.ACC, new HashMap<>()); + assertTrue(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.BIG_12, new HashMap<>()); + assertTrue(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.BIG_10, new HashMap<>()); + assertTrue(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.PAC_12, new HashMap<>()); + assertTrue(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.SEC, new HashMap<>()); + assertTrue(team.isPowerFive()); + } + + @Test + public void testGroupOfFiveConferences() { + FootballTeam team = new FootballTeam("Team Name", "Location", Conference.AMERICAN, new HashMap<>()); + assertFalse(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.CONFERENCE_USA, new HashMap<>()); + assertFalse(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.MAC, new HashMap<>()); + assertFalse(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.MOUNTAIN_WEST, new HashMap<>()); + assertFalse(team.isPowerFive()); + team = new FootballTeam("Team Name", "Location", Conference.SUN_BELT, new HashMap<>()); + assertFalse(team.isPowerFive()); + } + + @Test + void testDuplicatePlayerException() { + String message = "A player with that number already exists."; + DuplicatePlayerException exception = new DuplicatePlayerException(message); + assertThatThrownBy(() -> { throw exception; }) + .isInstanceOf(DuplicatePlayerException.class) + .hasMessage(message); + } +} From dfadf4c315f6a72ac4d922ed61272a36168b9221 Mon Sep 17 00:00:00 2001 From: marleomac3 Date: Mon, 4 Nov 2024 01:46:25 +0000 Subject: [PATCH 2/2] fix: ran gradle commadn to fix violations --- .../footballteamobject/FootballTeam.java | 3 +-- .../footballteamobject/FootballTeamTest.java | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java index 45852b1b8..bdd8225c4 100644 --- a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/footballteamobject/FootballTeam.java @@ -75,8 +75,7 @@ public Map getPlayers() { public void addPlayer(int number, String name) throws DuplicatePlayerException { if (players.containsKey(number)) { - throw new DuplicatePlayerException( - "A player with that number already exists."); + throw new DuplicatePlayerException("A player with that number already exists."); } players.put(number, name); playerCount++; diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java index e88171449..6ae22f0f5 100644 --- a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/footballteamobject/FootballTeamTest.java @@ -1,17 +1,16 @@ package com.codedifferently.footballteamobject; -import java.util.HashMap; -import java.util.Map; - import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; import com.codedifferently.footballteamobject.FootballTeam.Conference; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class FootballTeamTest { FootballTeam team; @@ -72,7 +71,8 @@ public void testPowerFiveConferences() { @Test public void testGroupOfFiveConferences() { - FootballTeam team = new FootballTeam("Team Name", "Location", Conference.AMERICAN, new HashMap<>()); + FootballTeam team = + new FootballTeam("Team Name", "Location", Conference.AMERICAN, new HashMap<>()); assertFalse(team.isPowerFive()); team = new FootballTeam("Team Name", "Location", Conference.CONFERENCE_USA, new HashMap<>()); assertFalse(team.isPowerFive()); @@ -88,8 +88,11 @@ public void testGroupOfFiveConferences() { void testDuplicatePlayerException() { String message = "A player with that number already exists."; DuplicatePlayerException exception = new DuplicatePlayerException(message); - assertThatThrownBy(() -> { throw exception; }) - .isInstanceOf(DuplicatePlayerException.class) - .hasMessage(message); - } + assertThatThrownBy( + () -> { + throw exception; + }) + .isInstanceOf(DuplicatePlayerException.class) + .hasMessage(message); + } }