Exemple #1
0
        public void BuildRaceTrace_ShouldThrowException_WhenDriverLookupIsNull(
            RaceTraceFactory raceTraceFactory,
            DriverCodeGenerator driverCodeGenerator)
        {
            var driverRaceData = new DriverRaceData(driverCodeGenerator.Generate());
            var raceData       = new RaceData(driverRaceData);
            var timeSpan       = TimeSpan.FromTicks(TimeSpan.TicksPerMinute);
            var referenceTime  = new ReferenceTime(timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds);

            Assert.Throws <ArgumentNullException>(() => raceTraceFactory.Build(raceData, referenceTime, null));
        }
Exemple #2
0
        public void BuildRaceTrace_ShouldThrowException_WhenRaceDataIsNull(
            RaceTraceFactory raceTraceFactory,
            DriverCodeGenerator driverCodeGenerator,
            string driverName)
        {
            var timeSpan      = TimeSpan.FromTicks(TimeSpan.TicksPerMinute);
            var referenceTime = new ReferenceTime(timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds);
            var diverLookup   = new Dictionary <DriverCode, string> {
                { driverCodeGenerator.Generate(), driverName }
            };

            Assert.Throws <ArgumentNullException>(() => raceTraceFactory.Build(null, referenceTime, diverLookup));
        }
Exemple #3
0
        public void BuildRaceTrace_ShouldThrowException_WhenReferenceTimeIsNull(
            RaceTraceFactory raceTraceFactory,
            DriverCodeGenerator driverCodeGenerator,
            string driverName)
        {
            var driverRaceData = new DriverRaceData(driverCodeGenerator.Generate());
            var raceData       = new RaceData(driverRaceData);
            var diverLookup    = new Dictionary <DriverCode, string> {
                { driverCodeGenerator.Generate(), driverName }
            };

            Assert.Throws <ArgumentNullException>(() => raceTraceFactory.Build(raceData, null, diverLookup));
        }
Exemple #4
0
 /// <summary>
 /// Initialises a new instance of the <see cref="RaceTraceService"/> object.
 /// </summary>
 /// <param name="lapRepository">The lap time repository.</param>
 /// <param name="driverService">The driver service.</param>
 /// <param name="mapper">The mapper.</param>
 /// <param name="referenceTimeCalculator">The reference time calculator.</param>
 /// <param name="raceTraceFactory">The race trace factory.</param>
 /// <param name="dataIsLoadingObserver">Observer to notify if data is loading.</param>
 public RaceTraceService(ILapRepository lapRepository,
                         IDriverService driverService,
                         DriverLapTimesMapper mapper,
                         ReferenceTimeCalculator referenceTimeCalculator,
                         RaceTraceFactory raceTraceFactory,
                         DataLoadingObserver dataIsLoadingObserver)
 {
     _lapRepository           = lapRepository;
     _driverService           = driverService;
     _mapper                  = mapper;
     _referenceTimeCalculator = referenceTimeCalculator;
     _raceTraceFactory        = raceTraceFactory;
     _dataIsLoadingObserver   = dataIsLoadingObserver;
 }
Exemple #5
0
        public void BuildRaceTrace_CalculatesTrace_ForSingleDriver(
            RaceTraceFactory raceTraceFactory,
            DriverCodeGenerator driverCodeGenerator,
            LapDataGenerator lapDataGenerator,
            string driverName)
        {
            var driverCode     = driverCodeGenerator.Generate();
            var driverRaceData = new DriverRaceData(driverCode);

            var laps = lapDataGenerator.GenerateLaps(4);

            foreach (var(lapTime, lapData) in laps)
            {
                driverRaceData.AddLap(lapTime, lapData);
            }

            var raceData      = new RaceData(driverRaceData);
            var timeSpan      = TimeSpan.FromTicks(TimeSpan.TicksPerMinute);
            var referenceTime = new ReferenceTime(timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds);
            var diverLookup   = new Dictionary <DriverCode, string> {
                { driverCode, driverName }
            };

            var raceTrace = raceTraceFactory.Build(raceData, referenceTime, diverLookup);

            Assert.NotNull(raceTrace);
            Assert.Equal(1, raceTrace.DriverCodes.Count);

            var traceData = raceTrace.GetDataForDriver(driverCode);

            Assert.NotNull(traceData);

            var traceLapDeltas = traceData.GetAllLaps();

            Assert.Equal(4, traceLapDeltas.Count);
        }