public void CompileReturnsNewBuildStrategyTest()
{
var constructorResolver = Substitute.For<IConstructorResolver>();
var creationRules = new List<CreationRule>
{
new CreationRule(typeof(string), "Test", int.MaxValue, "Stuff")
};
var typeCreators = new List<ITypeCreator>
{
new DefaultTypeCreator()
};
var valueGenerators = new List<IValueGenerator>
{
new AddressValueGenerator()
};
var ignoreRules = new List<IgnoreRule>
{
new IgnoreRule(typeof(Person), "FirstName")
};
var executeOrderRules = new List<ExecuteOrderRule>
{
new ExecuteOrderRule(typeof(Person), "LastName", int.MinValue)
};
var postBuildActions = new List<IPostBuildAction>
{
Substitute.For<IPostBuildAction>()
};
var target = new BuildStrategyCompiler
{
ConstructorResolver = constructorResolver
};
target.CreationRules.Add(creationRules[0]);
target.TypeCreators.Add(typeCreators[0]);
target.ValueGenerators.Add(valueGenerators[0]);
target.IgnoreRules.Add(ignoreRules[0]);
target.ExecuteOrderRules.Add(executeOrderRules[0]);
target.PostBuildActions.Add(postBuildActions[0]);
var actual = target.Compile();
actual.ConstructorResolver.Should().Be(constructorResolver);
actual.CreationRules.ShouldBeEquivalentTo(creationRules);
actual.TypeCreators.ShouldBeEquivalentTo(typeCreators);
actual.ValueGenerators.ShouldBeEquivalentTo(valueGenerators);
actual.IgnoreRules.ShouldBeEquivalentTo(ignoreRules);
actual.ExecuteOrderRules.ShouldBeEquivalentTo(executeOrderRules);
actual.PostBuildActions.ShouldBeEquivalentTo(postBuildActions);
}