public void WhenCheapestIsSearchedAC_ThenCorrectPathIsFound() { // Arrange var segments = MockSegments(); var locations = Locations(); var sut = new ShortestPathUtil(segments, locations); var start = locations.Single(l => l.CityName == "A"); var end = locations.Single(l => l.CityName == "C"); // Act var path = sut.FindCheapest(start, end); // Assert Assert.IsTrue(path.Origin.Id == "A"); Assert.IsTrue(path.Destination.Id == "C"); var time = path.Segments.Select(s => s.Weight).Aggregate((s, w) => s + w); var route = new List <string>(); foreach (var node in path.Segments) { if (!route.Contains(node.Origin.Id)) { route.Add(node.Origin.Id); } if (!route.Contains(node.Destination.Id)) { route.Add(node.Destination.Id); } } var stringRoute = string.Join(",", route); Assert.IsTrue(stringRoute == "A,E,C"); Assert.IsTrue(time == 6.0); }
private Route FindCheapestByCar(Location start, Location end) { var path = _pathUtil.FindCheapest(start, end); return(RouteFromPath(path)); }