示例#1
0
        public void Should_Return_Valid_Object_Line_Format_One()
        {
            string mockLine = "23:49:08.277      038 – F.MASSA                           1		1:02.852                        44,275";
            var    lap      = Lap.BuildLapObject(mockLine);

            Assert.NotNull(lap);
        }
示例#2
0
        public void Should_Return_Valid_Object_Line_Format_Two()
        {
            string mockLine = "23:49:11.075      002 – K.RAIKKONEN                       1             1:04.108                        43,408";
            var    lap      = Lap.BuildLapObject(mockLine);

            Assert.NotNull(lap);
        }
示例#3
0
        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);
        }
示例#4
0
        public void Should_Fail_No_Data_Present_In_Model()
        {
            string mockLine = "";

            Assert.Throws <ArgumentOutOfRangeException>(() => Lap.BuildLapObject(mockLine));
        }
示例#5
0
        public void Should_Fail_No_Datetime_Present_In_Model()
        {
            string mockLine = "002 – K.RAIKKONEN                       1             1:04.108                        43,408";

            Assert.Throws <FormatException>(() => Lap.BuildLapObject(mockLine));
        }