public DefaultGenerationRequest( NestingLimit nestingLimit, GenerationCustomization[] generationCustomizations) { NestingLimit = nestingLimit; GenerationCustomizations = generationCustomizations; Trace = new ListBasedGeneratonTrace(); }
private readonly ConcurrentDictionary <Type, object> _unconstrainedFactoryCache = new ConcurrentDictionary <Type, object>(); //new MemoryCache("constrained"); public FakeChainFactory( CachedReturnValueGeneration cachedReturnValueGeneration, NestingLimit nestingLimit, ProxyGenerator proxyGenerator, ValueGenerator valueGenerator) { _cachedReturnValueGeneration = cachedReturnValueGeneration; _nestingLimit = nestingLimit; _proxyGenerator = proxyGenerator; _valueGenerator = valueGenerator; }
public IFakeChain <T> NewInstance( CachedReturnValueGeneration eachMethodReturnsTheSameValueOnEveryCall, NestingLimit nestingLimit, ProxyGenerator generationIsDoneUsingProxies, IValueGenerator valueGenerator) { return(LimitedTo(nestingLimit, UnconstrainedInstance( eachMethodReturnsTheSameValueOnEveryCall, generationIsDoneUsingProxies, valueGenerator))); }
public T WithNextNestingLevel <T>(Func <T> limitNotReachedFunction, Func <T> limitReachedFunction) { try { NestingLimit.AddNestingFor <T>(Trace); if (!NestingLimit.IsReachedFor <T>()) { return(limitNotReachedFunction.Invoke()); } else { return(limitReachedFunction.Invoke()); } } finally { NestingLimit.RemoveNestingFor <T>(Trace); } }
public LimitedFakeChain(NestingLimit perTypeNestingLimit, IFakeChain <T> fakeChain) { _perTypeNestingLimit = perTypeNestingLimit; _fakeChain = fakeChain; }
private static IFakeChain <T> LimitedTo(NestingLimit limit, IFakeChain <T> fakeChain) { return(new LimitedFakeChain <T>(limit, fakeChain)); }
public LimitedFakeChain(NestingLimit nestingLimit, IFakeChain <T> fakeChain) { _nestingLimit = nestingLimit; _fakeChain = fakeChain; }