public void ConstructWithParameters() { var alternateImplementations = Enumerable.Empty <IAlternateMethod>(); var loggerMock = new Mock <ILogger>(); var hook = new AlternateTypeGenerationHook <ITab>(alternateImplementations, loggerMock.Object); Assert.Equal(alternateImplementations, hook.MethodImplementations); Assert.Equal(loggerMock.Object, hook.Logger); }
public void ConstructWithParameters() { var alternateImplementations = Enumerable.Empty<IAlternateMethod>(); var loggerMock = new Mock<ILogger>(); var hook = new AlternateTypeGenerationHook<ITab>(alternateImplementations, loggerMock.Object); Assert.Equal(alternateImplementations, hook.MethodImplementations); Assert.Equal(loggerMock.Object, hook.Logger); }
public void LogWhenMethodsInspected() { var alternateImplementations = Enumerable.Empty <IAlternateMethod>(); var loggerMock = new Mock <ILogger>(); var hook = new AlternateTypeGenerationHook <ITab>(alternateImplementations, loggerMock.Object); hook.MethodsInspected(); loggerMock.Verify(l => l.Debug(It.IsAny <string>(), It.IsAny <Type>()), Times.Once()); }
public void LogWhenMethodsInspected() { var alternateImplementations = Enumerable.Empty<IAlternateMethod>(); var loggerMock = new Mock<ILogger>(); var hook = new AlternateTypeGenerationHook<ITab>(alternateImplementations, loggerMock.Object); hook.MethodsInspected(); loggerMock.Verify(l=>l.Debug(It.IsAny<string>(), It.IsAny<Type>()), Times.Once()); }
public void LogWhenNonProxableMemberNotification() { var alternateImplementations = Enumerable.Empty <IAlternateMethod>(); var loggerMock = new Mock <ILogger>(); var hook = new AlternateTypeGenerationHook <ITab>(alternateImplementations, loggerMock.Object); var type = typeof(AlternateTypeGenerationHookShould); var memberInfo = type.GetMember("LogWhenNonProxableMemberNotification")[0]; hook.NonProxyableMemberNotification(type, memberInfo); loggerMock.Verify(l => l.Debug(It.IsAny <string>(), memberInfo.Name, type), Times.Once()); }
public void LogWhenNonProxableMemberNotification() { var alternateImplementations = Enumerable.Empty<IAlternateMethod>(); var loggerMock = new Mock<ILogger>(); var hook = new AlternateTypeGenerationHook<ITab>(alternateImplementations, loggerMock.Object); var type = typeof (AlternateTypeGenerationHookShould); var memberInfo = type.GetMember("LogWhenNonProxableMemberNotification")[0]; hook.NonProxyableMemberNotification(type, memberInfo); loggerMock.Verify(l => l.Debug(It.IsAny<string>(), memberInfo.Name, type), Times.Once()); }
public void CanInterceptMethods() { var type = typeof (AlternateTypeGenerationHookShould); var methodInfo = type.GetMethod("CanInterceptMethods"); var implementationMock = new Mock<IAlternateMethod>(); implementationMock.Setup(i => i.MethodToImplement).Returns(methodInfo); var alternateImplementations = new List<IAlternateMethod>(); alternateImplementations.Add(implementationMock.Object); var loggerMock = new Mock<ILogger>(); var hook = new AlternateTypeGenerationHook<ITab>(alternateImplementations, loggerMock.Object); var result = hook.ShouldInterceptMethod(type, methodInfo); Assert.True(result); }
private ProxyGenerationOptions CreateProxyOptions <T>(IEnumerable <IAlternateMethod> methodImplementations, IEnumerable <object> mixins) { var generationHook = new AlternateTypeGenerationHook <T>(methodImplementations, Logger); var selector = new AlternateTypeSelector(); var options = new ProxyGenerationOptions(generationHook) { Selector = selector }; if (mixins != null) { foreach (var mixin in mixins) { options.AddMixinInstance(mixin); } } return(options); }
public void NotInterceptMethodsWithMismatch() { var type = typeof(AlternateTypeGenerationHookShould); var methodInfo = type.GetMethod("CanInterceptMethods"); var implementationMock = new Mock <IAlternateMethod>(); implementationMock.Setup(i => i.MethodToImplement).Returns(methodInfo); var alternateImplementations = new List <IAlternateMethod>(); alternateImplementations.Add(implementationMock.Object); var loggerMock = new Mock <ILogger>(); var hook = new AlternateTypeGenerationHook <ITab>(alternateImplementations, loggerMock.Object); var result = hook.ShouldInterceptMethod(type, type.GetMethod("NotInterceptMethodsWithMismatch")); Assert.False(result); }
public void ReturnNonMatchingHashCodesWithDifferentCollections() { var implementationMock1 = new Mock <IAlternateMethod>(); var implementationMock2 = new Mock <IAlternateMethod>(); var implementations1 = new List <IAlternateMethod> { implementationMock1.Object, implementationMock2.Object }; var implementations2 = new List <IAlternateMethod> { implementationMock1.Object //One less object }; var loggerMock = new Mock <ILogger>(); var hook1 = new AlternateTypeGenerationHook <ITab>(implementations1, loggerMock.Object); var hook2 = new AlternateTypeGenerationHook <ITab>(implementations2, loggerMock.Object); Assert.NotEqual(hook2.GetHashCode(), hook1.GetHashCode()); Assert.False(hook2.Equals(hook1)); }
public void ReturnNonMatchingHashCodesWithDifferentCollections() { var implementationMock1 = new Mock<IAlternateMethod>(); var implementationMock2 = new Mock<IAlternateMethod>(); var implementations1 = new List<IAlternateMethod> { implementationMock1.Object, implementationMock2.Object }; var implementations2 = new List<IAlternateMethod> { implementationMock1.Object //One less object }; var loggerMock = new Mock<ILogger>(); var hook1 = new AlternateTypeGenerationHook<ITab>(implementations1, loggerMock.Object); var hook2 = new AlternateTypeGenerationHook<ITab>(implementations2, loggerMock.Object); Assert.NotEqual(hook2.GetHashCode(), hook1.GetHashCode()); Assert.False(hook2.Equals(hook1)); }