package dev.llan.model.pieces;
import dev.llan.model.Game;
import dev.llan.model.GameContainer;
import dev.llan.model.pieces.attributes.stats.Stats;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class EntityTest {
private Entity entity;
private Game game;
@BeforeEach
void setUp() {
GameContainer.getInstance().initGame();
game = GameContainer.getInstance().getCurrentGame();
entity = game.getPlayer();
}
@Test
void reduceHealth() {
entity.reduceHealth(5.0);
assertEquals(10.0, entity.getStats().getHealth(), 0.0001);
}
@Test
void reduceHealthPastZero() {
entity.reduceHealth(20.0);
assertEquals(0.0, entity.getStats().getHealth(), 0.0001);
}
@Test
void getStats() {
Stats stats = entity.getStats();
assertEquals(15.0, stats.getMaxHealth(), 0.0001);
assertEquals(3.0, stats.getSpeed(), 0.0001);
assertEquals(3.0, stats.getMovement(), 0.0001);
assertEquals(1.0, stats.getAttack(), 0.0001);
assertEquals(7.0, stats.getScoutingRadius(), 0.0001);
}
@Test
void reduceMovement() {
entity.reduceMovement(1.5);
assertEquals(1.5, entity.getStats().getMovement(), 0.0001);
}
@Test
void reduceMovementPastZero() {
entity.reduceMovement(3.5);
assertEquals(0.0, entity.getStats().getMovement(), 0.0001);
}
@Test
void rejectsCanMove() {
entity.reduceMovement(2.5);
double cost = 1.5;
assertFalse(entity.canMove(cost));
}
@Test
void canMove() {
entity.reduceMovement(0.5);
double cost = 1.5;
assertTrue(entity.canMove(cost));
}
}