Example #1
0
        public void GetDistanceOfRoute_ShouldReturnCorrectValue()
        {
            var routeInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7";

            var target = new RailroadSystem();

            target.BuildRoutesGraphWith(routeInfo);

            var stops = new []
            {
                new [] { 'A', 'B', 'C' }
                , new [] { 'A', 'D' }
                , new [] { 'A', 'D', 'C' }
                , new [] { 'A', 'E', 'B', 'C', 'D' }
            };

            var expected = new []
            {
                9, 5, 13, 22
            };

            for (var i = 0; i < stops.Length; i++)
            {
                var actual = target.GetDistanceOfRouteWith(stops[i]);
                Assert.That(actual, Is.EqualTo(expected[i]));
            }
        }
Example #2
0
        public void BuildRouteGraph_ShouldBuildAGraph()
        {
            var routeInfo = string.Empty;
            var target    = new RailroadSystem();

            target.BuildRoutesGraphWith(routeInfo);
            var actual = target.RoutesGraph;

            Assert.That(actual, Is.InstanceOf <Graph>());
        }
Example #3
0
        public void BuildRouteGraph_ShouldBuildCorrectGraph()
        {
            var routeInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7";

            var target = new RailroadSystem();

            target.BuildRoutesGraphWith(routeInfo);
            var actual = target.RoutesGraph;

            Assert.That(actual.GetNeighborsOf('A'), Is.EquivalentTo(new [] { 'B', 'D', 'E' }));
        }
Example #4
0
        public void GetDistanceOfRoute_ShouldReturnMessageIfNoRouteExists()
        {
            var routeInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7";

            var target = new RailroadSystem();

            target.BuildRoutesGraphWith(routeInfo);

            var stops = new [] { 'A', 'E', 'D' };

            var actual = target.GetDistanceOfRouteWith(stops);

            Assert.That(actual, Is.EqualTo("NO SUCH ROUTE"));
        }
Example #5
0
        public void GetDistanceOfShortestRoute_IfStartTownAndEndTownAreSameShouldReturnCorrectValue()
        {
            var routeInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7";

            var target = new RailroadSystem();

            target.BuildRoutesGraphWith(routeInfo);

            var startTown = 'B';
            var endTown   = 'B';
            var expected  = 9;

            var actual = target.GetDistanceOfShortestRoute(startTown, endTown);

            Assert.That(actual, Is.EqualTo(expected));
        }
Example #6
0
        public void GetNumberOfTripsWithMaxStops_ShouldReturCorrectValue()
        {
            var routeInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7";

            var target = new RailroadSystem();

            target.BuildRoutesGraphWith(routeInfo);

            var startTown = 'C';
            var endTown   = 'C';
            var maxStops  = 3;
            var expected  = 2;

            var actual = target.GetNumberOfTripsWithMaxStops(startTown, endTown, maxStops);

            Assert.That(actual, Is.EqualTo(expected));
        }
Example #7
0
        private static void PrintRailwaySystemInfoInFile(string fileName)
        {
            var routes         = GetTrainRouteInfoFromFile(fileName);
            var railroadSystem = new RailroadSystem();

            railroadSystem.BuildRoutesGraphWith(routes);

            Console.WriteLine($"Output #1: {railroadSystem.GetDistanceOfRouteWith('A', 'B', 'C')}");
            Console.WriteLine($"Output #2: {railroadSystem.GetDistanceOfRouteWith('A', 'D')}");
            Console.WriteLine($"Output #3: {railroadSystem.GetDistanceOfRouteWith('A', 'D', 'C')}");
            Console.WriteLine($"Output #4: {railroadSystem.GetDistanceOfRouteWith('A', 'E', 'B', 'C', 'D')}");
            Console.WriteLine($"Output #5: {railroadSystem.GetDistanceOfRouteWith('A', 'E', 'D')}");
            Console.WriteLine($"Output #6: {railroadSystem.GetNumberOfTripsWithMaxStops('C', 'C', 3)}");
            Console.WriteLine($"Output #7: {railroadSystem.GetNumberOfTripsWithExactStops('A', 'C', 4)}");
            Console.WriteLine($"Output #8: {railroadSystem.GetDistanceOfShortestRoute('A', 'C')}");
            Console.WriteLine($"Output #9: {railroadSystem.GetDistanceOfShortestRoute('B', 'B')}");
            Console.WriteLine($"Output #10: {railroadSystem.GetNumberOfTripsWithMaxDistance('C', 'C', 30)}");
        }