public void MethodCallTransformer_Transform_StaticMethod() { var call = Expression.Call(NormalizingMemberInfoFromExpressionUtility.GetMethod(() => StaticMethod())); var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(typeof(Order).GetProperty("OrderNumber")); transformer.Transform(call); }
public void MethodCallTransformer_Transform_RedirectionToSelf() { var instance = Expression.Constant(null, typeof(Order)); var call = Expression.Call(instance, typeof(Order).GetProperty("OrderNumber").GetGetMethod()); var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(typeof(Order).GetProperty("OrderNumber")); transformer.Transform(call); }
public void MethodCallTransformer_Transform_ExtensionMethodWithArguments() { var call = Expression.Call( typeof(OrderExtensions).GetMethod("GetRedirectedOrderNumberWithInvalidSignature"), Expression.Constant(null, typeof(Order)), Expression.Constant(null)); var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(typeof(Order).GetProperty("OrderNumber")); transformer.Transform(call); }
public void MethodCallTransformer_Transform_MethodWithArguments() { var call = Expression.Call( Expression.Constant(null, typeof(LinqPropertyRedirectionAttributeTest)), NormalizingMemberInfoFromExpressionUtility.GetMethod(() => MethodWithArguments(null)), Expression.Constant(null)); var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(typeof(Order).GetProperty("OrderNumber")); transformer.Transform(call); }
public void MethodCallTransformer_Transform() { var instance = Expression.Constant(null, typeof(Order)); var call = Expression.Call(instance, typeof(Order).GetProperty("RedirectedOrderNumber").GetGetMethod()); var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(typeof(Order).GetProperty("OrderNumber")); var result = transformer.Transform(call); var expected = Expression.MakeMemberAccess(instance, typeof(Order).GetProperty("OrderNumber")); SqlExpressionTreeComparer.CheckAreEqualTrees(expected, result); }
public void MethodCallTransformer_Transform_ConvertRequired() { var instance = Expression.Constant(null, typeof(TargetClassForPersistentMixin)); var call = Expression.Call(instance, typeof(TargetClassForPersistentMixin).GetProperty("RedirectedPersistentProperty").GetGetMethod()); var mixinProperty = typeof(IMixinAddingPersistentProperties).GetProperty("PersistentProperty"); var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(mixinProperty); var result = transformer.Transform(call); var expected = Expression.MakeMemberAccess(Expression.Convert(instance, typeof(IMixinAddingPersistentProperties)), mixinProperty); SqlExpressionTreeComparer.CheckAreEqualTrees(expected, result); }
public void MethodCallTransformer_Transform_PublicToPrivateProperty() { var instance = Expression.Constant(null, typeof(ClassWithNonPublicProperties)); var call = Expression.Call(instance, typeof(ClassWithNonPublicProperties).GetProperty("PublicGetSet").GetGetMethod()); var privateProperty = typeof(ClassWithNonPublicProperties).GetProperty("PrivateGetSet", BindingFlags.Instance | BindingFlags.NonPublic); var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(privateProperty); var result = transformer.Transform(call); var expected = Expression.MakeMemberAccess(instance, privateProperty); SqlExpressionTreeComparer.CheckAreEqualTrees(expected, result); }