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_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); }
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')))")); }
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")); }
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); }