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)); }
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)); }
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)); }
/// <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; }
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); }