private static ResolvedConstructor ResolveConstructorArguments(ConstructorInfo constructor, IDummyValueCreationSession session) { Logger.Debug("Beginning to resolve constructor with {0} arguments.", constructor.GetParameters().Length); var resolvedArguments = new List<ResolvedArgument>(); foreach (var argument in constructor.GetParameters()) { object result = null; var resolvedArgument = new ResolvedArgument { WasResolved = session.TryResolveDummyValue(argument.ParameterType, out result), ResolvedValue = result, ArgumentType = argument.ParameterType }; Logger.Debug("Was able to resolve {0}: {1}.", argument.ParameterType, resolvedArgument.WasResolved); resolvedArguments.Add(resolvedArgument); } return new ResolvedConstructor { Arguments = resolvedArguments.ToArray() }; }
private static void StubSessionToFailForType <T>(IDummyValueCreationSession session) { object outResult; A.CallTo(() => session.TryResolveDummyValue(typeof(T), out outResult)) .Returns(false); }
private static ResolvedConstructor[] ResolveConstructors(Type typeOfFake, IDummyValueCreationSession session) { logger.Debug("Resolving constructors for type {0}.", typeOfFake); return((from constructor in GetUsableConstructorsInOrder(typeOfFake) let constructorAndArguments = ResolveConstructorArguments(constructor, session) select constructorAndArguments).ToArray()); }
private static void StubSessionWithDummyValue <T>(IDummyValueCreationSession session, T dummyValue) { object outResult; A.CallTo(() => session.TryResolveDummyValue(typeof(T), out outResult)) .Returns(true) .AssignsOutAndRefParameters(dummyValue); }
public object CreateFake(Type typeOfFake, IProxyOptions proxyOptions, IDummyValueCreationSession session, bool throwOnFailure) { var result = this.GenerateProxy(typeOfFake, proxyOptions, proxyOptions.ArgumentsForConstructor); if (throwOnFailure) { this.AssertThatProxyWasGeneratedWhenArgumentsForConstructorAreSpecified(typeOfFake, result, proxyOptions); } if (!result.ProxyWasSuccessfullyGenerated && proxyOptions.ArgumentsForConstructor == null) { result = this.TryCreateFakeWithDummyArgumentsForConstructor(typeOfFake, proxyOptions, session, result.ReasonForFailure, throwOnFailure); } return result != null ? result.GeneratedProxy : null; }
public object CreateFake(Type typeOfFake, IProxyOptions proxyOptions, IDummyValueCreationSession session, bool throwOnFailure) { var result = this.GenerateProxy(typeOfFake, proxyOptions, proxyOptions.ArgumentsForConstructor); if (throwOnFailure) { this.AssertThatProxyWasGeneratedWhenArgumentsForConstructorAreSpecified(typeOfFake, result, proxyOptions); } if (!result.ProxyWasSuccessfullyGenerated && proxyOptions.ArgumentsForConstructor == null) { result = this.TryCreateFakeWithDummyArgumentsForConstructor(typeOfFake, proxyOptions, session, result.ReasonForFailure, throwOnFailure); } return(result != null ? result.GeneratedProxy : null); }
private static ResolvedConstructor ResolveConstructorArguments(ConstructorInfo constructor, IDummyValueCreationSession session) { var resolvedArguments = new List<ResolvedArgument>(); foreach (var argument in constructor.GetParameters()) { object result; var resolvedArgument = new ResolvedArgument { WasResolved = session.TryResolveDummyValue(argument.ParameterType, out result), ResolvedValue = result, ArgumentType = argument.ParameterType }; resolvedArguments.Add(resolvedArgument); } return new ResolvedConstructor { Arguments = resolvedArguments.ToArray() }; }
public virtual object CreateFake(Type typeOfFake, FakeOptions fakeOptions, IDummyValueCreationSession session, bool throwOnFailure) { var result = this.proxyGenerator.GenerateProxy(typeOfFake, fakeOptions.AdditionalInterfacesToImplement, fakeOptions.ArgumentsForConstructor, fakeOptions.AdditionalAttributes); if (throwOnFailure) { this.AssertThatProxyWasGeneratedWhenArgumentsForConstructorAreSpecified(typeOfFake, result, fakeOptions); } if (!result.ProxyWasSuccessfullyGenerated && fakeOptions.ArgumentsForConstructor == null) { result = this.TryCreateFakeWithDummyArgumentsForConstructor(typeOfFake, fakeOptions, session, result.ReasonForFailure, throwOnFailure); } if (result != null) { this.fakeManagerAttacher.AttachFakeManagerToProxy(typeOfFake, result.GeneratedProxy, result.CallInterceptedEventRaiser); this.configurer.ConfigureFake(typeOfFake, result.GeneratedProxy); return(result.GeneratedProxy); } return(null); }
public virtual object CreateFake(Type typeOfFake, FakeOptions fakeOptions, IDummyValueCreationSession session, bool throwOnFailure) { var result = this.proxyGenerator.GenerateProxy(typeOfFake, fakeOptions.AdditionalInterfacesToImplement, fakeOptions.ArgumentsForConstructor, fakeOptions.AdditionalAttributes); if (throwOnFailure) { this.AssertThatProxyWasGeneratedWhenArgumentsForConstructorAreSpecified(typeOfFake, result, fakeOptions); } if (!result.ProxyWasSuccessfullyGenerated && fakeOptions.ArgumentsForConstructor == null) { result = this.TryCreateFakeWithDummyArgumentsForConstructor(typeOfFake, fakeOptions, session, result.ReasonForFailure, throwOnFailure); } if (result != null) { this.fakeManagerAttacher.AttachFakeManagerToProxy(typeOfFake, result.GeneratedProxy, result.CallInterceptedEventRaiser); this.configurer.ConfigureFake(typeOfFake, result.GeneratedProxy); return result.GeneratedProxy; } return null; }
private ProxyGeneratorResult TryCreateFakeWithDummyArgumentsForConstructor(Type typeOfFake, IProxyOptions proxyOptions, IDummyValueCreationSession session, string failReasonForDefaultConstructor, bool throwOnFailure) { var constructors = ResolveConstructors(typeOfFake, session); foreach (var constructor in constructors.Where(x => x.WasSuccessfullyResolved)) { var result = this.GenerateProxy(typeOfFake, proxyOptions, constructor.Arguments.Select(x => x.ResolvedValue)); if (result.ProxyWasSuccessfullyGenerated) { return result; } constructor.ReasonForFailure = result.ReasonForFailure; } if (throwOnFailure) { this.thrower.ThrowFailedToGenerateProxyWithResolvedConstructors(typeOfFake, failReasonForDefaultConstructor, constructors); } return null; }
private static ResolvedConstructor[] ResolveConstructors(Type typeOfFake, IDummyValueCreationSession session) { Logger.Debug("Resolving constructors for type {0}.", typeOfFake); return (from constructor in GetUsableConstructorsInOrder(typeOfFake) let constructorAndArguments = ResolveConstructorArguments(constructor, session) select constructorAndArguments).ToArray(); }
public DefaultFakeAndDummyManager(IDummyValueCreationSession session, FakeObjectCreator fakeCreator) { this.session = session; this.fakeCreator = fakeCreator; }
private ProxyGeneratorResult TryCreateFakeWithDummyArgumentsForConstructor(Type typeOfFake, FakeOptions fakeOptions, IDummyValueCreationSession session, string failReasonForDefaultConstructor, bool throwOnFailure) { var constructors = ResolveConstructors(typeOfFake, session); foreach (var constructor in constructors.Where(x => x.WasSuccessfullyResolved)) { Logger.Debug("Trying with constructor with {0} arguments.", constructor.Arguments.Length); var result = this.proxyGenerator.GenerateProxy(typeOfFake, fakeOptions.AdditionalInterfacesToImplement, constructor.Arguments.Select(x => x.ResolvedValue), fakeOptions.AdditionalAttributes); if (result.ProxyWasSuccessfullyGenerated) { return result; } else { Logger.Debug("Setting reason for failure of constructor to {0}.", result.ReasonForFailure); constructor.ReasonForFailure = result.ReasonForFailure; } } if (throwOnFailure) { this.thrower.ThrowFailedToGenerateProxyWithResolvedConstructors(typeOfFake, failReasonForDefaultConstructor, constructors); } return null; }
private static ResolvedConstructor ResolveConstructorArguments(ConstructorInfo constructor, IDummyValueCreationSession session) { var resolvedArguments = new List <ResolvedArgument>(); foreach (var argument in constructor.GetParameters()) { object result; var resolvedArgument = new ResolvedArgument { WasResolved = session.TryResolveDummyValue(argument.ParameterType, out result), ResolvedValue = result, ArgumentType = argument.ParameterType }; resolvedArguments.Add(resolvedArgument); } return(new ResolvedConstructor { Arguments = resolvedArguments.ToArray() }); }
public DefaultFakeAndDummyManager(IDummyValueCreationSession session, FakeObjectCreator fakeCreator) { this.session = session; this.fakeCreator = fakeCreator; }
private ProxyGeneratorResult TryCreateFakeWithDummyArgumentsForConstructor(Type typeOfFake, FakeOptions fakeOptions, IDummyValueCreationSession session, string failReasonForDefaultConstructor, bool throwOnFailure) { var constructors = ResolveConstructors(typeOfFake, session); foreach (var constructor in constructors.Where(x => x.WasSuccessfullyResolved)) { logger.Debug("Trying with constructor with {0} arguments.", constructor.Arguments.Length); var result = this.proxyGenerator.GenerateProxy(typeOfFake, fakeOptions.AdditionalInterfacesToImplement, constructor.Arguments.Select(x => x.ResolvedValue), fakeOptions.AdditionalAttributes); if (result.ProxyWasSuccessfullyGenerated) { return(result); } else { logger.Debug("Setting reason for failure of constructor to {0}.", result.ReasonForFailure); constructor.ReasonForFailure = result.ReasonForFailure; } } if (throwOnFailure) { this.thrower.ThrowFailedToGenerateProxyWithResolvedConstructors(typeOfFake, failReasonForDefaultConstructor, constructors); } return(null); }
private ProxyGeneratorResult TryCreateFakeWithDummyArgumentsForConstructor(Type typeOfFake, IProxyOptions proxyOptions, IDummyValueCreationSession session, string failReasonForDefaultConstructor, bool throwOnFailure) { var constructors = ResolveConstructors(typeOfFake, session); foreach (var constructor in constructors.Where(x => x.WasSuccessfullyResolved)) { var result = this.GenerateProxy(typeOfFake, proxyOptions, constructor.Arguments.Select(x => x.ResolvedValue)); if (result.ProxyWasSuccessfullyGenerated) { return(result); } constructor.ReasonForFailure = result.ReasonForFailure; } if (throwOnFailure) { this.thrower.ThrowFailedToGenerateProxyWithResolvedConstructors(typeOfFake, failReasonForDefaultConstructor, constructors); } return(null); }
private static ResolvedConstructor ResolveConstructorArguments(ConstructorInfo constructor, IDummyValueCreationSession session) { logger.Debug("Beginning to resolve constructor with {0} arguments.", constructor.GetParameters().Length); var resolvedArguments = new List <ResolvedArgument>(); foreach (var argument in constructor.GetParameters()) { object result = null; var resolvedArgument = new ResolvedArgument { WasResolved = session.TryResolveDummyValue(argument.ParameterType, out result), ResolvedValue = result, ArgumentType = argument.ParameterType }; logger.Debug("Was able to resolve {0}: {1}.", argument.ParameterType, resolvedArgument.WasResolved); resolvedArguments.Add(resolvedArgument); } return(new ResolvedConstructor { Arguments = resolvedArguments.ToArray() }); }
public DefaultFakeAndDummyManager(IDummyValueCreationSession session, FakeObjectCreator fakeCreator, DynamicOptionsBuilder dynamicOptionsBuilder) { this.session = session; this.fakeCreator = fakeCreator; this.dynamicOptionsBuilder = dynamicOptionsBuilder; }
public DefaultFakeAndDummyManager(IDummyValueCreationSession session, FakeObjectCreator fakeCreator, IFakeWrapperConfigurer wrapperConfigurer) { this.session = session; this.fakeCreator = fakeCreator; this.wrapperConfigurer = wrapperConfigurer; }
public DefaultFakeAndDummyManager(IDummyValueCreationSession session, FakeObjectCreator fakeCreator, IFakeWrapperConfigurer wrapperConfigurer) { this.session = session; this.fakeCreator = fakeCreator; this.wrapperConfigurer = wrapperConfigurer; }