public SubstituteState(ISubstitutionContext substitutionContext, SubstituteConfig option)
{
SubstitutionContext = substitutionContext;
SubstituteConfig = option;
SequenceNumberGenerator = substitutionContext.SequenceNumberGenerator;
var substituteFactory = substitutionContext.SubstituteFactory;
var callInfoFactory = new CallInfoFactory();
var callCollection = new CallCollection();
CallCollection = callCollection;
ReceivedCalls = callCollection;
PendingSpecification = new PendingSpecification(substitutionContext);
CallResults = new CallResults(callInfoFactory);
AutoValuesCallResults = new CallResults(callInfoFactory);
CallSpecificationFactory = CallSpecificationFactoryFactoryYesThatsRight.CreateCallSpecFactory();
CallActions = new CallActions(callInfoFactory);
CallBaseExclusions = new CallBaseExclusions();
ResultsForType = new ResultsForType(callInfoFactory);
CustomHandlers = new CustomHandlers(this);
var getCallSpec = new GetCallSpec(callCollection, PendingSpecification, CallSpecificationFactory, CallActions);
ConfigureCall = new ConfigureCall(CallResults, CallActions, getCallSpec);
EventHandlerRegistry = new EventHandlerRegistry();
AutoValueProviders = new IAutoValueProvider[] {
#if NET45 || NETSTANDARD1_5
new AutoObservableProvider(() => AutoValueProviders),
new AutoQueryableProvider(),
#endif
new AutoSubstituteProvider(substituteFactory),
new AutoStringProvider(),
new AutoArrayProvider(),
#if (NET4 || NET45 || NETSTANDARD1_5)
new AutoTaskProvider(() => AutoValueProviders),
#endif
};
}
}