public static bool IsBetweenDecimalExpression(IScriptCallContext context, double lower, NumericLimitType op1, double value, NumericLimitType op2, double upper) { double tolerance = (upper - lower) * APPROX_TOL; bool result = true; switch (op1) { case NumericLimitType.Exclude: result &= (value > lower); break; case NumericLimitType.Include: result &= (value >= lower); break; case NumericLimitType.Approx: result &= (value > (lower - tolerance)); break; default: throw new NotImplementedException(); } switch (op1) { case NumericLimitType.Exclude: result &= (value < upper); break; case NumericLimitType.Include: result &= (value <= upper); break; case NumericLimitType.Approx: result &= (value < (upper + tolerance)); break; default: throw new NotImplementedException(); } return(result); }
public static bool IsBetweenTimespanExpression(IScriptCallContext context, TimeSpan lower, NumericLimitType op1, TimeSpan value, NumericLimitType op2, TimeSpan upper) { long tolerance = APPROX_TOL_TS; bool result = true; switch (op1) { case NumericLimitType.Exclude: result = (value > lower); break; case NumericLimitType.Include: result = (value >= lower); break; case NumericLimitType.Approx: result = (value.Ticks > (lower.Ticks - tolerance)); break; default: throw new NotImplementedException(); } switch (op1) { case NumericLimitType.Exclude: result &= (value < upper); break; case NumericLimitType.Include: result &= (value <= upper); break; case NumericLimitType.Approx: result &= (value.Ticks < (upper.Ticks + tolerance)); break; default: throw new NotImplementedException(); } return(result); }
public static bool IsBetweenIntegerExpression(IScriptCallContext context, long lower, NumericLimitType op1, long value, NumericLimitType op2, long upper) { bool result = true; switch (op1) { case NumericLimitType.Exclude: result &= (value > lower); break; case NumericLimitType.Include: case NumericLimitType.Approx: result &= (value >= lower); break; default: throw new NotImplementedException(); } switch (op1) { case NumericLimitType.Exclude: result &= (value < upper); break; case NumericLimitType.Include: case NumericLimitType.Approx: result &= (value <= upper); break; default: throw new NotImplementedException(); } return(result); }