mourning-ember / src / test / java / dev / llan / model / pieces / enemies / BaseEnemyTest.java
BaseEnemyTest.java
Raw
package dev.llan.model.pieces.enemies;

import dev.llan.model.Game;
import dev.llan.model.GameContainer;
import dev.llan.model.board.Point;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.HashSet;
import java.util.Set;

import static org.junit.jupiter.api.Assertions.*;

class BaseEnemyTest {
  private BaseEnemy enemy;
  private Game game;

  @BeforeEach
  void setUp() {
    GameContainer.getInstance().initGame();
    game = GameContainer.getInstance().getCurrentGame();
    game.getEnemies().stream()
        .filter(
            enemy -> (enemy instanceof BaseEnemy && enemy.getPosition().equals(new Point(20, 20))))
        .findFirst()
        .ifPresent(enemy -> this.enemy = (BaseEnemy) enemy);
  }

  @Test
  void setInCombat() {
    assertFalse(enemy.inCombat());

    enemy.setInCombat();

    assertTrue(enemy.inCombat());
  }

  @Test
  void notifyNearbyEnemies() {
    Set<Enemy> notified = new HashSet<>();
    enemy.setInCombat();
    notified.add(enemy);
    enemy.notifyNearbyEnemies(game.getEnemies(), notified);

    assertEquals(3, notified.size());
  }

  @Test
  void withinRadius() {
    assertEquals(enemy.getPosition(), new Point(20, 20));

    boolean within = enemy.withinRadius(game.getPlayer().getPosition());

    assertFalse(within);

    game.tryMoveTo(new Point(15, 15));
    game.moveActivePath();

    within = enemy.withinRadius(game.getPlayer().getPosition());

    assertTrue(within);
  }
}