Ejemplo n.º 1
0
        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( ));
 }
Ejemplo n.º 3
0
 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");
        }
Ejemplo n.º 6
0
        /// <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;
            }
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 12
0
 /// <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));
 }