Exemplo n.º 1
0
        public void Should_not_change_expression_without_conversion()
        {
            Expression <Func <MyImplicitImplementingObject, string?> > expression = o => o.MyProperty;

            var visitedExpression = RelinqInterfaceMemberAccessVisitor.Rewrite(expression);

            visitedExpression.Should().Be(expression);
        }
Exemplo n.º 2
0
        public void Should_change_property_expression_of_implicit_implemented_interface_with_setter_to_one_of_concrete_type()
        {
            var expression = GetInterfaceImplementingExpression <MyImplicitImplementingObjectWithSetter>();

            var visitedExpression = RelinqInterfaceMemberAccessVisitor.Rewrite(expression);

            var memberExpression = visitedExpression.As <LambdaExpression>().Body.As <MemberExpression>();

            memberExpression.Should().NotBeNull();
            memberExpression.Member.Should().Be(typeof(MyImplicitImplementingObjectWithSetter).GetProperty(nameof(MyImplicitImplementingObjectWithSetter.MyProperty), BindingFlags.Instance | BindingFlags.Public));
            memberExpression.Expression.Should().Be(expression.Parameters[0]);
        }
Exemplo n.º 3
0
        public void Should_change_property_expression_of_explicit_implemented_interface_to_one_of_concrete_type()
        {
            var expression = GetInterfaceImplementingExpression <MyExplicitImplementingObject>();

            var visitedExpression = RelinqInterfaceMemberAccessVisitor.Rewrite(expression);

            var memberExpression = visitedExpression.As <LambdaExpression>().Body.As <MemberExpression>();

            memberExpression.Should().NotBeNull();
            memberExpression.Member.Should().NotBeNull().And.Subject
            .Should().Be(typeof(MyExplicitImplementingObject).GetProperties(BindingFlags.Instance | BindingFlags.NonPublic).FirstOrDefault());
            memberExpression.Expression.Should().Be(expression.Parameters[0]);
        }
Exemplo n.º 4
0
        public void Should_pick_correct_property_if_interface_is_implemented_explicit_and_implicit()
        {
            var expression = GetInterfaceImplementingExpression <MyDualImplementingObject>();

            var visitedExpression = RelinqInterfaceMemberAccessVisitor.Rewrite(expression);

            var memberExpression = visitedExpression.As <LambdaExpression>().Body.As <MemberExpression>();

            memberExpression.Should().NotBeNull();
            memberExpression.Member.Should().NotBeNull().And.Subject
            .Should().Be(typeof(MyDualImplementingObject).GetProperties(BindingFlags.Instance | BindingFlags.NonPublic).FirstOrDefault())
            .Should().NotBe(typeof(MyDualImplementingObject).GetProperty(nameof(MyDualImplementingObject.MyProperty), BindingFlags.Instance | BindingFlags.NonPublic));
            memberExpression.Expression.Should().Be(expression.Parameters[0]);
        }