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);
        }
Ejemplo n.º 2
0
        private Route FindCheapestByCar(Location start, Location end)
        {
            var path = _pathUtil.FindCheapest(start, end);

            return(RouteFromPath(path));
        }