public void AStarPathFindServiceUnitTests_ShouldCantFindPath() { // Arrange var start = new Vector2Int(0, 0); var end = new Vector2Int(1, 0); var options = new PathFindingOptions() { Start = start, End = end }; var graphMock = new Mock <IGraph>(); graphMock.Setup(g => g.GetTransition(end, start)).Returns(0); var neighborService = new Mock <IGraphNeighborsService>(); neighborService.Setup(n => n.GetNeighbors(graphMock.Object, end, It.IsAny <IList <Vector2Int> >())) .Callback((IGraph _g, Vector2Int _v, IList <Vector2Int> res) => { res.Clear(); }); var astar_finder = new AStarPathFindService(neighborService.Object); // Act var result = astar_finder.Find(graphMock.Object, options); // Assert Assert.Null(result); }
public void AStarPathFindServiceUnitTests_ShouldFindOptimalPath_From00To04() { // Arrange var start = new Vector2Int(0, 0); var end = new Vector2Int(0, 4); var options = new PathFindingOptions() { Start = start, End = end }; var graph = new MatrixFullGraph(5, 5, 0); var neighborService = new GraphGridNeighborsService(1); var astar_finder = new AStarPathFindService(neighborService); // Act var result = astar_finder.Find(graph, options); // Assert var expected = new GraphPath() { Path = new List <Vector2Int>() { start, new Vector2Int(0, 1), new Vector2Int(0, 2), new Vector2Int(0, 3), end } }; Assert.True(Enumerable.SequenceEqual(expected.Path, result.Path)); }
public void AStarPathFindServiceUnitTests_ShouldFindOptimalPath() { // Arrange var start = new Vector2Int(0, 0); var end = new Vector2Int(1, 1); var options = new PathFindingOptions() { Start = start, End = end }; var graphMock = new Mock <IGraph>(); graphMock.Setup(g => g.GetTransition(end, start)).Returns(1); graphMock.Setup(g => g.GetTransition(end, new Vector2Int(1, 0))).Returns(1); graphMock.Setup(g => g.GetTransition(end, new Vector2Int(0, 1))).Returns(0); graphMock.Setup(g => g.GetTransition(new Vector2Int(0, 1), start)).Returns(0); graphMock.Setup(g => g.GetTransition(new Vector2Int(1, 0), start)).Returns(1); var neighborService = new Mock <IGraphNeighborsService>(); neighborService.Setup(n => n.GetNeighbors(graphMock.Object, end, It.IsAny <IList <Vector2Int> >())) .Callback((IGraph _g, Vector2Int _v, IList <Vector2Int> res) => { res.Clear(); res.Add(new Vector2Int(1, 0)); res.Add(new Vector2Int(0, 1)); res.Add(new Vector2Int(0, 0)); }); neighborService.Setup(n => n.GetNeighbors(graphMock.Object, new Vector2Int(0, 1), It.IsAny <IList <Vector2Int> >())) .Callback((IGraph _g, Vector2Int _v, IList <Vector2Int> res) => { res.Clear(); res.Add(new Vector2Int(1, 1)); res.Add(new Vector2Int(1, 0)); res.Add(new Vector2Int(0, 0)); }); var astar_finder = new AStarPathFindService(neighborService.Object); // Act var result = astar_finder.Find(graphMock.Object, options); // Assert var expected = new GraphPath() { Path = new List <Vector2Int>() { start, new Vector2Int(0, 1), end } }; Assert.True(Enumerable.SequenceEqual(expected.Path, result.Path)); neighborService.Verify( n => n.GetNeighbors(It.IsAny <IGraph>(), It.IsAny <Vector2Int>(), It.IsAny <IList <Vector2Int> >()), Times.Exactly(2)); }