public void Starting_at_C_and_ending_at_C_with_a_maximum_of_3_stops() { var pathFinder = new RouteFinderRecursive(Map); var from = Map.GetTown("C"); var to = Map.GetTown("C"); var paths = pathFinder.FindAllRoutesBetween(from, to, new StopsGreaterThanRule(3)).Select(p => p.RouteCovered).ToList(); Assert.AreEqual(16, paths.Count); Assert.IsTrue(paths.All(p => p.StartsWith("C"))); Assert.IsTrue(paths.All(p => p.EndsWith("C"))); }
public void C_TO_C_With_Distance_Less_Than_30() { var pathFinder = new RouteFinderRecursive(Map); var from = Map.GetTown("C"); var to = Map.GetTown("C"); var logs = pathFinder.FindAllRoutesBetween(from, to, new DistanceGreaterThanRule(29)); var paths = logs.Select(p => p.RouteCovered).ToList(); Assert.AreEqual(272, paths.Count); Assert.IsTrue(paths.All(p => p.StartsWith("C"))); Assert.IsTrue(paths.All(p => p.EndsWith("C"))); }
public void C_TO_C_With_Max_Distance() { var pathFinder = new RouteFinderRecursive(Map); var from = Map.GetTown("C"); var to = Map.GetTown("C"); var logs = pathFinder.FindAllRoutesBetween(from, to, new DistanceGreaterThanRule(60)); var paths = logs.Select(p => p.RouteCovered).ToList(); Assert.IsTrue(paths.All(p => p.StartsWith("C"))); Assert.IsTrue(paths.All(p => p.EndsWith("C"))); Debug.Write(pathFinder.RecursionCount); }
public void Starting_at_A_and_ending_at_C_with_a_Exact_4_stops() { var pathFinder = new RouteFinderRecursive(Map); var from = Map.GetTown("A"); var to = Map.GetTown("C"); var logs = pathFinder.FindAllRoutesBetween(from, to, new StopsGreaterThanRule(4), new StopsEqualToRule(4)); var paths = logs.Select(p => p.RouteCovered).ToList(); Assert.AreEqual(3, paths.Count); Assert.IsTrue(paths.Exists(p => p == "ABCDC")); Assert.IsTrue(paths.Exists(p => p == "ADCDC")); Assert.IsTrue(paths.Exists(p => p == "ADEBC")); }
public void Starting_at_A_and_ending_at_C_with_a_Exact_4_stops() { var pathFinder = new RouteFinderRecursive(Map); var from = Map.GetTown("A"); var to = Map.GetTown("C"); var logs = pathFinder.FindAllRoutesBetween(from, to, new StopsGreaterThanRule(4), new StopsEqualToRule(4)); var paths = logs.Select(p => p.RouteCovered).ToList(); Assert.AreEqual(51, paths.Count); Assert.IsTrue(paths.All(p => p.StartsWith("A"))); Assert.IsTrue(paths.All(p => p.EndsWith("C"))); Assert.IsTrue(paths.All(p => p.Length == 5)); Assert.IsTrue(logs.All(l => l.StopsTravelled == 4)); }
public void C_TO_C_With_Large_Stops() { var pathFinder = new RouteFinderRecursive(Map); var from = Map.GetTown("C"); var to = Map.GetTown("C"); var logs = pathFinder.FindAllRoutesBetween(from, to, new StopsGreaterThanRule(40)); var paths = logs.Select(p => p.RouteCovered).ToList(); Assert.IsTrue(paths.All(p => p.StartsWith("C"))); Assert.IsTrue(paths.All(p => p.EndsWith("C"))); Debug.WriteLine($"Total paths: {paths.Count().ToString("N0")}"); Debug.WriteLine($"Total recursions: {pathFinder.RecursionCount.ToString("N0")}"); }