public void CreateEvaluatesPostBuildActionsInOrderOfDescendingPriorityTest()
{
var firstAction = Substitute.For<IPostBuildAction>();
var secondAction = Substitute.For<IPostBuildAction>();
var buildStrategy = new DefaultBuildStrategyCompiler().Add(firstAction).Add(secondAction).Compile();
var executeCount = 0;
firstAction.IsSupported(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()).Returns(true);
secondAction.IsSupported(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()).Returns(true);
firstAction.WhenForAnyArgs(x => x.Execute(null, null, null)).Do(
x =>
{
executeCount++;
executeCount.Should().Be(1);
});
secondAction.WhenForAnyArgs(x => x.Execute(null, null, null)).Do(
x =>
{
executeCount++;
executeCount.Should().Be(2);
});
var target = new DefaultExecuteStrategy();
target.Initialize(buildStrategy, buildStrategy.GetBuildLog());
target.Create(typeof(Simple));
firstAction.Received().Execute(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>());
secondAction.Received().Execute(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>());
}