package design.model; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; import java.util.Date; import java.time.LocalDateTime; /** Unit Tests for the Match class. * @author Willem Dalton **/ @Tag("Model-tier") public class MatchTest { @Test void testConstructor() { Course testCourse = new Course(0, "Rolling Waves", 67, "Rochester. NY", 9, 30, new ArrayList()); Date testDate = new Date(1234567); LocalDateTime now = LocalDateTime.now(); Match testMatch = new Match(testCourse, testDate, now, 9); assertEquals(testCourse, testMatch.getCourse()); assertEquals(testDate, testMatch.getDateScheduled()); assertEquals(now, testMatch.getStart()); assertEquals(9, testMatch.getHoleCount()); } @Test void testPrivateConstructor() throws Exception { Course testCourse = new Course(0, "Rolling Waves", 67, "Rochester. NY", 9, 30, new ArrayList()); Constructor constructor = Match.class.getDeclaredConstructor(Course.class, Date.class, LocalDateTime.class, int.class, List.class); assertTrue(Modifier.isPrivate(constructor.getModifiers())); constructor.setAccessible(true); Match testMatch = constructor.newInstance(testCourse, new Date(1234), LocalDateTime.now(), 0, new ArrayList<>()); assertNotNull(testMatch); } @Test void testAddRound() { Course testCourse = new Course(0, "Rolling Waves", 67, "Rochester. NY", 9, 30, new ArrayList()); Date testDate = new Date(1234567); LocalDateTime now = LocalDateTime.now(); Match testMatch = new Match(testCourse, testDate, now, 9); Round testRound = new Round(testCourse, now, new Hole(0, 5)); testMatch.addRound(testRound); assertEquals(testRound, testMatch.getRounds()[0]); assertEquals(1, testMatch.getRounds().length); } }