mourning-ember / src / test / java / dev / llan / model / board / GridTest.java
GridTest.java
Raw
package dev.llan.model.board;

import dev.llan.model.Game;
import dev.llan.model.GameContainer;
import dev.llan.model.board.Tile.TileType;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

class GridTest {
  private Grid grid;

  @BeforeEach
  void setUp() {
    GameContainer.getInstance().initGame();
    Game game = GameContainer.getInstance().getCurrentGame();
    grid = game.getMap().getGrid();
  }

  @Test
  void validPosition() {
    assertTrue(grid.validPosition(new Point(3, 3)));

    grid.tileAt(new Point(1, 2)).setType(TileType.UNMOVABLE);
    grid.tileAt(new Point(1, 3)).setType(TileType.INTERACTABLE);
    grid.tileAt(new Point(1, 4)).setType(TileType.OCCUPIED);

    assertFalse(grid.validPosition(new Point(1, 2)));
    assertFalse(grid.validPosition(new Point(1, 3)));
    assertFalse(grid.validPosition(new Point(1, 4)));
  }

  @Test
  void getMovementCost() {
    Point parent = new Point(0, 0);
    Point adjacent = new Point(1, 0);
    Point diagonal = new Point(1, 1);

    assertEquals(1.0, grid.getMovementCost(adjacent, parent), 0.0001);
    assertEquals(1.414, grid.getMovementCost(diagonal, parent), 0.01);
  }

  @Test
  void updateVisibilities() {
    Point center = new Point(5, 25);
    double radius = 5.0;
    grid.updateVisibilities(center, radius);
    List<Point> withinRadius = center.findWithin(grid, radius, true);

    for (Point point : withinRadius) {
      assertTrue(grid.tileAt(point).isVisible());
    }
  }

  @Test
  void testClone() {
    Grid clone = grid.clone();
    Point point = new Point(1, 0);

    assertNotSame(grid, clone);
    assertNotSame(grid.tileAt(point), clone.tileAt(point));

    assertEquals(grid.getColSize(), clone.getColSize());
    assertEquals(grid.getRowSize(), clone.getRowSize());
    assertEquals(grid.tileAt(point).isVisible(), clone.tileAt(point).isVisible());
    assertEquals(grid.tileAt(point).getType(), clone.tileAt(point).getType());
  }
}