public ParameterCreator([NotNull] IArgumentsGenerator creator) // todo rename Arguments or ParameterCreator { Guard.ArgumentNotNull(creator, nameof(creator)); _creator = creator; }
public void Initialize( ) { _finder = Substitute.For <IArgumentNullExceptionFinder> ( ); _generator = Substitute.For <IArgumentsGenerator> ( ); _typeClass = typeof(Something); _typeInt = typeof(int); _instance = new Something(new SomethingElse( )); }
public void Initialize( ) { _creator = Substitute.For <ISutInstanceCreator> ( ); _lazyCreator = Substitute.For <ISutLazyInstanceCreator> ( ); _generator = Substitute.For <IArgumentsGenerator> ( ); _typeClass = typeof(Something); _typeLazyClass = typeof(Lazy <Something>); _class = new Something(new SomethingElse( )); _lazyClass = new Lazy <Something> (() => new Something(new SomethingElse( ))); }
public object Construct(IArgumentsGenerator generator, Type type) { Guard.ArgumentNotNull(generator, nameof(generator)); Guard.ArgumentNotNull(type, nameof(type)); return(CreateInstance(generator, type)); }
public void Constructor_ForIParameterInstanceCreatorIsNull_Throws( ) { _creator = null; Action action = () => CreateSut( ); action.Should( ) .Throw <ArgumentNullException> ( ) .And.ParamName.Should( ) .Be("creator"); }
/// <summary> /// Register instances for the given <see cref="AutoDataTestMethodAttribute" /> /// parameters inside AutoFixture. This makes sure that the custom /// attributes <see cref="BeNullAttribute" /> and <see cref="FreezeAttribute" /> /// used for the parameters of the method are used. /// </summary> /// <param name="generator"> /// The generator is used to create the SUT. /// </param> private void ProcessAutoTestDataParameters(IArgumentsGenerator generator) { var methodType = typeof(AutoDataTestMethodAttribute); var parameterInfos = _attributeFinder.Find(methodType); foreach (var parameterInfo in parameterInfos) { generator.CreateOtherArgument(parameterInfo); } }
private object CreateInstance(IArgumentsGenerator generator, Type type) { try { return(generator.CreateArgument(type)); } catch (Exception e) { if (!_finder.TryFindArgumentNullException(e, out var nullException)) { throw; } throw nullException; } }
public object Construct(IArgumentsGenerator generator, Type type) { Guard.ArgumentNotNull(generator, nameof(generator)); Guard.ArgumentNotNull(type, nameof(type)); if (IsLazy(type)) { return(_lazyCreator.Construct(generator, type.GenericTypeArguments .First( ))); } return(_creator.Construct(generator, type)); }
private object CreateInstance(IArgumentsGenerator generator, Type type) { var methodCall = Expression.Call(Expression.Constant(this), FactoryMethod, new Expression [] { Expression.Constant(generator), Expression.Constant(type) }); var cast = Expression.Convert(methodCall, type); var lambda = Expression.Lambda(cast).Compile( ); var lazyType = typeof(Lazy <>).MakeGenericType(type); return(Activator.CreateInstance(lazyType, lambda)); }
private object Factory(IArgumentsGenerator generator, Type type) { try { ProcessAutoTestDataParameters(generator); var argument = CreateSut(generator, type); return(argument); } catch (Exception e) { if (!_exceptionFinder.TryFindArgumentNullException(e, out var nullException)) { throw; } throw nullException; } }
public void Setup( ) { _creator = Substitute.For <IArgumentsGenerator> ( ); _type = typeof(TestClassWithInterface); _arrayParameter = typeof(TestClassWithInterface).GetConstructors( ) .First( ) .GetParameters( ); _parameterIndex = 0; _parameterValue = null; _createdParameters = new object [] { new TestClass(0), Substitute.For <ISomething> ( ), "Text", 0 }; _creator.Create(Arg.Any <IEnumerable <IParameterInfo> > ( )) .Returns(_createdParameters); }
/// <summary> /// Create the SUT using the pre-registered parameters of the /// <see cref="AutoDataTestMethodAttribute" /> method and create all /// the missing additional parameters using AutoFixture. /// </summary> /// <param name="generator"> /// The generator is used to create the SUT. /// </param> /// <param name="type"> /// The type of the service under test to be created. /// </param> /// <returns></returns> private static object CreateSut(IArgumentsGenerator generator, Type type) { return(generator.CreateArgument(type)); }