package design.model; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import design.model.Club.ClubType; import design.model.undo.Memento; import java.lang.reflect.Constructor; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.lang.reflect.Modifier; /** Unit Tests for the Club class. * @author Willem Dalton **/ @Tag("Model-tier") public class GolferTest { @Test void testConstructor() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); assertEquals("John Doe", testGolfer.getFullName()); assertEquals("jdoesgolf2", testGolfer.getUsername()); assertTrue(testGolfer.checkPassword("weback4321")); } @Test void testPrivateConstructor() throws Exception { Constructor constructor = Golfer.class.getDeclaredConstructor(String.class, int.class, String.class, List.class, List.class, List.class, List.class, Team.class); assertTrue(Modifier.isPrivate(constructor.getModifiers())); constructor.setAccessible(true); Golfer testGolfer = constructor.newInstance("testUser", 12345, "Test Golfer", new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), null); assertNotNull(testGolfer); } @Test void testSetUserName() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); testGolfer.setUsername("jquitgolf2"); assertEquals("jquitgolf2", testGolfer.getUsername()); } @Test void testSetFullName() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); testGolfer.setFullName("John Joe"); assertEquals("John Joe", testGolfer.getFullName()); } @Test void testSetPassword() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); testGolfer.setPassword("lifeisroblox1234"); assertTrue(testGolfer.checkPassword("lifeisroblox1234")); } @Test void testWrongPassword() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); assertFalse(testGolfer.checkPassword("lifeisroblox1234")); } @Test void testAddCourse() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); Course exampleCourse = new Course(0, "Rolling Hills", 68, "Rochester, NY", 9, 30, new ArrayList()); testGolfer.addCourse(exampleCourse); assertEquals(exampleCourse, testGolfer.getCourses()[0]); assertTrue(testGolfer.hasCourses()); } @Test void testRemoveCourse() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); Course exampleCourse = new Course(0, "Rolling Hills", 68, "Rochester, NY", 9, 30, new ArrayList()); testGolfer.addCourse(exampleCourse); testGolfer.removeCourse(exampleCourse); assertFalse(testGolfer.hasCourses()); } @Test void testRounds() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); Course exampleCourse = new Course(0, "Rolling Hills", 68, "Rochester, NY", 9, 30, new ArrayList()); Round exampleRound = new Round(exampleCourse, LocalDateTime.MAX, new Hole(0, 3)); testGolfer.addRound(exampleRound); assertEquals(exampleRound, testGolfer.getRounds()[0]); } @Test void testAddClub() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); Club c = new Club("John Doe", "The Slammer", ClubType.DRIVER); testGolfer.addClub(c); Club addedClub = testGolfer.getClubs()[0]; assertTrue(testGolfer.hasClub(addedClub)); assertTrue(testGolfer.hasClubs()); } @Test void testRemoveClub() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); Club c = new Club("John Doe", "The Slammer", ClubType.DRIVER); testGolfer.addClub(c); Club addedClub = testGolfer.getClubs()[0]; testGolfer.removeClub(addedClub); assertFalse(testGolfer.hasClub(addedClub)); assertFalse(testGolfer.hasClubs()); } @Test void testToString() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); String expectedString = "John Doe (@jdoesgolf2)"; assertEquals(expectedString, testGolfer.toString()); } @Test void testMemento() { Golfer testGolfer = new Golfer("John Doe", "jdoesgolf2", "weback4321"); Memento memento = testGolfer.createMemento(); testGolfer.setFullName("Joe Doe"); assertEquals("Joe Doe", testGolfer.getFullName()); testGolfer.restore(memento); assertEquals("John Doe", testGolfer.getFullName()); } }