public void InitializeWithNullMethodInfoThrows() { var anonymousFactory = new DelegatingMethodFactory(); Assert.Throws <ArgumentNullException>(() => new GenericMethod(null, anonymousFactory)); }
public void SutIsIMethod() { Action dummy = delegate { }; var anonymousFactory = new DelegatingMethodFactory(); var sut = new GenericMethod(dummy.Method, anonymousFactory); Assert.IsAssignableFrom <IMethod>(sut); }
public void FactoryIsCorrect() { var anonymousMethod = ((Action) delegate { }).Method; var expectedFactory = new DelegatingMethodFactory(); var sut = new GenericMethod(anonymousMethod, expectedFactory); var result = sut.Factory; Assert.Equal(expectedFactory, result); }
public void ParametersIsCorrect() { Action <int, double> dummy = delegate { }; var anonymousFactory = new DelegatingMethodFactory(); var expectedParameters = dummy.Method.GetParameters(); var sut = new GenericMethod(dummy.Method, anonymousFactory); var result = sut.Parameters; Assert.True(expectedParameters.SequenceEqual(result)); }
public void InvokeWithGenericMethodReturnsCorrectResult(Type targetType, int index, object values) { var method = (from mi in targetType .GetMethods(BindingFlags.Static | BindingFlags.Public) select mi).ElementAt(index); var factory = new DelegatingMethodFactory(); factory.OnCreate = m => new StaticMethod(m); var sut = new GenericMethod(method, factory); var result = sut.Invoke((object[])values); Assert.IsAssignableFrom(targetType, result); }
public void InvokeWithGenericMethodThatCannotBeInferedThrows(Type targetType, int index, object values) { var method = (from mi in targetType .GetMethods(BindingFlags.Static | BindingFlags.Public) select mi).ElementAt(index); var factory = new DelegatingMethodFactory(); factory.OnCreate = m => new StaticMethod(m); var sut = new GenericMethod(method, factory); var exception = Assert.Throws <TypeArgumentsCannotBeInferredException>( () => sut.Invoke((object[])values)); Assert.Contains(method.Name, exception.Message); }