public void car_number_column_values_are_translated_into_set_car_number_and_or_set_status_messages(SessionType session)
{
In(session).Assert(translator =>
{
CompositeMessage composite;
LiveDriver driver = translator.GetDriver(1);
Message actual = translator.Translate(new SetGridColumnValueMessage(1, GridColumn.CarNumber, GridColumnColour.White, "1"));
Assert.IsType<CompositeMessage>(actual);
composite = (CompositeMessage)actual;
Assert.Equal(2, composite.Messages.Count);
Assert.MessagesAreEqual(new SetDriverCarNumberMessage(1, 1), composite.Messages[0]);
Assert.MessagesAreEqual(new SetDriverStatusMessage(1, DriverStatus.OnTrack), composite.Messages[1]);
Assert.Equal(DriverStatus.OnTrack, driver.Status);
// Change the car number.
Assert.MessagesAreEqual(
new SetDriverCarNumberMessage(1, 2),
translator.Translate(new SetGridColumnValueMessage(1, GridColumn.CarNumber, GridColumnColour.White, "2"))
);
// Change the status.
Assert.MessagesAreEqual(
new SetDriverStatusMessage(1, DriverStatus.InPits),
translator.Translate(new SetGridColumnValueMessage(1, GridColumn.CarNumber, GridColumnColour.Red, "2"))
);
Assert.Equal(DriverStatus.InPits, driver.Status);
});
}