| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package cz.davza.studentadventure.objects;
- import cz.davza.studentadventure.Items.Book;
- import cz.davza.studentadventure.Items.EnergyDrink;
- import cz.davza.studentadventure.interfaces.IItem;
- import org.junit.jupiter.api.BeforeEach;
- import org.junit.jupiter.api.Test;
- import static org.junit.jupiter.api.Assertions.*;
- class ItemCollectionTest {
- private PlayerInventory inventory;
- private IItem book;
- private IItem drink;
- @BeforeEach
- void setUp() {
- inventory = new PlayerInventory(20); // capacity of 20 bulk
- book = new Book(); // bulk = 3
- drink = new EnergyDrink();// bulk = 2
- }
- // ── Add ──────────────────────────────────────────────────────────
- @Test
- void addItemStoresIt() {
- inventory.Add(book, 1);
- assertNotNull(inventory.GetByItemCode("book"));
- }
- @Test
- void addItemReturnsZeroLeftoverWhenFits() {
- int leftOver = inventory.Add(book, 1);
- assertEquals(0, leftOver);
- }
- @Test
- void addItemDecreasesRemainingCapacity() {
- inventory.Add(book, 1); // bulk 3
- assertEquals(17, inventory.GetRemainingCapacity());
- }
- @Test
- void addMultipleOfSameItemStacksTogether() {
- inventory.Add(book, 2);
- assertEquals(2, inventory.GetByItemCode("book").getAmount());
- }
- @Test
- void addReturnsLeftoverWhenCapacityExceeded() {
- // capacity 20, book bulk 3 → fits 6 (uses 18), 7th overflows
- int leftOver = inventory.Add(book, 7);
- assertEquals(1, leftOver);
- }
- @Test
- void addDifferentItemsTrackSeparately() {
- inventory.Add(book, 1);
- inventory.Add(drink, 1);
- assertNotNull(inventory.GetByItemCode("book"));
- assertNotNull(inventory.GetByItemCode("energy_drink"));
- }
- @Test
- void addZeroItemsDoesNothing() {
- // capacity / bulk = 20/3 = 6, asking for 0 → canInsert = min(0, 6) = 0
- inventory.Add(book, 0);
- assertNull(inventory.GetByItemCode("book"));
- assertEquals(20, inventory.GetRemainingCapacity());
- }
- // ── Remove ───────────────────────────────────────────────────────
- @Test
- void removeReducesStackAmount() {
- inventory.Add(book, 3);
- inventory.Remove("book", 1);
- assertEquals(2, inventory.GetByItemCode("book").getAmount());
- }
- @Test
- void removeRestoresCapacity() {
- inventory.Add(book, 2); // uses 6
- inventory.Remove("book", 1); // frees 3
- assertEquals(17, inventory.GetRemainingCapacity());
- }
- @Test
- void removeEntireStackCleansUpEntry() {
- inventory.Add(book, 1);
- inventory.Remove("book", 1);
- assertNull(inventory.GetByItemCode("book"));
- }
- @Test
- void removeMoreThanStackRemovesAll() {
- inventory.Add(book, 2);
- inventory.Remove("book", 10);
- assertNull(inventory.GetByItemCode("book"));
- }
- @Test
- void removeMissingCodeIsNoOp() {
- assertDoesNotThrow(() -> inventory.Remove("nonexistent", 1));
- }
- @Test
- void removeFullyRestoresCapacityToInitial() {
- inventory.Add(book, 2);
- inventory.Remove("book", 2);
- assertEquals(20, inventory.GetRemainingCapacity());
- }
- // ── GetByItemCode ─────────────────────────────────────────────────
- @Test
- void getByItemCodeReturnsNullForMissingItem() {
- assertNull(inventory.GetByItemCode("book"));
- }
- @Test
- void getByItemCodeReturnsCorrectStack() {
- inventory.Add(drink, 3);
- ItemStack stack = inventory.GetByItemCode("energy_drink");
- assertNotNull(stack);
- assertEquals(3, stack.getAmount());
- }
- // ── Capacity ──────────────────────────────────────────────────────
- @Test
- void getRemainingCapacityStartsAtMax() {
- assertEquals(20, inventory.GetRemainingCapacity());
- }
- @Test
- void getCapacityReturnsInitialSize() {
- assertEquals(20, inventory.GetCapacity());
- }
- // ── Empty ─────────────────────────────────────────────────────────
- @Test
- void emptyRemovesAllItems() {
- inventory.Add(book, 2);
- inventory.Add(drink, 1);
- inventory.Empty();
- assertTrue(inventory.GetItems().isEmpty());
- }
- @Test
- void emptyResetsUsedCapacity() {
- inventory.Add(book, 2);
- inventory.Empty();
- assertEquals(20, inventory.GetRemainingCapacity());
- }
- }
|