package dev.llan.model.board;
import dev.llan.model.Game;
import dev.llan.model.GameContainer;
import dev.llan.model.pieces.GamePieces;
import dev.llan.model.pieces.enemies.Enemy;
import dev.llan.events.GridUpdatedEvent;
import dev.llan.events.GameEvent;
import dev.llan.model.state.State;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class GameMapTest {
private Game game;
private GameMap map;
@BeforeEach
void setUp() {
GameContainer.getInstance().initGame();
game = GameContainer.getInstance().getCurrentGame();
map = game.getMap();
}
@Test
void init() {
GamePieces pieces = map.init();
assertNotNull(pieces.player());
assertNotEquals(0, pieces.enemies().size());
assertNotEquals(0, pieces.inanimates().size());
}
@Test
void moveEntityExploration() {
game.tryMoveTo(new Point(5, 5));
List<GameEvent> events =
map.moveEntity(game.getPlayer(), game.getPlayer().getActivePath().get());
assertEquals(5, events.size());
assertInstanceOf(GridUpdatedEvent.class, events.get(0));
}
@Test
void moveEntityCombat() {
game.setState(State.COMBAT);
game.tryMoveTo(new Point(5, 5));
List<GameEvent> events =
map.moveEntity(game.getPlayer(), game.getPlayer().getActivePath().get());
assertEquals(2, events.size());
assertInstanceOf(GridUpdatedEvent.class, events.get(0));
}
@Test
void removeEnemy() {
Enemy toRemove = game.getEnemies().get(0);
map.removeEnemy(toRemove);
assertFalse(game.getEnemies().contains(toRemove));
}
}