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