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