public override void Visit(SetDriverSectorTimeMessage message) { LiveDriver driver = GetDriver(message); driver.SetLastSector(message.SectorNumber, message.SectorTime); driver.CurrentSectorNumber = message.SectorNumber != 3 ? message.SectorNumber + 1 : 1; }
/// <inheritdoc/> public virtual void Visit(SetDriverSectorTimeMessage message) { }
public void Visit(SetDriverSectorTimeMessage message) { Result = true; }
void IMessageVisitor.Visit(SetDriverSectorTimeMessage message) { Dispatch(message); }
/// <inheritdoc/> public override void Visit(SetDriverSectorTimeMessage message) { if(IsForMyDriver(message)) { Model.LapTimes.GetSector(message.SectorNumber).Add(message.SectorTime); } }
public void when_a_driver_is_on_the_track_in_sector_1_then_sector_1_column_colours_are_translated_into_a_set_sector_time_message( SessionType session) { In(session).Assert(translator => { var driver = translator.GetDriver(1); var expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.Normal, 5)); driver.ChangeStatus(DriverStatus.OnTrack); driver.LapNumber = 5; driver.CurrentSectorNumber = 1; driver.SetLastSector(1, PT(23.5, PostedTimeType.Normal, 4)); driver.SetColumnHasValue(GridColumn.S1, true); Assert.MessagesAreEqual( expected, translator.Translate(new SetGridColumnColourMessage(1, GridColumn.S1, GridColumnColour.White)) ); Assert.Equal(expected.SectorTime, driver.GetLastSector(1)); Assert.Equal(2, driver.CurrentSectorNumber); }); }
public void when_a_driver_is_on_the_track_then_sector_2_column_values_are_translated_into_set_sector_time_messages(SessionType session) { In(session).Assert(translator => { var driver = translator.GetDriver(1); var expected = new SetDriverSectorTimeMessage(1, 2, PT(23.5, PostedTimeType.Normal, 5)); driver.ChangeStatus(DriverStatus.OnTrack); driver.LapNumber = 5; Assert.MessagesAreEqual( expected, translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S2, GridColumnColour.White, "23.5")) ); Assert.Equal(expected.SectorTime, driver.GetLastSector(2)); Assert.Equal(3, driver.CurrentSectorNumber); // We don't assert the other types here as it is sufficiently covered by the sector 1 test. }); }
public void when_a_driver_is_on_the_track_then_sector_1_column_values_are_translated_into_set_sector_time_messages(SessionType session) { In(session).Assert(translator => { SetDriverSectorTimeMessage expected; LiveDriver driver = translator.GetDriver(1); driver.ChangeStatus(DriverStatus.OnTrack); driver.LapNumber = 5; // TODO Perhaps this test should be moved into one of its own as we also test here that not setting the // CurrentSectorNumber still results in a translation for the given sector // Normal lap time. expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.Normal, 5)); Assert.MessagesAreEqual( expected, translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S1, GridColumnColour.White, "23.5")) ); Assert.Equal(expected.SectorTime, driver.GetLastSector(1)); Assert.Equal(2, driver.CurrentSectorNumber); // Personal best lap time. driver.CurrentSectorNumber = 1; expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.PersonalBest, 5)); Assert.MessagesAreEqual( expected, translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S1, GridColumnColour.Green, "23.5")) ); Assert.Equal(expected.SectorTime, driver.GetLastSector(1)); Assert.Equal(2, driver.CurrentSectorNumber); // Session best lap time. driver.CurrentSectorNumber = 1; expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.SessionBest, 5)); Assert.MessagesAreEqual( expected, translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S1, GridColumnColour.Magenta, "23.5")) ); Assert.Equal(expected.SectorTime, driver.GetLastSector(1)); Assert.Equal(2, driver.CurrentSectorNumber); }); }
private Message TranslateSetDriverSectorTimeMessage(SetDriverSectorTimeMessage message) { if(!IsRaceSession || message.SectorNumber != 3) { return message; } // We do not receive lap messages during a race session so we infer it from the current race // lap number and the driver's current gap. return new CompositeMessage(message, new SetDriverLapNumberMessage(message.DriverId, GetDriver(message).ComputeLapNumber(RaceLapNumber))); }