Example #1
0
        public void RegisterTrips_skips_TripEntry_if_DriverDoesNotExist()
        {
            // arrange
            List <Driver> drivers = new List <Driver>
            {
                new Driver()
                {
                    Name = "Dan"
                },
                new Driver()
                {
                    Name = "Lauren"
                },
                new Driver()
                {
                    Name = "Kumi"
                }
            };

            IStreamReader reader = Substitute.For <IStreamReader>();

            reader.CreateReader(Arg.Any <string>());
            reader.EndOfStream.Returns(false, true);
            reader.ReadLine().Returns("Trip Bob 07:15 07:45 17.3");

            TripLogic tripLogic = new TripLogic();

            // act
            List <Trip> trips = tripLogic.RegisterTrips(reader, drivers);

            // assert
            Assert.IsFalse(trips.Any());
        }
Example #2
0
        public void RegisterDriver_returns_NonEmptyDrivers()
        {
            // arrange
            IStreamReader reader = Substitute.For <IStreamReader>();

            reader.CreateReader(Arg.Any <string>());
            reader.EndOfStream.Returns(false, true);
            reader.ReadLine().Returns("Driver Test");

            TripLogic tripLogic = new TripLogic();

            // act
            List <Driver> drivers = tripLogic.RegisterDrivers(reader);

            // assert
            Assert.IsTrue(drivers.Any());
        }
Example #3
0
        private List <Person> GetPersons(string path, char delimiter)
        {
            var persons = new List <Person>();

            try
            {
                CheckForFile(path);
                _streamReaderWrapper.CreateReader(path);
                ReadLines(delimiter, persons);
            }
            finally
            {
                _streamReaderWrapper.DisposeReader();
            }

            return(persons);
        }
Example #4
0
        public void RegisterTrips_returns_CorrectTripDataForDriver()
        {
            // arrange
            List <Driver> drivers = new List <Driver>
            {
                new Driver()
                {
                    Name = "Dan"
                }
            };

            IStreamReader reader = Substitute.For <IStreamReader>();

            reader.CreateReader(Arg.Any <string>());

            reader.EndOfStream.Returns(false, true);
            reader.ReadLine().Returns("Trip Dan 07:15 07:45 17.3");

            var expectedTripData = new Trip()
            {
                Driver      = drivers[0],
                StartTime   = TimeSpan.Parse("07:15"),
                EndTime     = TimeSpan.Parse("07:45"),
                MilesDriven = (decimal)17.3
            };

            TripLogic tripLogic = new TripLogic();

            // act
            List <Trip> trips = tripLogic.RegisterTrips(reader, drivers);

            // assert
            Assert.AreEqual(expectedTripData.Driver.Name, trips[0].Driver.Name);
            Assert.AreEqual(expectedTripData.StartTime, trips[0].StartTime);
            Assert.AreEqual(expectedTripData.EndTime, trips[0].EndTime);
            Assert.AreEqual(expectedTripData.MilesDriven, trips[0].MilesDriven);
        }
Example #5
0
        public static void Run(ITripLogic tripLogic, IConsole console, IStreamReader streamReader)
        {
            string filePath = PromptForFile(console);

            int attempts = 1;

            while (!streamReader.FileExists(filePath))
            {
                if (attempts < 3)
                {
                    console.WriteLine("File not found. Please try again.\n");

                    filePath = PromptForFile(console);
                }
                else
                {
                    console.WriteLine("You have exceeded the maximum number of tries.\n");
                    return;
                }

                attempts++;
            }

            streamReader.CreateReader(filePath);

            List <Driver> drivers = tripLogic.RegisterDrivers(streamReader);

            List <Trip> trips = tripLogic.RegisterTrips(streamReader, drivers);

            List <string> driverResults = tripLogic.CalculateResults(drivers, trips);

            if (driverResults != null && driverResults.Any())
            {
                driverResults.ForEach(console.WriteLine);
            }
        }