public void HasBaseMethod() { Assert.That(_context.HasBaseMethod, Is.True); var context = MethodBodyContextBaseObjectMother.Create(baseMethod: null); Assert.That(context.HasBaseMethod, Is.False); }
public void BaseMethod() { Assert.That(_context.BaseMethod, Is.SameAs(_baseMethod)); var context = MethodBodyContextBaseObjectMother.Create(baseMethod: null); Assert.That( () => context.BaseMethod, Throws.TypeOf <NotSupportedException>().With.Message.EqualTo("This method does not override another method.")); }
public void DelegateTo_Static_WithGenericParameters() { var context = MethodBodyContextBaseObjectMother.Create(genericParameters: _genericParameters); var method = NormalizingMemberInfoFromExpressionUtility.GetGenericMethodDefinition(() => Enumerable.Empty <Dev.T>()); var result = context.DelegateTo(null, method); Assert.That(result.Object, Is.Null); Assert.That(result.Method, Is.SameAs(method.MakeTypePipeGenericMethod(_genericParameters))); }
public void DelegateTo_Instance_WithParameters() { var context = MethodBodyContextBaseObjectMother.Create(parameterExpressions: _parameters); var instance = Expression.Default(typeof(object)); var method = NormalizingMemberInfoFromExpressionUtility.GetMethod((object o) => o.Equals(null)); var result = context.DelegateTo(instance, method); Assert.That(result.Object, Is.SameAs(instance)); Assert.That(result.Method, Is.SameAs(method)); Assert.That(result.Arguments, Is.EqualTo(_parameters)); }
public void DelegateToBase() { var declaringType = MutableTypeObjectMother.Create(typeof(BaseType)); var baseMethod = NormalizingMemberInfoFromExpressionUtility.GetGenericMethodDefinition((BaseType o) => o.BaseMethod <Dev.T> (null)); var parameters = new[] { Expression.Parameter(_genericParameters[0]) }; var context = MethodBodyContextBaseObjectMother.Create( declaringType, genericParameters: _genericParameters, parameterExpressions: parameters, baseMethod: baseMethod); var result = context.DelegateToBase(baseMethod); var expected = Expression.Call( new ThisExpression(declaringType), new NonVirtualCallMethodInfoAdapter(baseMethod.MakeTypePipeGenericMethod(_genericParameters)), parameters.Cast <Expression>()); ExpressionTreeComparer.CheckAreEqualTrees(expected, result); }