using Microsoft.Xna.Framework; using Xunit; namespace MrGameEng.Pathfinding.Tests; /// /// Размеры грида фиксируются в конструкторе; «уехавший» грид должен давать /// громкую ошибку, а не молчаливое чтение мимо границ. /// public class GridResizeTests { private sealed class ResizableGrid : IPathGrid { public int Width { get; set; } = 4; public int Height { get; set; } = 4; public bool IsPassable(int x, int y) => true; public float Cost(int x, int y) => 1f; } [Fact] public void FindPath_AfterGridResize_Throws() { var grid = new ResizableGrid(); var pathfinder = new GridPathfinder(grid); grid.Width = 8; Assert.Throws(() => pathfinder.FindPath(new Point(0, 0), new Point(1, 1), []) ); } [Fact] public void FlowFieldBuild_AfterGridResize_Throws() { var grid = new ResizableGrid(); var builder = new FlowFieldBuilder(grid); grid.Height = 8; Assert.Throws(() => builder.Build([new Point(0, 0)], new FlowField()) ); } }