public void PublishOrderedCommands_TwoCommandsAreSendInOrder_CommandsAreExecutedInOrder()
{
var resetEvent = new ManualResetEventSlim(false);
var commandsCompleted = new bool[2];
var filterManager = new FilterManager();
var processor = new CommandProcessor(null, filterManager);
var command = new TestCommand(CommandState.New, shouldCompleteAfterExecute:false) { Order = 13};
command.RegisterForStateChange(Observer.Create<CommandState>(b =>
{
if (b == CommandState.Successed)
{
commandsCompleted[0] = true;
}
}));
var command2 = new TestCommand(CommandState.New, shouldCompleteAfterExecute: true) { Order = 2 };
command2.RegisterForStateChange(Observer.Create<CommandState>(b =>
{
if (b == CommandState.Successed)
{
commandsCompleted[1] = true;
resetEvent.Set();
}
}));
processor.PublishOrderedCommands(new[] { command, command2 });
resetEvent.Wait();
Assert.IsTrue(commandsCompleted.All(f => f));
}