public void CreateWithReturnsValueFromCreatorWithNoArgumentsAndDetectConstructorEnabledTest()
{
var expected = new Person();
var typeCreators = new List<ITypeCreator>();
var typeCreator = Substitute.For<ITypeCreator>();
var buildStrategy = Substitute.For<IBuildStrategy>();
var resolver = Substitute.For<IConstructorResolver>();
typeCreators.Add(typeCreator);
buildStrategy.TypeCreators.Returns(typeCreators.AsReadOnly());
buildStrategy.ConstructorResolver.Returns(resolver);
var target = new DefaultExecuteStrategy();
target.Initialize(buildStrategy, buildStrategy.GetBuildLog());
resolver.Resolve(typeof(Person))
.Returns(typeof(Person).GetConstructors().Single(x => x.GetParameters().Length == 0));
typeCreator.CanCreate(typeof(Person), null, Arg.Any<LinkedList<object>>()).Returns(true);
typeCreator.Create(typeof(Person), null, Arg.Any<LinkedList<object>>()).Returns(expected);
typeCreator.Populate(expected, target).Returns(expected);
typeCreator.AutoPopulate.Returns(false);
typeCreator.AutoDetectConstructor.Returns(true);
var actual = target.CreateWith(typeof(Person));
actual.Should().BeSameAs(expected);
}