예제 #1
0
        public void EventLapAverages_Best5LapAverage_ReturnsCorrectValues()
        {
            // Arrange

            int    expectedCount            = 3;
            string expectedFirstCarNumber   = "3";
            double expectedFirstLapAverage  = 7.0;
            string expectedSecondCarNumber  = "2";
            double expectedSecondLapAverage = 8.0;
            string expectedThirdCarNumber   = "1";
            double expectedThirdLapAverage  = 9.0;

            EventLapAverages averages = BuildTestEvent20LapAverages();

            // Act

            var lapAverages = averages.BestFiveLapAverages.ToList();

            // Assert

            Assert.AreEqual(expectedCount, lapAverages.Count);

            Assert.AreEqual(expectedFirstCarNumber, lapAverages[0].CarNumber);
            Assert.AreEqual(expectedFirstLapAverage, lapAverages[0].AverageLapTime);

            Assert.AreEqual(expectedSecondCarNumber, lapAverages[1].CarNumber);
            Assert.AreEqual(expectedSecondLapAverage, lapAverages[1].AverageLapTime);

            Assert.AreEqual(expectedThirdCarNumber, lapAverages[2].CarNumber);
            Assert.AreEqual(expectedThirdLapAverage, lapAverages[2].AverageLapTime);
        }
예제 #2
0
        /// <summary>
        /// Creates records for 3 cars having 2 laps
        /// </summary>
        protected virtual EventLapAverages BuildTestEvent2LapAverages()
        {
            EventLapAverages averages = new EventLapAverages();

            int carCount = 3;
            int lapCount = 2;

            for (int carIndex = 1; carIndex < carCount + 1; carIndex++)
            {
                for (int lapIndex = 1; lapIndex < lapCount + 1; lapIndex++)
                {
                    double lapTime = 10.0 - carIndex;

                    averages.AddLapTime(
                        new VehicleLapTime()
                    {
                        CarNumber     = carIndex.ToString(),
                        TrackState    = TrackState.Green,
                        VehicleStatus = VehicleStatus.OnTrack,
                        LapNumber     = lapIndex,
                        LapTime       = lapTime,
                        LapSpeed      = 100 - lapTime
                    });
                }
            }

            return(averages);
        }
예제 #3
0
        public void EventLapAverages_Best20LapAverage_1CarNotEnoughLaps_Returns2Cars()
        {
            // Arrange

            int    expectedCount            = 2;
            string expectedFirstCarNumber   = "2";
            double expectedFirstLapAverage  = 18.0;
            string expectedSecondCarNumber  = "1";
            double expectedSecondLapAverage = 19.0;

            EventLapAverages averages = BuildTestEvent20And2LapAverages();

            // Act

            var lapAverages = averages.BestTwentyLapAverages.ToList();

            // Assert

            Assert.AreEqual(expectedCount, lapAverages.Count);

            Assert.AreEqual(expectedFirstCarNumber, lapAverages[0].CarNumber);
            Assert.AreEqual(expectedFirstLapAverage, lapAverages[0].AverageLapTime);

            Assert.AreEqual(expectedSecondCarNumber, lapAverages[1].CarNumber);
            Assert.AreEqual(expectedSecondLapAverage, lapAverages[1].AverageLapTime);
        }
예제 #4
0
        protected virtual void EventSettingsUpdated(EventSettings eventSettings)
        {
            if (eventSettings.activityId != (int)RunType.Race)
            {
                Configuration.BattleGap = 0.0;
            }

            _eventLapAverages = new EventLapAverages();
        }
예제 #5
0
        public void EventLapAverages_Last5LapAverage_AllCarsNotEnoughLaps_EmptyList()
        {
            // Arrange

            int expectedCount = 0;

            EventLapAverages averages = BuildTestEvent2LapAverages();

            // Act

            var lapAverages = averages.LastFiveLapAverages.ToList();

            // Assert

            Assert.AreEqual(expectedCount, lapAverages.Count);
        }
예제 #6
0
        /// <summary>
        /// Creates records for 2 cars having 20 laps and 1 car having 2 laps
        /// </summary>
        protected virtual EventLapAverages BuildTestEvent20And2LapAverages()
        {
            EventLapAverages averages = new EventLapAverages();

            int carCount       = 3;
            int lapCount       = 20;
            int slowLapCutoff1 = 5;
            int slowLapCutoff2 = 15;

            for (int carIndex = 1; carIndex < carCount + 1; carIndex++)
            {
                for (int lapIndex = 1; lapIndex < lapCount + 1; lapIndex++)
                {
                    if (carIndex < 3 || (carIndex >= 3 && lapIndex < 3))
                    {
                        double lapTime;

                        if (lapIndex > slowLapCutoff2)
                        {
                            lapTime = 30.0 - carIndex;
                        }
                        else if (lapIndex > slowLapCutoff1)
                        {
                            lapTime = 20.0 - carIndex;
                        }
                        else
                        {
                            lapTime = 10.0 - carIndex;
                        }

                        averages.AddLapTime(
                            new VehicleLapTime()
                        {
                            CarNumber     = carIndex.ToString(),
                            TrackState    = TrackState.Green,
                            VehicleStatus = VehicleStatus.OnTrack,
                            LapNumber     = lapIndex,
                            LapTime       = lapTime,
                            LapSpeed      = 100 - lapTime
                        });
                    }
                }
            }

            return(averages);
        }