public void TestIntervalPosition(IntInterval interval, int value) { int first = interval.First; int last = interval.Last; checked { IntIntervalPosition position = interval.PositionOf(value); switch (position) { case IntIntervalPosition.Less: Assert.Less(value, first); break; case IntIntervalPosition.First: Assert.AreEqual(value, first); break; case IntIntervalPosition.StrictlyInside: Assert.IsTrue(last > value && value > first); break; case IntIntervalPosition.Last: Assert.AreEqual(value, last); break; case IntIntervalPosition.Greater: Assert.Greater(value, last); break; case IntIntervalPosition.Undefined: Assert.IsTrue(interval.IsEmpty); break; default: Assert.Fail("Invalid interval position result"); break; } if (position != IntIntervalPosition.Undefined) { Assert.AreEqual( last >= value && value >= first, (position & IntIntervalPosition.InsideMask) != 0); Assert.AreEqual( last < value || value < first, (position & IntIntervalPosition.OutsideMask) != 0); Assert.AreEqual( last == value || value == first, (position & IntIntervalPosition.EdgeMask) != 0); } } }