public RangeSpecificationCriteria(RangeComparison comparison, object value) { Argument.EnsureIsDefinedEnum("comparison", comparison); Argument.EnsureNotNull("value", value); this.comparison = comparison; this.value = value; }
/// <summary> /// Initializes a new instance of the <see cref="RangeSpecificationCriteria"/> class. /// </summary> /// <param name="comparison">Type of comparison for this range specification.</param> /// <param name="value">Constant value that this range specification tests against.</param> public RangeSpecificationCriteria(RangeComparison comparison, object value) { Argument.EnsureIsDefinedEnum(nameof(comparison), comparison); Argument.EnsureNotNull(nameof(value), value); Comparison = comparison; Value = value; }
Expression VisitRange(RangeComparison rangeComparison, Expression left, Expression right) { var inverted = left is ConstantExpression; var cm = ConstantMemberPair.Create(left, right); if (cm == null) { throw new NotSupportedException("A {0} must test a constant against a member"); } if (inverted) { rangeComparison = invertedRangeComparison[(int)rangeComparison]; } var field = Mapping.GetFieldName(SourceType, cm.MemberExpression); return(new CriteriaExpression(new RangeCriteria(field, cm.MemberExpression.Member, rangeComparison, cm.ConstantExpression.Value))); }
/// <summary> /// Compares the boundary points of the Range with another one. /// </summary> /// <param name="how">A constant describing the comparison method</param> /// <param name="sourceRange">A Range to compare boundary points with the range.</param> /// <returns>A number, -1, 0, or 1, indicating whether the corresponding boundary-point of the Range is respectively before, equal to, or after the corresponding boundary-point of sourceRange.</returns> public virtual int CompareBoundaryPoints(RangeComparison how, Range sourceRange) { return(0); }
public RangeCriteria(string field, MemberInfo member, RangeComparison comparison, object value) : this(field, member, new[] { new RangeSpecificationCriteria(comparison, value) }) { }
/// <summary> /// Starting point for a range comparison, example: <c>0 <= Cmp(x) < 10</c> /// </summary> public static RangeComparison.Initial <A> Cmp <A>(A value) where A : IComparable <A> => RangeComparison.New(value);
internal void CombineSameFieldRangeNotCombineIntoSingleRangeCriteriaIfConflictingComparisons(RangeComparison leftRangeComparison, RangeComparison rightRangeComparison) { var leftRangeCriteria = new RangeCriteria("a", memberInfo, leftRangeComparison, "leftValue"); var rightRangeCriteria = new RangeCriteria("a", memberInfo, rightRangeComparison, "rightValue"); var criteria = AndCriteria.Combine(leftRangeCriteria, rightRangeCriteria); var rangeCriteria = Assert.IsType<AndCriteria>(criteria).Criteria.OfType<RangeCriteria>().ToList(); Assert.Equal(2, rangeCriteria.Count()); Assert.All(rangeCriteria, c => Assert.True(Assert.IsType<RangeCriteria>(c).Member == memberInfo)); Assert.Single(rangeCriteria, leftRangeCriteria); Assert.Single(rangeCriteria, rightRangeCriteria); }
/// <summary> /// Compares the boundary points of the Range with another one. /// </summary> /// <param name="how">A constant describing the comparison method</param> /// <param name="sourceRange">A Range to compare boundary points with the range.</param> /// <returns>A number, -1, 0, or 1, indicating whether the corresponding boundary-point of the Range is respectively before, equal to, or after the corresponding boundary-point of sourceRange.</returns> public virtual int CompareBoundaryPoints(RangeComparison how, Range sourceRange) { return 0; }
/// <summary> /// Compares the boundary points of the Range with another one. /// </summary> /// <param name="how">A constant describing the comparison method</param> /// <param name="sourceRange">A Range to compare boundary points with the range.</param> /// <returns>A number, -1, 0, or 1, indicating whether the corresponding boundary-point of the Range is respectively before, equal to, or after the corresponding boundary-point of sourceRange.</returns> public virtual extern int CompareBoundaryPoints(RangeComparison how, Range sourceRange);
internal void CombineSameFieldRangeNotCombineIntoSingleRangeCriteriaIfConflictingComparisons(RangeComparison leftRangeComparison, RangeComparison rightRangeComparison) { var leftRangeCriteria = new RangeCriteria("a", memberInfo, leftRangeComparison, "leftValue"); var rightRangeCriteria = new RangeCriteria("a", memberInfo, rightRangeComparison, "rightValue"); var criteria = AndCriteria.Combine(leftRangeCriteria, rightRangeCriteria); var rangeCriteria = Assert.IsType <AndCriteria>(criteria).Criteria.OfType <RangeCriteria>().ToList(); Assert.Equal(2, rangeCriteria.Count()); Assert.All(rangeCriteria, c => Assert.True(Assert.IsType <RangeCriteria>(c).Member == memberInfo)); Assert.Single(rangeCriteria, leftRangeCriteria); Assert.Single(rangeCriteria, rightRangeCriteria); }
public short CompareBoundaryPoints(RangeComparison how, Range sourceRange) { return 0; }
public short CompareBoundaryPoints(RangeComparison how, Range sourceRange) { return(0); }