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