public void Equals_EqualNotEqualInstanceAndMember_ReturnsFalse()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            var other = new MemberAccessFilterExpression(new MemberAccessFilterExpression(null, "TestObject"), "TestString");

            Assert.That(memberExpression.Equals(other), Is.False);
        }
        public void ObjectEquals_EqualNotEqualInstanceAndMember_ReturnsFalse()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            object other = new MemberAccessFilterExpression(new MemberAccessFilterExpression(null, "TestObject"), "TestString");

            Assert.That(memberExpression.Equals(other), Is.False);
        }
        public void Equals_Null_ReturnsFalse()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            MemberAccessFilterExpression other = null;

            Assert.That(memberExpression.Equals(other), Is.False);
        }
        public void ObjectEquals_SameReference_ReturnsTrue()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            object other = memberExpression;

            Assert.That(memberExpression.Equals(other), Is.True);
        }
        public void ObjectEquals_NonMemberAccessFilterExpressionObject_ReturnsFalse()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            object other = "Hello World.";

            Assert.That(memberExpression.Equals(other), Is.False);
        }
        public void Equals_Null_ReturnsFalse()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            MemberAccessFilterExpression other = null;

            Assert.That(memberExpression.Equals(other), Is.False);
        }
        public void Equals_SameReference_ReturnsTrue()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            MemberAccessFilterExpression other = memberExpression;

            Assert.That(memberExpression.Equals(other), Is.True);
        }
        public void ObjectEquals_EqualInstanceAndMember_ReturnsTrue()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            object other = new MemberAccessFilterExpression(null, "TestString");

            Assert.That(memberExpression.Equals(other), Is.True);
        }
        public void Equals_EqualInstanceAndNotEqualMember_ReturnsFalse()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            var other = new MemberAccessFilterExpression(null, "TestInteger");

            Assert.That(memberExpression.Equals(other), Is.False);
        }
        public void Equals_EqualInstanceAndMember_ReturnsTrue()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            var other = new MemberAccessFilterExpression(null, "TestString");

            Assert.That(memberExpression.Equals(other), Is.True);
        }
示例#11
0
        public void ToString_NotOperatorEqualsExpression_GeneratesStringCorrectly()
        {
            var left  = new MemberAccessFilterExpression(null, "TestMember");
            var right = new ConstantFilterExpression("hello", typeof(string));
            var expr  = new BinaryFilterExpression(left, FilterExpressionOperator.Equal, right);

            var notExpr = new UnaryFilterExpression(FilterExpressionOperator.Not, expr);

            Assert.That(notExpr.ToString(), Is.EqualTo("(not((TestMember eq 'hello')))"));
        }
        public void ToString_NotOperatorEqualsExpression_GeneratesStringCorrectly()
        {
            var left = new MemberAccessFilterExpression(null, "TestMember");
            var right = new ConstantFilterExpression("hello", typeof (string));
            var expr = new BinaryFilterExpression(left, FilterExpressionOperator.Equal, right);

            var notExpr = new UnaryFilterExpression(FilterExpressionOperator.Not, expr);

            Assert.That(notExpr.ToString(), Is.EqualTo("(not((TestMember eq 'hello')))"));
        }
示例#13
0
        protected virtual Expression TranslateMemberAccess(MemberAccessFilterExpression memberAccess)
        {
            Expression instance = _parameter;

            if (memberAccess.Instance != null)
            {
                instance = Translate(memberAccess.Instance);
            }

            var members = instance.Type.GetMember(memberAccess.Member).ToList();

            if (members.Count != 1)
            {
                throw new ArgumentException(String.Format("Could not find member '{0}' on type '{1}'.", memberAccess.Member, instance.Type));
            }

            var memberInfo = members.Single();

            return(Expression.MakeMemberAccess(instance, memberInfo));
        }
        protected virtual Expression TranslateMemberAccess(MemberAccessFilterExpression memberAccess)
        {
            Expression instance = _parameter;

            if (memberAccess.Instance != null)
            {
                instance = Translate(memberAccess.Instance);
            }

            var members = instance.Type.GetMember(memberAccess.Member).ToList();

            if (members.Count != 1)
            {
                throw new ArgumentException(String.Format("Could not find member '{0}' on type '{1}'.", memberAccess.Member, instance.Type));
            }

            var memberInfo = members.Single();

            return Expression.MakeMemberAccess(instance, memberInfo);
        }
        public void ToString_NoInstanceExpression_ReturnsCorrectString()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            Assert.That(memberExpression.ToString(), Is.EqualTo("TestString"));
        }
        public void GetHashCode_ReturnsCorrectValue()
        {
            var memberExpression = new MemberAccessFilterExpression(new MemberAccessFilterExpression(null, "TestObject"), "TestString");

            Assert.That(memberExpression.GetHashCode(), Is.EqualTo(String.Format("Instance:TestObject;Member:TestString;").GetHashCode()));
        }
        public void ToString_TwoLevelInstanceExpressions_ReturnsCorrectString()
        {
            var memberExpression = new MemberAccessFilterExpression(new MemberAccessFilterExpression(new MemberAccessFilterExpression(null, "TestChild1"), "TestChild2"), "TestString");

            Assert.That(memberExpression.ToString(), Is.EqualTo("TestChild1/TestChild2/TestString"));
        }
        public void GetHashCode_ReturnsCorrectValue()
        {
            var memberExpression = new MemberAccessFilterExpression(new MemberAccessFilterExpression(null, "TestObject"), "TestString");

            Assert.That(memberExpression.GetHashCode(), Is.EqualTo(String.Format("Instance:TestObject;Member:TestString;").GetHashCode()));
        }
        private static MemberExpression GetMemberAccessExpression(ParameterExpression parameter, MemberAccessFilterExpression selector)
        {
            MemberExpression result;

            if (selector.Instance == null)
            {
                var property = parameter.Type.GetProperty(selector.Member);

                result = Expression.MakeMemberAccess(parameter, property);
            }
            else
            {
                if (selector.Instance.ExpressionType == FilterExpressionType.MemberAccess)
                {
                    var parent = GetMemberAccessExpression(parameter, (MemberAccessFilterExpression)selector.Instance);

                    var property = parent.Type.GetProperty(selector.Member);

                    if (property == null)
                    {
                        throw new ArgumentException(String.Format("Could not find property '{0}' on type '{1}'.", selector.Member, parent.Type));
                    }

                    result = Expression.MakeMemberAccess(parent, property);
                }
                else
                {
                    throw new NotSupportedException("Accessing members of non-member expressions is not supported.");
                }
            }

            return(result);
        }
        public void ToString_TwoLevelInstanceExpressions_ReturnsCorrectString()
        {
            var memberExpression = new MemberAccessFilterExpression(new MemberAccessFilterExpression(new MemberAccessFilterExpression(null, "TestChild1"), "TestChild2"), "TestString");

            Assert.That(memberExpression.ToString(), Is.EqualTo("TestChild1/TestChild2/TestString"));
        }
        public void ToString_NoInstanceExpression_ReturnsCorrectString()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            Assert.That(memberExpression.ToString(), Is.EqualTo("TestString"));
        }
        public void ObjectEquals_NonMemberAccessFilterExpressionObject_ReturnsFalse()
        {
            var memberExpression = new MemberAccessFilterExpression(null, "TestString");

            object other = "Hello World.";

            Assert.That(memberExpression.Equals(other), Is.False);
        }