package dev.llan.model.board; import dev.llan.model.pieces.inanimates.Door; import dev.llan.model.board.Tile.TileType; import dev.llan.model.pieces.player.MainCharacter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class TileTest { private Tile tile; @BeforeEach void setUp() { tile = new Tile(new Point(0, 0), TileType.VACANT); } @Test void addEntity() { tile.addEntity(new MainCharacter(new Point(0, 0), null)); assertEquals(tile.getType(), TileType.OCCUPIED); assertTrue(tile.getEntity().isPresent()); } @Test void removeEntity() { tile.addEntity(new MainCharacter(new Point(0, 0), null)); assertTrue(tile.getEntity().isPresent()); tile.removeEntity(); assertEquals(tile.getType(), TileType.VACANT); assertTrue(tile.getEntity().isEmpty()); } @Test void addInanimate() { tile.addInanimate(new Door(new Point(0, 0), null)); assertEquals(tile.getType(), TileType.INTERACTABLE); assertTrue(tile.getInanimate().isPresent()); } @Test void removeInanimate() { tile.addInanimate(new Door(new Point(0, 0), null)); assertTrue(tile.getInanimate().isPresent()); tile.removeInanimate(); assertEquals(tile.getType(), TileType.VACANT); assertTrue(tile.getInanimate().isEmpty()); } @Test void setVisible() { assertFalse(tile.isVisible()); tile.setVisible(true); assertTrue(tile.isVisible()); } @Test void testClone() { Tile clone = tile.clone(); assertNotSame(tile, clone); assertEquals(tile.getType(), clone.getType()); assertEquals(tile.getTerrainCost(), clone.getTerrainCost()); } }