public void FilteredNeighbors_Unconstrained_EightWayNeighbors()
        {
            Vec2            vec2            = new Vec2(5, 5);
            PathfindingGrid grid            = new PathfindingGrid(vec2);
            Vec2            tileCoordinates = new Vec2(3, 3);

            Motility        agentMotility = Motility.Unconstrained | Motility.EightWayNeighbors;
            List <GridNode> nodes         = new List <GridNode>();

            grid.Fill(position => new GridNode(Tiles.Stone, position, grid));
            nodes.Add(new GridNode(Tiles.Stone, new Vec2(2, 2), grid));
            nodes.Add(new GridNode(Tiles.Stone, new Vec2(3, 2), grid));
            nodes.Add(new GridNode(Tiles.Stone, new Vec2(4, 2), grid));

            nodes.Add(new GridNode(Tiles.Stone, new Vec2(2, 3), grid));
            nodes.Add(new GridNode(Tiles.Stone, new Vec2(4, 3), grid));

            nodes.Add(new GridNode(Tiles.Stone, new Vec2(2, 4), grid));
            nodes.Add(new GridNode(Tiles.Stone, new Vec2(3, 4), grid));
            nodes.Add(new GridNode(Tiles.Stone, new Vec2(4, 4), grid));

            IReadOnlyCollection <GridNode> filteredNeighbors = grid.FilteredNeighbors(grid[tileCoordinates], agentMotility);

            CollectionAssert.AreEquivalent(nodes.AsReadOnly(), filteredNeighbors);
        }
        public void FilteredNeighbors_LandMotility_FourWayNeighbors()
        {
            Vec2            vec2            = new Vec2(5, 5);
            PathfindingGrid grid            = new PathfindingGrid(vec2);
            Vec2            tileCoordinates = new Vec2(3, 3);

            Motility        agentMotility = Motility.Land | Motility.FourWayNeighbors;
            List <GridNode> nodes         = new List <GridNode>();

            grid.Fill(position => new GridNode(Tiles.Stone, position, grid));
            grid[2, 3] = new GridNode(Tiles.Floor, new Vec2(2, 3), grid);
            grid[3, 4] = new GridNode(Tiles.Floor, new Vec2(3, 4), grid);

            nodes.Add(new GridNode(Tiles.Floor, new Vec2(2, 3), grid));
            nodes.Add(new GridNode(Tiles.Floor, new Vec2(3, 4), grid));

            CollectionAssert.AreEquivalent(nodes.AsReadOnly(), grid.FilteredNeighbors(grid[tileCoordinates], agentMotility));
        }