Exemple #1
0
 public FakeConcreteClass(
     FallbackTypeGenerator <T> fallbackTypeGenerator,
     IValueGenerator valueGenerator)
 {
     _fallbackTypeGenerator = fallbackTypeGenerator;
     _valueGenerator        = valueGenerator;
 }
 public ResolutionsFactory(
     ISpecialCasesOfResolutions specialCasesOfResolutions,
     FallbackTypeGenerator fallbackTypeGenerator)
 {
     _specialCasesOfResolutions = specialCasesOfResolutions;
     _fallbackTypeGenerator     = fallbackTypeGenerator;
 }
        private static void AssertNullCheckForEveryPossibleArgumentOf(IConstraintsViolations violations,
                                                                      IConstructorWrapper constructor,
                                                                      FallbackTypeGenerator fallbackTypeGenerator)
        {
            for (int i = 0; i < constructor.GetParametersCount(); ++i)
            {
                var parameters = constructor.GenerateAnyParameterValues(Any.Instance);
                if (SmartType.ForTypeOf(parameters[i]).CanBeAssignedNullValue())
                {
                    parameters[i] = null;

                    try
                    {
                        fallbackTypeGenerator.GenerateInstance(parameters);
                        violations.Add("Not guarded against nulls: " + constructor + ", Not guarded parameter: " +
                                       constructor.GetDescriptionForParameter(i));
                    }
                    catch (TargetInvocationException exception)
                    {
                        if (exception.InnerException.GetType() == typeof(ArgumentNullException))
                        {
                            //do nothing, this is the expected case
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
            }
        }
Exemple #4
0
 public FakeAbstractClass(
     CachedReturnValueGeneration generation,
     ProxyGenerator proxyGenerator)
 {
     _generation            = generation;
     _proxyGenerator        = proxyGenerator;
     _fallbackTypeGenerator = new FallbackTypeGenerator <T>(); //bug extract?
 }
Exemple #5
0
 public FakeAbstractClass(
     CachedReturnValueGeneration generation,
     ProxyGenerator proxyGenerator,
     FallbackTypeGenerator <T> fallbackTypeGenerator)
 {
     _generation            = generation;
     _proxyGenerator        = proxyGenerator;
     _fallbackTypeGenerator = fallbackTypeGenerator;
 }
        public void CheckAndRecord(ConstraintsViolations violations)
        {
            var constructors          = SmartType.For(_type).GetAllPublicConstructors();
            var fallbackTypeGenerator = new FallbackTypeGenerator(_type);

            foreach (var constructor in constructors)
            {
                AssertNullCheckForEveryPossibleArgumentOf(violations, constructor, fallbackTypeGenerator);
            }
        }
    public static BasicGenerator Create()
    {
        var valueGenerator = CreateValueGenerator();
        var proxyGenerator = new ProxyGenerator();
        var cachedReturnValueGeneration = new CachedReturnValueGeneration(new PerMethodCache <object>());
        var specialCasesOfResolutions   = new SpecialCasesOfResolutions();
        var fallbackTypeGenerator       = new FallbackTypeGenerator(
            new IFallbackGeneratedObjectCustomization[]
        {
            new FillPropertiesCustomization(),
            new FillFieldsCustomization()
        });
        var resolutionsFactory = new ResolutionsFactory(
            specialCasesOfResolutions, fallbackTypeGenerator);
        var unconstrainedChain = new TemporaryChainForCollection(new[]
        {
            ResolutionsFactory.ResolveTheMostSpecificCases(valueGenerator),
            resolutionsFactory.ResolveAsArray(),
            resolutionsFactory.ResolveAsImmutableArray(),
            resolutionsFactory.ResolveAsSimpleEnumerableAndList(),
            resolutionsFactory.ResolveAsImmutableList(),
            resolutionsFactory.ResolveAsSimpleSet(),
            resolutionsFactory.ResolveAsImmutableHashSet(),
            resolutionsFactory.ResolveAsImmutableSortedSet(),
            resolutionsFactory.ResolveAsSimpleDictionary(),
            resolutionsFactory.ResolveAsImmutableDictionary(),
            resolutionsFactory.ResolveAsImmutableSortedDictionary(),
            resolutionsFactory.ResolveAsSortedList(),
            resolutionsFactory.ResolveAsImmutableQueue(),
            resolutionsFactory.ResolveAsImmutableStack(),
            ResolutionsFactory.ResolveAsDelegate(),
            resolutionsFactory.ResolveAsSortedSet(),
            resolutionsFactory.ResolveAsSortedDictionary(),
            resolutionsFactory.ResolveAsConcurrentDictionary(),
            resolutionsFactory.ResolveAsConcurrentBag(),
            resolutionsFactory.ResolveAsConcurrentQueue(),
            resolutionsFactory.ResolveAsConcurrentStack(),
            resolutionsFactory.ResolveAsKeyValuePair(),
            ResolutionsFactory.ResolveAsOptionalOption(),
            resolutionsFactory.ResolveAsGenericEnumerator(),
            ResolutionsFactory.ResolveAsObjectEnumerator(),
            ResolutionsFactory.ResolveAsCollectionWithHeuristics(),
            ResolutionsFactory.ResolveAsInterfaceImplementationWhere(
                cachedReturnValueGeneration,
                proxyGenerator),
            resolutionsFactory.ResolveAsAbstractClassImplementationWhere(
                cachedReturnValueGeneration,
                proxyGenerator),
            resolutionsFactory.ResolveAsConcreteTypeWithNonConcreteTypesInConstructorSignature(),
            ResolutionsFactory.ResolveAsVoidTask(),
            ResolutionsFactory.ResolveAsTypedTask(),
            resolutionsFactory.ResolveAsConcreteClass()
        });
        var limitedGenerationChain         = new LimitedGenerationChain(unconstrainedChain);
        var fakeOrdinaryInterfaceGenerator = new FakeOrdinaryInterface(cachedReturnValueGeneration, proxyGenerator);

        var allGenerator = new AllGenerator(
            valueGenerator,
            limitedGenerationChain,
            unconstrainedChain,
            fakeOrdinaryInterfaceGenerator);

        return(allGenerator);
    }
 public GenericFakeChainFactory(ISpecialCasesOfResolutions <T> specialCasesOfResolutions, FallbackTypeGenerator <T> fallbackTypeGenerator)
 {
     _specialCasesOfResolutions = specialCasesOfResolutions;
     _fallbackTypeGenerator     = fallbackTypeGenerator;
 }
 public FakeConcreteClass(FallbackTypeGenerator fallbackTypeGenerator)
 {
     _fallbackTypeGenerator = fallbackTypeGenerator;
 }
 public FakeConcreteClassWithNonConcreteConstructor(FallbackTypeGenerator <T> fallbackTypeGenerator)
 {
     _fallbackTypeGenerator = fallbackTypeGenerator;
 }