示例#1
0
        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);
                }
            }
        }