public void Should_Return_Four_Valid_Laps() { List <Lap> totalValidLaps = new List <Lap>(); totalValidLaps.Add(new Lap() { LapNumber = 1 }); totalValidLaps.Add(new Lap() { LapNumber = 2 }); totalValidLaps.Add(new Lap() { LapNumber = 3 }); totalValidLaps.Add(new Lap() { LapNumber = 4 }); totalValidLaps.Add(new Lap() { LapNumber = 5 }); Assert.Equal(4, Lap.GetTotalValidLaps(totalValidLaps).ToList().Count); }
public Metrics GetRaceMetrics(StreamReader raceStreamReader) { var metrics = new Metrics(); metrics.PrincipalMetrics = new List <PrincipalMetrics>(); string line = raceStreamReader.ReadLine(); List <Lap> lapObject = new List <Lap>(); List <Lap> lapPilotList; int pilotNumber; BestLapDetail bestPilotLap; BestLapDetail bestRaceLap; List <decimal> averageSpeed; while ((line = raceStreamReader.ReadLine()) != null) { lapObject.Add(Lap.BuildLapObject(line)); } bestRaceLap = Lap.GetBestLap(lapObject); foreach (var pilotNumberIterator in lapObject.GroupBy(u => u.PilotNumber)) { pilotNumber = pilotNumberIterator.Key; lapPilotList = lapObject.Where(u => u.PilotNumber.Equals(pilotNumber)).ToList(); bestPilotLap = Lap.GetBestLap(lapPilotList); averageSpeed = lapPilotList.Select(u => u.LapAVG).ToList(); metrics.PrincipalMetrics.Add( new PrincipalMetrics() { QuantityCompletedLap = Race.GetCompletedLaps(lapPilotList), PilotTotalTime = Pilot.GetPilotTotalTime(Lap.GetTotalValidLaps(lapPilotList) .Select(u => Lap.GetTimeSpanFromLapString(u.LapTime)).ToList()), PilotNumber = Pilot.GetPilotNumber(lapPilotList), PilotName = Pilot.GetPilotName(lapPilotList), BestLap = $"Melhor volta do piloto: {bestPilotLap.LapNumber}, Tempo: {bestPilotLap.LapTime}", AverageSpeed = Pilot.GetPilotAverageSpeed(averageSpeed) }); } metrics.AdicionalMetrics = new AdicionalMetrics() { BestRaceLap = $"Melhor volta da corrida: {bestRaceLap.LapNumber}, Tempo: {bestRaceLap.LapTime}, Piloto: {bestRaceLap.Pilot}" }; Race.SetPosition(metrics.PrincipalMetrics); return(metrics); }