Exemple #1
0
 public T Resolve(InstanceGenerator instanceGenerator, GenerationTrace trace)
 {
     try
     {
         _nestingLimit.AddNestingFor <T>(trace);
         if (!_nestingLimit.IsReachedFor <T>())
         {
             return(_fakeChain.Resolve(instanceGenerator, trace));
         }
         else
         {
             try
             {
                 trace.NestingLimitReachedTryingDummy();
                 return(instanceGenerator.Dummy <T>(trace)); //TODO
             }
             catch (TargetInvocationException e)
             {
                 return(default(T));
             }
             catch (MemberAccessException e)
             {
                 return(default(T));
             }
             catch (ArgumentException e)
             {
                 return(default(T));
             }
         }
     }
     finally
     {
         _nestingLimit.RemoveNestingFor <T>(trace);
     }
 }
Exemple #2
0
        private static object CreateGenericDelegatesForFunction(InstanceGenerator instanceGenerator, MethodInfo methodInfo,
                                                                GenerationTrace trace)
        {
            var fullSignatureTypes = ReturnTypeOf(methodInfo).Concat(ParameterTypes(methodInfo));

            return(CreateGenericDelegatesObjectForConcreteTypes(fullSignatureTypes, WithArgumentGeneratedBy(instanceGenerator, methodInfo, trace)));
        }
Exemple #3
0
 public object Instance(Type type, GenerationTrace trace)
 {
     return(_customizations.Where(c => c.AppliesTo(type)).FirstOrNothing()
            .Fold(
                () => _inner.Instance(type, trace, _customizations),
                c => c.Generate(this, trace)));
 }
Exemple #4
0
 public object Instance(Type type, GenerationTrace trace, GenerationCustomization[] customizations)
 {
     lock (_syncRoot)
     {
         return(_allGenerator.Instance(type, trace, customizations));
     }
 }
Exemple #5
0
 public T Instance <T>(GenerationTrace trace, GenerationCustomization[] customizations)
 {
     lock (_syncRoot)
     {
         return(_allGenerator.Instance <T>(trace, customizations));
     }
 }
Exemple #6
0
 public T Dummy <T>(GenerationTrace trace)
 {
     lock (_syncRoot)
     {
         return(_allGenerator.Dummy <T>(trace));
     }
 }
Exemple #7
0
 public T Instance <T>(GenerationTrace trace)
 {
     lock (_syncRoot)
     {
         return(_allGenerator.Instance <T>(trace));
     }
 }
Exemple #8
0
 public object Instance(Type type, GenerationTrace trace)
 {
     lock (_syncRoot)
     {
         return(_allGenerator.Instance(type, trace));
     }
 }
Exemple #9
0
 public T Value <T>(T seed, GenerationTrace trace)
 {
     lock (_syncRoot)
     {
         return(_allGenerator.Value <T>(seed, trace));
     }
 }
        public string GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var preprocessedStrings = from str in _excludedSubstrings
                                      where !String.IsNullOrEmpty(str)
                                      select str;

            var result = _stringGenerator.GenerateInstance(instanceGenerator, trace);
            var found  = false;

            for (int i = 0; i < 100; ++i)
            {
                result = _stringGenerator.GenerateInstance(instanceGenerator, trace);
                if (preprocessedStrings.Any(result.Contains))
                {
                    found = true;
                    break;
                }
            }

            if (!found)
            {
                foreach (var excludedSubstring in _excludedSubstrings.Where(s => s != String.Empty))
                {
                    result = result.Replace(excludedSubstring, "");
                }
            }

            return(result);
        }
Exemple #11
0
        public T GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var generateInstance = (T)_fallbackTypeGenerator.GenerateInstance(instanceGenerator, trace);

            _fallbackTypeGenerator.CustomizeCreatedValue(generateInstance, instanceGenerator, trace);
            return(generateInstance);
        }
Exemple #12
0
 public string GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
 {
     return(RandomGenerator.Next(256) + "."
            + RandomGenerator.Next(256) + "."
            + RandomGenerator.Next(256) + "."
            + RandomGenerator.Next(256));
 }
Exemple #13
0
        public object NewInstanceOf(Type type, InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var typeInfo = type.GetTypeInfo();
            var type1    = typeInfo.GetGenericArguments()[0];
            var type2    = typeInfo.GetGenericArguments()[1];

            return(_factoryMethod.Invoke(type1, type2, instanceGenerator, trace));
        }
Exemple #14
0
 public T Apply(InstanceGenerator instanceGenerator, GenerationTrace trace)
 {
     //todo think it through - should it need access to InlineGenerators?
       var elementType = typeof (T).GetElementType();
       var array = InlineGenerators.GetByNameAndType(nameof(InlineGenerators.Array), elementType)
     .GenerateInstance(instanceGenerator, trace);
       return (T)array;
 }
        public int GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var sequence      = new IntegerSequence(_startingValue, _step, _simpleValueGenerator.GenerateInstance(instanceGenerator, trace));
            var finalSequence = Maybe.OfNullable(Sequences.FirstOrDefault(s => s.Equals(sequence))).ValueOr(sequence);

            Sequences.Add(finalSequence);
            return(finalSequence.Next());
        }
