public void SkipOtherComparisons() { var parameter = Expression.Parameter(typeof(A), "x"); PreProcessors.PropagateImplicitBooleans(ExpOf <A>(x => x.BoolProperty == x.BoolField)) .ShouldBeLike(Expression.Lambda <Func <A, bool> >( Expression.MakeBinary(ExpressionType.Equal, Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolProperty))[0]), Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolField))[0])), parameter)); }
public void SkipExplicitBoolComparisons() { var parameter = Expression.Parameter(typeof(A), "x"); // ReSharper disable once RedundantBoolCompare PreProcessors.PropagateImplicitBooleans(ExpOf <A>(x => x.BoolProperty == true)) .ShouldBeLike(Expression.Lambda <Func <A, bool> >( Expression.MakeBinary(ExpressionType.Equal, Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolProperty))[0]), Expression.Constant(true)), parameter)); }
public void AndAlso() { var parameter = Expression.Parameter(typeof(A), "x"); PreProcessors.PropagateImplicitBooleans(ExpOf <A>(x => x.BoolProperty && x.BoolField)) .ShouldBeLike(Expression.Lambda <Func <A, bool> >( Expression.MakeBinary(ExpressionType.AndAlso, Expression.MakeBinary(ExpressionType.Equal, Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolProperty))[0]), Expression.Constant(true)), Expression.MakeBinary(ExpressionType.Equal, Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolField))[0]), Expression.Constant(true))), parameter)); }