mourning-ember / src / test / java / dev / llan / model / board / PointTest.java
PointTest.java
Raw
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)));
  }
}