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