| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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 PickupCommandTest {
- private GameData context;
- @BeforeEach
- void setUp() {
- context = TestHelpers.buildGameData();
- // Bedroom starts with a Bed and Money — add a Book for pickup tests
- context.getMap().getCurrentRoom().getItems().Add(new Book(), 3);
- }
- @Test
- void pickupItemAddsToInventory() {
- execute("pickup book", context);
- assertNotNull(context.getPlayer().getInventory().GetByItemCode("book"));
- }
- @Test
- void pickupItemRemovesFromRoom() {
- int before = context.getMap().getCurrentRoom().getItems().GetByItemCode("book").getAmount();
- execute("pickup book", context);
- int after = context.getMap().getCurrentRoom().getItems().GetByItemCode("book").getAmount();
- assertEquals(before - 1, after);
- }
- @Test
- void pickupSpecificAmountPicksCorrectNumber() {
- execute("pickup book 2", context);
- assertEquals(2, context.getPlayer().getInventory().GetByItemCode("book").getAmount());
- }
- @Test
- void pickupReturnsSuccessState() {
- CommandResult result = execute("pickup book", context);
- assertEquals(CommandState.SUCCESS, result.getResultState());
- }
- @Test
- void pickupNonExistentItemReturnsItemNotFound() {
- CommandResult result = execute("pickup energy_drink", context);
- assertEquals(CommandState.ITEM_NOT_FOUND, result.getResultState());
- }
- @Test
- void pickupNonCollectableReturnsNotCollectable() {
- // Bed is in bedroom and is not collectable
- CommandResult result = execute("pickup bed", context);
- assertEquals(CommandState.ITEM_NOT_COLLECTABLE, result.getResultState());
- }
- @Test
- void pickupWithNoParamsReturnsInvalidParams() {
- CommandResult result = execute("pickup", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void pickupWhenInventoryFullReturnsInventoryFull() {
- // Fill inventory: capacity 20, book bulk 3 → 6 books fill 18, 7th won't all fit
- context.getMap().getCurrentRoom().getItems().Add(new Book(), 10);
- // Add 6 books to inventory (uses 18 capacity, 2 remaining — not enough for another book at bulk 3)
- context.getPlayer().getInventory().Add(new Book(), 6);
- CommandResult result = execute("pickup book 1", context);
- assertEquals(CommandState.INVENTORY_FULL, result.getResultState());
- }
- @Test
- void pickupWithNonNumberAmountReturnsInvalidParams() {
- CommandResult result = execute("pickup book abc", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void pickupDefaultsToOneWhenNoAmountGiven() {
- execute("pickup book", context);
- assertEquals(1, context.getPlayer().getInventory().GetByItemCode("book").getAmount());
- }
- }
|