package dev.llan.model.board;
import dev.llan.model.Game;
import dev.llan.model.GameContainer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class PointTest {
private Grid grid;
@BeforeEach
void setUp() {
GameContainer.getInstance().initGame();
Game game = GameContainer.getInstance().getCurrentGame();
grid = game.getMap().getGrid();
}
@Test
void getDistance() {
Point a = new Point(1, 1);
Point b = new Point(5, 10);
double answer = 9.84886;
double distance = Point.getDistance(a, b);
assertEquals(answer, distance, 0.0001);
}
@Test
void findImmediateNeighbors() {
Point a = new Point(3, 3);
List<Point> neighbors = a.findImmediateNeighbors(grid);
assertEquals(8, neighbors.size());
}
@Test
void findRestrictedImmediateNeighbors() {
Point a = new Point(0, 0);
List<Point> neighbors = a.findImmediateNeighbors(grid);
assertEquals(3, neighbors.size());
}
@Test
void findWithin() {
Point a = new Point(5, 5);
List<Point> neighbors = a.findWithin(grid, 2.9, true);
assertEquals(24, neighbors.size());
}
@Test
void findRestrictedWithin() {
Point a = new Point(0, 0);
List<Point> neighbors = a.findWithin(grid, 2.9, true);
assertEquals(8, neighbors.size());
}
@Test
void findNearestVacant() {
Point a = new Point(0, 0);
grid.tileAt(new Point(1, 0)).setType(Tile.TileType.OCCUPIED);
grid.tileAt(new Point(1, 1)).setType(Tile.TileType.OCCUPIED);
grid.tileAt(new Point(0, 1)).setType(Tile.TileType.OCCUPIED);
List<Point> closest = a.findClosestVacant(grid);
assertFalse(closest.contains(new Point(1, 0)));
assertFalse(closest.contains(new Point(1, 1)));
assertFalse(closest.contains(new Point(0, 1)));
assertTrue(closest.contains(new Point(2, 0)));
}
}