예제 #1
0
        public void TestSubtractOfOverlappingRangeFromRight()
        {
            IntervalSet s         = IntervalSet.Of(10, 20);
            IntervalSet s2        = IntervalSet.Of(15, 25);
            String      expecting = "{10..14}";
            String      result    = (s.Subtract(s2)).ToString();

            Assert.AreEqual(expecting, result);

            IntervalSet s3 = IntervalSet.Of(20, 25);

            expecting = "{10..19}";
            result    = (s.Subtract(s3)).ToString();
            Assert.AreEqual(expecting, result);
        }
예제 #2
0
        public void TestSubtractOfOverlappingRangeFromLeft()
        {
            IntervalSet s         = IntervalSet.Of(10, 20);
            IntervalSet s2        = IntervalSet.Of(5, 11);
            String      expecting = "{12..20}";
            String      result    = (s.Subtract(s2)).ToString();

            Assert.AreEqual(expecting, result);

            IntervalSet s3 = IntervalSet.Of(5, 10);

            expecting = "{11..20}";
            result    = (s.Subtract(s3)).ToString();
            Assert.AreEqual(expecting, result);
        }
예제 #3
0
        public void TestSubtractOfRangeSpanningMultipleRanges()
        {
            IntervalSet s = IntervalSet.Of(10, 20);

            s.Add(30, 40);
            s.Add(50, 60);                                 // s has 3 ranges now: 10..20, 30..40, 50..60
            IntervalSet s2        = IntervalSet.Of(5, 55); // covers one and touches 2nd range
            String      expecting = "{56..60}";
            String      result    = (s.Subtract(s2)).ToString();

            Assert.AreEqual(expecting, result);

            IntervalSet s3 = IntervalSet.Of(15, 55); // touches both

            expecting = "{10..14, 56..60}";
            result    = (s.Subtract(s3)).ToString();
            Assert.AreEqual(expecting, result);
        }
예제 #4
0
        public void TestSubtractOfCompletelyCoveredRange()
        {
            IntervalSet s         = IntervalSet.Of(10, 20);
            IntervalSet s2        = IntervalSet.Of(1, 25);
            String      expecting = "{}";
            String      result    = (s.Subtract(s2)).ToString();

            Assert.AreEqual(expecting, result);
        }
예제 #5
0
        public void TestSubtractOfCompletelyContainedRange()
        {
            IntervalSet s         = IntervalSet.Of(10, 20);
            IntervalSet s2        = IntervalSet.Of(12, 15);
            String      expecting = "{10..11, 16..20}";
            String      result    = (s.Subtract(s2)).ToString();

            Assert.AreEqual(expecting, result);
        }
예제 #6
0
        public void TestSingleElementMinusDisjointSet()
        {
            IntervalSet s  = IntervalSet.Of(15, 15);
            IntervalSet s2 = IntervalSet.Of(1, 5);

            s2.Add(10, 20);
            String expecting = "{}"; // 15 - {1..5, 10..20} = {}
            String result    = s.Subtract(s2).ToString();

            Assert.AreEqual(expecting, result);
        }
예제 #7
0
        public void TestSubtractOfWackyRange()
        {
            IntervalSet s = IntervalSet.Of(0, 113);

            s.Add(115, 200);
            IntervalSet s2 = IntervalSet.Of(0, 115);

            s2.Add(117, 200);
            String expecting = "116";
            String result    = (s.Subtract(s2)).ToString();

            Assert.AreEqual(expecting, result);
        }