| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package cz.davza.studentadventure.commands;
- import cz.davza.studentadventure.Items.Book;
- import cz.davza.studentadventure.Items.Computer;
- 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 InteractCommandTest {
- private GameData context;
- @BeforeEach
- void setUp() {
- context = TestHelpers.buildGameData();
- // Walk to computer lab: bedroom → hallway → studyroom → computerlab
- context.getMap().setNextRoom(context.getMap().getCurrentRoom().getExit("hallway"));
- context.getMap().commitRoomChange();
- context.getMap().setNextRoom(context.getMap().getCurrentRoom().getExit("studyroom"));
- context.getMap().commitRoomChange();
- context.getMap().setNextRoom(context.getMap().getCurrentRoom().getExit("computerlab"));
- context.getMap().commitRoomChange();
- }
- @Test
- void interactWithComputerReturnsActionPending() {
- CommandResult result = execute("interact computer", context);
- assertEquals(CommandState.ACTION_PENDING, result.getResultState());
- }
- @Test
- void interactWithComputerSetsNewHandler() {
- CommandResult result = execute("interact computer", context);
- assertNotNull(result.getNewCommandHandler());
- }
- @Test
- void interactWithNonExistentItemReturnsNotInteractable() {
- CommandResult result = execute("interact ghost", context);
- assertEquals(CommandState.ITEM_NOT_INTERACTABLE, result.getResultState());
- }
- @Test
- void interactWithCollectableReturnsNotInteractable() {
- // Book is in computer lab and is collectable, not interactable
- CommandResult result = execute("interact book", context);
- assertEquals(CommandState.ITEM_NOT_INTERACTABLE, result.getResultState());
- }
- @Test
- void interactWithNoParamsReturnsInvalidParams() {
- CommandResult result = execute("interact", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- }
|