public void Remove() { var tourProviders = new SourceList <TourProvider>(); var allTours = tourProviders.Connect().TransformMany(tourProvider => tourProvider.Tours).AsObservableList(); var tour1_1 = new Tour("Tour 1.1"); var tour2_1 = new Tour("Tour 2.1"); var tour2_2 = new Tour("Tour 2.2"); var tour3_1 = new Tour("Tour 3.1"); var tp1 = new TourProvider("Tour provider 1", new[] { tour1_1 }); var tp2 = new TourProvider("Tour provider 2", new[] { tour2_1, tour2_2 }); var tp3 = new TourProvider("Tour provider 3", null); tourProviders.AddRange(new[] { tp1, tp2, tp3 }); allTours.Items.Should().BeEquivalentTo(tour1_1, tour2_1, tour2_2); tp3.Tours.Add(tour3_1); allTours.Items.Should().BeEquivalentTo(tour1_1, tour2_1, tour2_2, tour3_1); tp2.Tours.Remove(tour2_1); allTours.Items.Should().BeEquivalentTo(tour1_1, tour2_2, tour3_1); tp2.Tours.Add(tour2_1); allTours.Items.Should().BeEquivalentTo(tour1_1, tour2_1, tour2_2, tour3_1); }
/// <summary> /// Given a list of points, return the points, each with an orderId. /// </summary> /// <param name="points"></param> /// <returns></returns> private IEnumerable <OrderPoint> GetOrderPoints(IEnumerable <Point> points) { if (points.Count() > MaxClusterSize) { return(points.Select((p, i) => new OrderPoint() { PointId = p.PointId, Name = p.Name, HorizontalDisplacement = p.HorizontalDisplacement, VerticalDisplacement = p.VerticalDisplacement, OrderId = i })); } var vertices = TourBridge.GetVertices(points); var matrix = TourBridge.GetMatrix(points); var tourProvider = new TourProvider(vertices, matrix); var solvedVertices = tourProvider.Solve(); var orderedPoints = TourBridge.GetPoints(points, solvedVertices); return(orderedPoints.Select((p, i) => new OrderPoint() { PointId = p.PointId, Name = p.Name, HorizontalDisplacement = p.HorizontalDisplacement, VerticalDisplacement = p.VerticalDisplacement, OrderId = i })); }
public void SolveTest() { var vertices = new [] { 0, 1, 2, 3 }; var matrix = new double[, ] { { 0, 10, 15, 20 }, { 5, 0, 9, 10 }, { 6, 13, 0, 12 }, { 8, 8, 9, 0 } }; var expectedRoute = new [] { 0, 1, 3, 2, 0 }; var DynamicProgramming = new TourProvider(vertices, matrix); var route = DynamicProgramming.Solve(); Assert.IsTrue(ListComparer.Compare(expectedRoute, route.ToArray())); }