public void CreateReturnsInstanceCreatedWithMatchingParameterConstructorTest() { var args = new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, true, Guid.NewGuid(), Environment.TickCount }; var target = new DefaultTypeCreator(); var actual = target.Create(typeof(Person), null, null, args); actual.Should().BeOfType<Person>(); var person = (Person) actual; person.FirstName.Should().Be((string) args[0]); person.LastName.Should().Be((string) args[1]); person.DOB.Should().Be((DateTime) args[2]); person.IsActive.Should().Be((bool) args[3]); person.Id.Should().Be((Guid) args[4]); person.Priority.Should().Be((int) args[5]); }
public void CreateReturnsInstanceCreatedWithCreatedParameters() { var constructorResolver = new DefaultConstructorResolver(CacheLevel.PerInstance); var constructorInfo = constructorResolver.Resolve(typeof(SimpleConstructor), null) !; var args = new object[] { new SlimModel() }; var executeStrategy = Substitute.For <IExecuteStrategy>(); var typeResolver = Substitute.For <ITypeResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); executeStrategy.CreateParameters(constructorInfo).Returns(args); configuration.ConstructorResolver.Returns(constructorResolver); configuration.TypeResolver.Returns(typeResolver); typeResolver.GetBuildType(configuration, Arg.Any <Type>()).Returns(x => x.Arg <Type>()); executeStrategy.Configuration.Returns(configuration); var sut = new DefaultTypeCreator(); var actual = sut.Create(executeStrategy, typeof(SimpleConstructor), null); actual.Should().NotBeNull(); }
public void PriorityReturnsHigherThanDefaultTypeCreator() { var sut = new ArrayTypeCreator(); var other = new DefaultTypeCreator(); sut.Priority.Should().BeGreaterThan(other.Priority); }
public void CanCreateThrowsExceptionWithNullTypeTest() { var target = new DefaultTypeCreator(); Action action = () => target.CanCreate(null, null, null); action.ShouldThrow<ArgumentNullException>(); }
public void CanCreateReturnsWhetherTypeCanBeCreatedTest(Type targetType, bool expected) { var target = new DefaultTypeCreator(); var actual = target.CanCreate(targetType, null, null); actual.Should().Be(expected); }
public void ImplementedByTypeReturnsTypeCreatorType() { var creator = new DefaultTypeCreator(); var sut = new BuildCapability(creator, false, false); sut.ImplementedByType.Should().Be <DefaultTypeCreator>(); }
public void CreateThrowsExceptionWhenNoTypeNotSupportedTest() { var target = new DefaultTypeCreator(); Action action = () => target.Create(typeof(Stream), null, null); action.ShouldThrow<NotSupportedException>(); }
public void CreateReturnsInstanceCreatedWithDefaultConstructorTest() { var target = new DefaultTypeCreator(); var actual = target.Create(typeof(Person), null, null); actual.Should().NotBeNull(); }
public void AddWithTypeCreatorThrowsExceptionWithNullConfiguration() { var typeCreator = new DefaultTypeCreator(); Action action = () => BuildConfigurationExtensions.Add(null !, typeCreator); action.Should().Throw <ArgumentNullException>(); }
public void CanPopulateReturnsTrueTest() { var target = new DefaultTypeCreator(); var actual = target.CanPopulate(typeof(Person), null, null); actual.Should().BeTrue(); }
public void CanPopulateThrowsExceptionWithNullTypeTest() { var buildChain = new LinkedList<object>(); var target = new DefaultTypeCreator(); Action action = () => target.CanPopulate(null, "Name", buildChain); action.ShouldThrow<ArgumentNullException>(); }
public void AddWithTypeCreatorAddsTypeCreatorToConfiguration() { var typeCreator = new DefaultTypeCreator(); var sut = new BuildConfiguration(); var config = sut.Add(typeCreator); config.Should().Be(sut); sut.TypeCreators.Should().Contain(typeCreator); }
public void UpdateTypeCreatorThrowsExceptionWhenOnlyBaseClassFound() { var sut = new BuildConfiguration(); var typeCreator = new DefaultTypeCreator(); sut.TypeCreators.Add(typeCreator); Action action = () => sut.UpdateTypeCreator <ArrayTypeCreator>(x => { // Do nothing }); action.Should().Throw <InvalidOperationException>(); }
public void UpdateTypeCreatorUpdateMatchingTypeCreatorMatchingExplicitType() { var maxCount = Environment.TickCount; var sut = new BuildConfiguration(); var first = new DefaultTypeCreator(); var second = new ArrayTypeCreator(); sut.TypeCreators.Add(first); sut.TypeCreators.Add(second); var config = sut.UpdateTypeCreator <ArrayTypeCreator>(x => { x.MaxCount = maxCount; }); config.Should().Be(sut); second.MaxCount.Should().Be(maxCount); }
public void CreateThrowsExceptionWhenNoAppropriateConstructorFoundTest() { var args = new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid(), Environment.TickCount }; var target = new DefaultTypeCreator(); Action action = () => target.Create(typeof(Person), null, null, args); action.ShouldThrow<MissingMemberException>(); }
public void CreateThrowsExceptionWhenTypeNotSupported() { var targetType = typeof(Environment); var typeResolver = Substitute.For <ITypeResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); var executeStrategy = Substitute.For <IExecuteStrategy>(); configuration.TypeResolver.Returns(typeResolver); typeResolver.GetBuildType(configuration, targetType).Returns(targetType); executeStrategy.Configuration.Returns(configuration); var sut = new DefaultTypeCreator(); Action action = () => sut.Create(executeStrategy, targetType); action.Should().Throw <NotSupportedException>(); }
public void CanCreateReturnsWhetherTypeCanBeCreatedTest(Type targetType, bool expected) { var constructorInfo = targetType.GetConstructors().FirstOrDefault(); var typeResolver = Substitute.For <ITypeResolver>(); var constructorResolver = Substitute.For <IConstructorResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); configuration.TypeResolver.Returns(typeResolver); configuration.ConstructorResolver.Returns(constructorResolver); typeResolver.GetBuildType(configuration, targetType).Returns(targetType); constructorResolver.Resolve(targetType, null).Returns(constructorInfo); var sut = new DefaultTypeCreator(); var actual = sut.CanCreate(configuration, null !, targetType); actual.Should().Be(expected); }
public void CreateThrowsExceptionWhenNoTypeNotSupported() { var buildChain = new BuildHistory(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var typeResolver = Substitute.For <ITypeResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); configuration.TypeResolver.Returns(typeResolver); typeResolver.GetBuildType(configuration, Arg.Any <Type>()).Returns(x => x.Arg <Type>()); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Configuration.Returns(configuration); var sut = new DefaultTypeCreator(); Action action = () => sut.Create(executeStrategy, typeof(Stream)); action.Should().Throw <NotSupportedException>(); }
public void CreateThrowsExceptionWhenConstructorNotFound() { var constructorResolver = Substitute.For <IConstructorResolver>(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var typeResolver = Substitute.For <ITypeResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); constructorResolver.Resolve(Arg.Any <Type>()).Returns((ConstructorInfo?)null); configuration.ConstructorResolver.Returns(constructorResolver); configuration.TypeResolver.Returns(typeResolver); typeResolver.GetBuildType(configuration, Arg.Any <Type>()).Returns(x => x.Arg <Type>()); executeStrategy.Configuration.Returns(configuration); var sut = new DefaultTypeCreator(); Action action = () => sut.Create(executeStrategy, typeof(Person), null); action.Should().Throw <NotSupportedException>(); }
public void CreateReturnsInstanceCreatedWithResolvedDefaultConstructorWhenArgumentsIsNull() { var constructorResolver = new DefaultConstructorResolver(CacheLevel.PerInstance); var executeStrategy = Substitute.For <IExecuteStrategy>(); var typeResolver = Substitute.For <ITypeResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); configuration.ConstructorResolver.Returns(constructorResolver); configuration.TypeResolver.Returns(typeResolver); typeResolver.GetBuildType(configuration, Arg.Any <Type>()).Returns(x => x.Arg <Type>()); executeStrategy.Configuration.Returns(configuration); var sut = new DefaultTypeCreator(); var actual = sut.Create(executeStrategy, typeof(Person), null); actual.Should().NotBeNull(); }
public void CanCreateReturnsTrueWhenTypeHasPublicConstructor() { var type = typeof(Person); var constructorInfo = typeof(Person).GetConstructors().First(); var configuration = Substitute.For <IBuildConfiguration>(); var typeResolver = Substitute.For <ITypeResolver>(); var constructorResolver = Substitute.For <IConstructorResolver>(); var buildChain = Substitute.For <IBuildChain>(); configuration.TypeResolver.Returns(typeResolver); configuration.ConstructorResolver.Returns(constructorResolver); typeResolver.GetBuildType(configuration, type).Returns(type); constructorResolver.Resolve(type, Arg.Any <object?[]?>()).Returns(constructorInfo); var sut = new DefaultTypeCreator(); var actual = sut.CanCreate(configuration, buildChain, type); actual.Should().BeTrue(); }
public void CreateThrowsExceptionWhenTypeConstructorsDoNotSupportProvidedArguments() { var executeStrategy = Substitute.For <IExecuteStrategy>(); var typeResolver = Substitute.For <ITypeResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); configuration.TypeResolver.Returns(typeResolver); typeResolver.GetBuildType(configuration, Arg.Any <Type>()).Returns(x => x.Arg <Type>()); executeStrategy.Configuration.Returns(configuration); var args = new object[] { Guid.NewGuid() }; var sut = new DefaultTypeCreator(); Action action = () => sut.Create(executeStrategy, typeof(Person), args); action.Should().Throw <NotSupportedException>(); }
public void CanCreateReturnsFalseWhenNoPublicConstructorFound() { var type = typeof(FactoryItem); ConstructorInfo?constructorInfo = null; var configuration = Substitute.For <IBuildConfiguration>(); var typeResolver = Substitute.For <ITypeResolver>(); var constructorResolver = Substitute.For <IConstructorResolver>(); var buildChain = Substitute.For <IBuildChain>(); configuration.TypeResolver.Returns(typeResolver); configuration.ConstructorResolver.Returns(constructorResolver); typeResolver.GetBuildType(configuration, type).Returns(type); constructorResolver.Resolve(type, Arg.Any <object?[]?>()).Returns(constructorInfo); var sut = new DefaultTypeCreator(); var actual = sut.CanCreate(configuration, buildChain, type); actual.Should().BeFalse(); }
public void CreateReturnsInstanceCreatedWithProvidedArguments() { var constructorInfo = typeof(Person).GetConstructors().First(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var typeResolver = Substitute.For <ITypeResolver>(); var constructorResolver = Substitute.For <IConstructorResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); configuration.TypeResolver.Returns(typeResolver); configuration.ConstructorResolver.Returns(constructorResolver); typeResolver.GetBuildType(configuration, Arg.Any <Type>()).Returns(x => x.Arg <Type>()); executeStrategy.Configuration.Returns(configuration); constructorResolver.Resolve(typeof(Person), Arg.Any <object?[]?>()).Returns(constructorInfo); var args = new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, true, Guid.NewGuid(), Environment.TickCount }; var sut = new DefaultTypeCreator(); var actual = sut.Create(executeStrategy, typeof(Person), args); actual.Should().BeOfType <Person>(); var person = (Person)actual !; person.FirstName.Should().Be((string)args[0]); person.LastName.Should().Be((string)args[1]); person.DOB.Should().Be((DateTime)args[2]); person.IsActive.Should().Be((bool)args[3]); person.Id.Should().Be((Guid)args[4]); person.Priority.Should().Be((int)args[5]); }
public void PopulateReturnsProvidedInstance() { var expected = Model.Create <Simple>() !; var buildChain = new BuildHistory(); var constructorResolver = new DefaultConstructorResolver(CacheLevel.PerInstance); var executeStrategy = Substitute.For <IExecuteStrategy>(); var typeResolver = Substitute.For <ITypeResolver>(); var configuration = Substitute.For <IBuildConfiguration>(); configuration.TypeResolver.Returns(typeResolver); typeResolver.GetBuildType(configuration, Arg.Any <Type>()).Returns(x => x.Arg <Type>()); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Configuration.Returns(configuration); configuration.ConstructorResolver.Returns(constructorResolver); var sut = new DefaultTypeCreator(); var actual = sut.Populate(executeStrategy, expected); actual.Should().Be(expected); }
public void AddWithTypeCreatorThrowsExceptionWithNullCompilerTest() { var rule = new DefaultTypeCreator(); IBuildStrategyCompiler target = null; Action action = () => target.Add(rule); action.ShouldThrow<ArgumentNullException>(); }
public void AddWithTypeCreatorAddsRuleToCompilerTest() { var rule = new DefaultTypeCreator(); var target = new BuildStrategyCompiler(); target.Add(rule); target.TypeCreators.Should().Contain(rule); }
public void PopulateReturnsProvidedInstanceTest() { var executeStrategy = new DummyExecuteStrategy(); var expected = new SlimModel(); var target = new DefaultTypeCreator(); var actual = target.Populate(expected, executeStrategy); actual.Should().BeSameAs(expected); }
public void PopulateThrowsExceptionWithNullTypeTest() { var executeStrategy = new DummyExecuteStrategy(); var target = new DefaultTypeCreator(); Action action = () => target.Populate(null, executeStrategy); action.ShouldThrow<ArgumentNullException>(); }
public void ProrityReturnsHigherThanDefaultTypeCreatorTest() { var target = new ArrayTypeCreator(); var other = new DefaultTypeCreator(); target.Priority.Should().BeGreaterThan(other.Priority); }
public void CreateWithThrowsExceptionWhenPropertyCannotBeCreatedTest() { var typeCreator = new DefaultTypeCreator(); var typeCreators = new List<ITypeCreator>(); var buildStrategy = Substitute.For<IBuildStrategy>(); var resolver = Substitute.For<IConstructorResolver>(); typeCreators.Add(typeCreator); resolver.Resolve(typeof(SlimModel), Arg.Any<object[]>()).Returns(typeof(SlimModel).GetConstructors()[0]); buildStrategy.ConstructorResolver.Returns(resolver); buildStrategy.TypeCreators.Returns(typeCreators.AsReadOnly()); var target = new DefaultExecuteStrategy(); target.Initialize(buildStrategy, buildStrategy.GetBuildLog()); Action action = () => target.CreateWith(typeof(SlimModel)); action.ShouldThrow<BuildException>(); }