Example #1
0
        public void MethodCallTransformer_Transform_StaticMethod()
        {
            var call = Expression.Call(NormalizingMemberInfoFromExpressionUtility.GetMethod(() => StaticMethod()));

            var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(typeof(Order).GetProperty("OrderNumber"));

            transformer.Transform(call);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        public void MethodCallTransformer_SupportedExpressionTypes()
        {
            var transformer = new LinqPropertyRedirectionAttribute.MethodCallTransformer(typeof(Order).GetProperty("OrderNumber"));

            Assert.That(transformer.SupportedExpressionTypes, Is.EqualTo(new[] { ExpressionType.Call }));
        }