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());
}
}