Exemple #16
0
 public DefaultGenerationRequest(
     NestingLimit nestingLimit,
     GenerationCustomization[] generationCustomizations)
 {
     NestingLimit             = nestingLimit;
     GenerationCustomizations = generationCustomizations;
     Trace = new ListBasedGeneratonTrace();
 }
Exemple #17
0
 public AbstractClassInterceptor(
     CachedReturnValueGeneration cachedGeneration,
     Func <Type, GenerationTrace, object> instanceSource,
     GenerationTrace trace)
 {
     _cachedGeneration = cachedGeneration;
     _instanceSource   = instanceSource;
     _trace            = trace;
 }
        public IEnumerable <T> GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var list = new List <T>();

            list.Add(instanceGenerator.Instance <T>(trace));
            list.AddRange(_included);
            list.Add(instanceGenerator.Instance <T>(trace));

            return(list);
        }
Exemple #19
0
        public static ICollection <T> AddTo <T>(ICollection <T> collection, int many,
                                                InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            for (int i = 0; i < many; ++i)
            {
                collection.Add(instanceGenerator.Instance <T>(trace));
            }

            return(collection);
        }
        public byte GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            byte digit = _digitGenerator.GenerateInstance(instanceGenerator, trace);

            while (digit == 0)
            {
                digit = _digitGenerator.GenerateInstance(instanceGenerator, trace);
            }

            return(digit);
        }
Exemple #21
0
 public T GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
 {
     if (typeof(T).IsInterface)
     {
         return(ProxyGenerator.CreateInterfaceProxyWithoutTarget <T>(new ExplodingInterceptor()));
     }
     else
     {
         throw new Exception("Exploding instances can be created out of interfaces only!");
     }
 }
Exemple #22
0
        public T Apply(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var result = (T)_proxyGenerator.CreateClassProxy(
                typeof(T),
                _fallbackTypeGenerator.GenerateConstructorParameters(instanceGenerator, trace).ToArray(),
                new AbstractClassInterceptor(_generation,
                                             instanceGenerator.Instance, trace));

            _fallbackTypeGenerator.FillFieldsAndPropertiesOf(result, instanceGenerator, trace);
            return(result);
        }
        public string GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var result = String.Empty;

            while (result.Length < _length)
            {
                result += _stringGenerator.GenerateInstance(instanceGenerator, trace);
            }

            return(result.Substring(0, _length));
        }
        public string GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var result = String.Empty;

            for (var i = 0; i < _maxLength; ++i)
            {
                result += _charGenerator.GenerateInstance(instanceGenerator, trace);
            }

            return(result);
        }
Exemple #25
0
        public List <object> GenerateAnyParameterValues(Func <Type, GenerationTrace, object> instanceGenerator,
                                                        GenerationTrace trace)
        {
            var constructorValues = new List <object>();

            foreach (var constructorParam in _parameterTypes)
            {
                constructorValues.Add(instanceGenerator(constructorParam, trace));
            }
            return(constructorValues);
        }
        public T GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var latestArraysWithPossibleValues = _arrayElementPicking.For <T>();

            if (!latestArraysWithPossibleValues.Contain(_possibleValues))
            {
                latestArraysWithPossibleValues.Add(_possibleValues);
            }

            return(latestArraysWithPossibleValues.PickNextElementFrom(_possibleValues));
        }
        public string GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            string result = _alphaChar.GenerateInstance(instanceGenerator, trace).ToString(CultureInfo.InvariantCulture);

            for (var i = 0; i < 5; ++i)
            {
                result += _digitChar.GenerateInstance(instanceGenerator, trace);
                result += _alphaChar.GenerateInstance(instanceGenerator, trace);
            }

            return(result);
        }
Exemple #28
0
 public T Resolve(InstanceGenerator instanceGenerator, GenerationTrace trace)
 {
     if (_resolution.Applies())
     {
         trace.SelectedResolution(typeof(T), _resolution);
         return(_resolution.Apply(instanceGenerator, trace));
     }
     else
     {
         return(_next.Resolve(instanceGenerator, trace));
     }
 }
Exemple #29
0
        //todo move substitute generator to a separate nuget project
        public T GenerateInstance(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var type = typeof(T);
            var sub  = Substitute.For <T>();

            var methods = SmartType.For(type).GetAllPublicInstanceMethodsWithReturnValue();

            foreach (var method in methods)
            {
                method.InvokeWithAnyArgsOn(sub, argType => instanceGenerator.Instance(argType, trace))
                .ReturnsForAnyArgs(method.GenerateAnyReturnValue(returnType => instanceGenerator.Instance(returnType, trace)));
            }

            return(sub);
        }
Exemple #30
0
        public T Apply(InstanceGenerator instanceGenerator, GenerationTrace trace)
        {
            var methodInfo = typeof(T).GetMethods().First(m => m.Name.Equals("Invoke"));
            var parameters = methodInfo.GetParameters();

            if (methodInfo.ReturnType != typeof(void))
            {
                var instance = CreateGenericDelegatesForFunction(instanceGenerator, methodInfo, trace);
                return((T)(object)Delegate.CreateDelegate(typeof(T), instance, instance.GetType().GetMethod("Get" + parameters.Length)));
            }
            else
            {
                var instance = CreateGenericDelegatesForAction(methodInfo);
                return((T)(object)Delegate.CreateDelegate(typeof(T), instance, instance.GetType().GetMethod("Do" + parameters.Length)));
            }
        }