protected override void Given() { var graph = GraphMother.ChannelDelanceyThornlandsBeckwith; nav = new GraphNavigator(graph, PointMother.ChannelSt, PointMother.ChannelSt, new ChannelDelanceyBeckwithThornlandsRoadService()); cycles = nav.GetCycles(); //foreach (var c in cycles) { Console.WriteLine(c.ToString()); } stitcher = new StitchingService(cycles, graph); }
public void GetCycles_RealRoadService() { var graph = new DirectedGraph(new[] { PointMother.ChannelSt, PointMother.BurchellSt, PointMother.EthelSt }); var nav = new GraphNavigator(graph, PointMother.ChannelSt, PointMother.ChannelSt, new RoadPathService(GetEmptyRouteCache(), new Mock<ILogService>().Object)); var cycles = nav.GetCycles(); Assert.AreEqual(2, cycles.Count); AssertChannelEthelChannelCycle(cycles[0]); AssertBurchellBurchellCycle(cycles[1]); }
public void GetCycles_FakeRoadService() { var graph = new DirectedGraph(new[] { PointMother.ChannelSt, PointMother.BurchellSt, PointMother.EthelSt }); var nav = new GraphNavigator(graph, PointMother.ChannelSt, PointMother.ChannelSt, new ChannelEthelBurchellRoadService()); var cycles = nav.GetCycles(); Assert.AreEqual(2, cycles.Count); AssertChannelChannelCycle(cycles[0]); AssertBurchellBurchellCycle(cycles[1]); }
public void GetCycles_FakeRoadService_NonCyclic() { var graph = new DirectedGraph(new[] { PointMother.ChannelSt, PointMother.BurchellSt, PointMother.EthelSt }); var nav = new GraphNavigator(graph, PointMother.ChannelSt, PointMother.BurchellSt, new ChannelEthelBurchellRoadService()); var cycles = nav.GetCycles(); Assert.AreEqual(2, cycles.Count); Assert.AreEqual(1, cycles[0].Routes.Count); Assert.AreEqual(PointMother.ChannelSt, cycles[0].Routes[0].From); Assert.AreEqual(PointMother.BurchellSt, cycles[0].Routes[0].To); Assert.AreEqual(PointMother.EthelSt, cycles[1].Routes[0].From); Assert.AreEqual(PointMother.EthelSt, cycles[1].Routes[0].To); }
public Directions Optimize(Point[] points) { DBC.Assert(points.Length > 1, "Unable to optimize a route with less than 2 points."); Log(points); if (IsSingleRouteDirections(points)) return BuildSingleRouteDirections(points); var graph = new DirectedGraph(points); var graphNavigator = new GraphNavigator(graph, points.First(), points.Last(), roadPathService); IList<Directions> cycles = graphNavigator.GetCycles(); stitchingService = new StitchingService(cycles, graph); var stitched = stitchingService.Stitch(); stitched.Order(points.First(), points.Last()); return stitched; }
protected override void Given() { var graph = GraphMother.ChannelDelanceyThornlandsBeckwith; nav = new GraphNavigator(graph, PointMother.ChannelSt, PointMother.ChannelSt, new ChannelDelanceyBeckwithThornlandsRoadService()); stitcher = new StitchingService(nav.GetCycles(), graph); }