private string GenerateDriverInvalidTrips(DriverData driverData)
        {
            var header = $"Invalid {driverData.Name} trips";
            var lines  = new[]
            {
                new[] { header },
                driverData.InvalidTrips.Select(t => GenerateDRiverInvalidTripLine(t))
            }.SelectMany(l => l);

            return(string.Join('\n', lines));
        }
        /// <summary>
        /// Summarizes the given driver data
        /// </summary>
        private string GenerateReportLine(DriverData driverData)
        {
            var roundedMiles = Math.Round(driverData.MilesDriven, 0);
            var driverMiles  = $"{driverData.Name}: {roundedMiles} miles";

            var line = driverMiles + (roundedMiles > 0
                ? $" @ {GetRoundedSpeedMph(driverData.MilesDriven, driverData.TimeDriven)} mph"
                : "");

            line = line + (roundedMiles > 0
                ? $", {GetPercentHighway(driverData.MilesDriven, driverData.HighwayMilesDriven)}% highway"
                : "");

            if (driverData.InvalidTrips.Any())
            {
                line += '\n';
                line += GenerateDriverInvalidTrips(driverData);
            }

            return(line);
        }