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