public void Starting_at_C_and_ending_at_C_with_a_maximum_of_3_stops()
        {
            var pathFinder = new RouteFinderIterative(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(2, paths.Count);
            Assert.IsTrue(paths.Exists(p => p == "CDC"));
            Assert.IsTrue(paths.Exists(p => p == "CEBC"));
        }
        public void C_TO_C_With_Distance_Less_Than_30()
        {
            var pathFinder = new RouteFinderIterative(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 Starting_at_A_and_ending_at_C_with_a_Exact_4_stops()
        {
            var pathFinder = new RouteFinderIterative(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 RouteFinderIterative(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));
        }
Ejemplo n.º 5
0
        public void C_TO_C_With_Max_Distance()
        {
            var pathFinder = new RouteFinderIterative(Map);
            var from       = Map.GetTown("C");
            var to         = Map.GetTown("C");

            var logs  = pathFinder.FindAllRoutesBetween(from, to, new DistanceGreaterThanRule(200));
            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")}");
        }