Here is the full class.
/// <summary> /// An extension class for the between operation /// name pattern IsBetweenXX where X = I -> Inclusive, X = E -> Exclusive /// <a href="https://stackoverflow.com/a/13470099/37055"></a> /// </summary> public static class BetweenExtensions { /// <summary> /// Between check <![CDATA[min <= value <= max]]> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value">the value to check</param> /// <param name="min">Inclusive minimum border</param> /// <param name="max">Inclusive maximum border</param> /// <returns>return true if the value is between the min & max else false</returns> public static bool IsBetweenII<T>(this T value, T min, T max) where T:IComparable<T> { return (min.CompareTo(value) <= 0) && (value.CompareTo(max) <= 0); } /// <summary> /// Between check <![CDATA[min < value <= max]]> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value">the value to check</param> /// <param name="min">Exclusive minimum border</param> /// <param name="max">Inclusive maximum border</param> /// <returns>return true if the value is between the min & max else false</returns> public static bool IsBetweenEI<T>(this T value, T min, T max) where T:IComparable<T> { return (min.CompareTo(value) < 0) && (value.CompareTo(max) <= 0); } /// <summary> /// between check <![CDATA[min <= value < max]]> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value">the value to check</param> /// <param name="min">Inclusive minimum border</param> /// <param name="max">Exclusive maximum border</param> /// <returns>return true if the value is between the min & max else false</returns> public static bool IsBetweenIE<T>(this T value, T min, T max) where T:IComparable<T> { return (min.CompareTo(value) <= 0) && (value.CompareTo(max) < 0); } /// <summary> /// between check <![CDATA[min < value < max]]> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value">the value to check</param> /// <param name="min">Exclusive minimum border</param> /// <param name="max">Exclusive maximum border</param> /// <returns>return true if the value is between the min & max else false</returns> public static bool IsBetweenEE<T>(this T value, T min, T max) where T:IComparable<T> { return (min.CompareTo(value) < 0) && (value.CompareTo(max) < 0); } }
plus unit test code
[TestClass] public class UnitTest1 { [TestMethod] public void TestMethodIsBeetween() { Assert.IsTrue(5.0.IsBetweenII(5.0, 5.0)); Assert.IsFalse(5.0.IsBetweenEI(5.0, 5.0)); Assert.IsFalse(5.0.IsBetweenIE(5.0, 5.0)); Assert.IsFalse(5.0.IsBetweenEE(5.0, 5.0)); Assert.IsTrue(5.0.IsBetweenII(4.9, 5.0)); Assert.IsTrue(5.0.IsBetweenEI(4.9, 5.0)); Assert.IsFalse(5.0.IsBetweenIE(4.9, 5.0)); Assert.IsFalse(5.0.IsBetweenEE(4.9, 5.0)); Assert.IsTrue(5.0.IsBetweenII(5.0, 5.1)); Assert.IsFalse(5.0.IsBetweenEI(5.0, 5.1)); Assert.IsTrue(5.0.IsBetweenIE(5.0, 5.1)); Assert.IsFalse(5.0.IsBetweenEE(5.0, 5.1)); Assert.IsTrue(5.0.IsBetweenII(4.9, 5.1)); Assert.IsTrue(5.0.IsBetweenEI(4.9, 5.1)); Assert.IsTrue(5.0.IsBetweenIE(4.9, 5.1)); Assert.IsTrue(5.0.IsBetweenEE(4.9, 5.1)); Assert.IsFalse(5.0.IsBetweenII(5.1, 4.9)); Assert.IsFalse(5.0.IsBetweenEI(5.1, 4.9)); Assert.IsFalse(5.0.IsBetweenIE(5.1, 4.9)); Assert.IsFalse(5.0.IsBetweenEE(5.1, 4.9)); } }
Hansjörg Nov 20 '12 at 9:27 2012-11-20 09:27
source share