mourning-ember / src / test / java / dev / llan / model / board / GameMapTest.java
GameMapTest.java
Raw
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));
  }
}