public void CancelCommandGroup_CancelAGroup_AllCommandsInGroupAreCancelled()
{
int[] commandsCanceled = {0};
var fakeFilterManager = A.Fake<IFilterManager>();
A.CallTo(() => fakeFilterManager.Process(A<CommandBase>.Ignored)).Returns(false);
var processor = new CommandProcessor(null, fakeFilterManager);
var commands = new[]
{
new TestCommand(CommandState.New, groupId: "GroupA"),
new TestCommand(CommandState.New, groupId: "GroupB"),
new TestCommand(CommandState.New, groupId: "GroupA"),
new TestCommand(CommandState.New, groupId: "GroupA"),
new TestCommand(CommandState.New, groupId: "GroupB"),
new TestCommand(CommandState.New, groupId: "GroupA"),
new TestCommand(CommandState.New, groupId: "GroupC"),
};
foreach (var command in commands)
{
command.RegisterForStateChange(Observer.Create<CommandState>(b =>
{
if (b == CommandState.Canceled)
{
commandsCanceled[0]++;
}
}));
processor.PublishCommand(command);
}
processor.CancelCommandGroup("GroupA");
Assert.AreEqual(4, commandsCanceled[0]);
}