diff --git a/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlayhtroughTest.java b/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlaythroughTest.java similarity index 97% rename from src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlayhtroughTest.java rename to src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlaythroughTest.java index 859a2db43357a58f713374025addd2ec1a4757fd..fd49df0b77d10fee055a9072165ac5806dd63a88 100644 --- a/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlayhtroughTest.java +++ b/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/PlaythroughTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.api.Test; class PlaythroughTest { private Playthrough playthrough; - Passage openingPassage; + private Passage openingPassage; @BeforeEach void setUp() { diff --git a/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/goals/GoalFactoryTest.java b/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/goals/GoalFactoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..04b20f582a43f3bc2bcb498792566a6db1589d5c --- /dev/null +++ b/src/test/java/edu/ntnu/idatt2001/group_30/paths/model/goals/GoalFactoryTest.java @@ -0,0 +1,52 @@ +package edu.ntnu.idatt2001.group_30.paths.model.goals; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +class GoalFactoryTest { + + /* + * this is a factory class, so the typical beforeEach arrange step is not needed + */ + + @ParameterizedTest + @MethodSource("validGoalTypeAndValueProvider") + void getGoal_withValidGoalTypeAndValue_returnsGoalObject() { + GoalType goalType = GoalType.GOLD_GOAL; + Object goalValue = "100"; + + Goal<?> goal = GoalFactory.getGoal(goalType, goalValue); + + assertEquals(GoldGoal.class, goal.getClass()); + } + + private static Stream<Arguments> validGoalTypeAndValueProvider() { + return Stream.of( + Arguments.of(GoalType.GOLD_GOAL, "100", GoldGoal.class), + Arguments.of(GoalType.HEALTH_GOAL, "50", HealthGoal.class), + Arguments.of(GoalType.SCORE_GOAL, "500", ScoreGoal.class) + ); + } + + @ParameterizedTest + @MethodSource("invalidGoalTypeAndValueProvider") + void getGoal_withInvalidGoalValue_throwsIllegalArgumentException() { + GoalType goalType = GoalType.GOLD_GOAL; + Object goalValue = "invalid_value"; + + assertThrows(IllegalArgumentException.class, () -> GoalFactory.getGoal(goalType, goalValue)); + } + + private static Stream<Arguments> invalidGoalTypeAndValueProvider() { + return Stream.of( + Arguments.of(GoalType.GOLD_GOAL, "invalid", GoldGoal.class), + Arguments.of(GoalType.HEALTH_GOAL, "-1", HealthGoal.class), + Arguments.of(GoalType.SCORE_GOAL, "", ScoreGoal.class) + ); + } +}