| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package cz.davza.studentadventure.commands;
- import cz.davza.studentadventure.Items.Book;
- import cz.davza.studentadventure.TestHelpers;
- import cz.davza.studentadventure.enums.CommandState;
- import cz.davza.studentadventure.objects.CommandResult;
- import cz.davza.studentadventure.objects.GameData;
- import org.junit.jupiter.api.BeforeEach;
- import org.junit.jupiter.api.Test;
- import static cz.davza.studentadventure.TestHelpers.execute;
- import static org.junit.jupiter.api.Assertions.*;
- class WalkCommandTest {
- private GameData context;
- @BeforeEach
- void setUp() {
- context = TestHelpers.buildGameData();
- // starts in Bedroom
- }
- @Test
- void walkToValidExitSetsNextRoom() {
- execute("walk hallway", context);
- assertTrue(context.getMap().hasPendingRoomChange());
- }
- @Test
- void walkToValidExitReturnsRoomChanged() {
- CommandResult result = execute("walk hallway", context);
- assertEquals(CommandState.ROOM_CHANGED, result.getResultState());
- }
- @Test
- void walkAdvancesTimeByTwoHours() {
- int before = context.getTime().getHour();
- execute("walk hallway", context);
- assertEquals(before + 2, context.getTime().getHour());
- }
- @Test
- void walkAdvancesHoursAwake() {
- execute("walk hallway", context);
- // 1 hour awake — still NORMAL
- assertEquals(cz.davza.studentadventure.enums.DeprivationState.NORMAL,
- context.getPlayer().getDeprivationState());
- }
- @Test
- void walkToInvalidExitReturnsFailed() {
- CommandResult result = execute("walk narnia", context);
- assertEquals(CommandState.FAILED, result.getResultState());
- }
- @Test
- void walkWithNoParamsReturnsInvalidParams() {
- CommandResult result = execute("walk", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void walkToClassroomWithoutBookReturnsFailed() {
- // Bedroom → hallway (commit) → classroom (no book)
- execute("walk hallway", context);
- context.getMap().commitRoomChange();
- CommandResult result = execute("walk classroom", context);
- assertEquals(CommandState.FAILED, result.getResultState());
- }
- @Test
- void walkToClassroomWithoutBookAppliesStressPenalty() {
- execute("walk hallway", context);
- context.getMap().commitRoomChange();
- int stressBefore = context.getPlayer().getStress().getValue();
- execute("walk classroom", context);
- assertTrue(context.getPlayer().getStress().getValue() > stressBefore);
- }
- @Test
- void walkToClassroomWithBookReturnsRoomChanged() {
- context.getPlayer().getInventory().Add(new Book(), 1);
- execute("walk hallway", context);
- context.getMap().commitRoomChange();
- CommandResult result = execute("walk classroom", context);
- assertEquals(CommandState.ROOM_CHANGED, result.getResultState());
- }
- @Test
- void walkToExamRoomReturnsActionPending() {
- // Bedroom → hallway → classroom (with book) → examroom
- context.getPlayer().getInventory().Add(new Book(), 1);
- execute("walk hallway", context);
- context.getMap().commitRoomChange();
- execute("walk classroom", context);
- context.getMap().commitRoomChange();
- CommandResult result = execute("walk examroom", context);
- assertEquals(CommandState.ACTION_PENDING, result.getResultState());
- }
- }
|