Esempio n. 1
0
        public void TestIntersect()
        {
            string        str           = "01234567";
            StringSegment segFull       = new StringSegment(str);
            StringSegment segFirstHalf  = new StringSegment(str, 0, 4);
            StringSegment segLastHalf   = new StringSegment(str, 4);
            StringSegment segMiddle     = new StringSegment(str, 2, 4);
            StringSegment segSecondChar = new StringSegment(str, 1, 1);
            StringSegment segLastChar   = new StringSegment(str, 7, 1);
            StringSegment segCenter     = new StringSegment(str, 4, 0);

            Assert.IsTrue(segFull.Intersect(segFull).IsIdenticalTo(segFull));
            Assert.IsTrue(segFull.Intersect(segFirstHalf).IsIdenticalTo(segFirstHalf));
            Assert.IsTrue(segFull.Intersect(segLastHalf).IsIdenticalTo(segLastHalf));
            Assert.IsTrue(segFull.Intersect(segMiddle).IsIdenticalTo(segMiddle));
            Assert.IsTrue(segFull.Intersect(segSecondChar).IsIdenticalTo(segSecondChar));
            Assert.IsTrue(segFull.Intersect(segLastChar).IsIdenticalTo(segLastChar));
            Assert.IsTrue(segFull.Intersect(segCenter).IsIdenticalTo(segCenter));

            Assert.IsTrue(segFirstHalf.Intersect(segFull).IsIdenticalTo(segFirstHalf));
            Assert.IsTrue(segFirstHalf.Intersect(segFirstHalf).IsIdenticalTo(segFirstHalf));
            Assert.IsTrue(segFirstHalf.Intersect(segLastHalf).IsIdenticalTo(segCenter));
            Assert.IsTrue(segFirstHalf.Intersect(segMiddle).IsIdenticalTo(new StringSegment(str, 2, 2)));
            Assert.IsTrue(segFirstHalf.Intersect(segSecondChar).IsIdenticalTo(segSecondChar));
            Assert.IsTrue(segFirstHalf.Intersect(segLastChar).IsIdenticalTo(new StringSegment(str, 7, 0)));
            Assert.IsTrue(segFirstHalf.Intersect(segCenter).IsIdenticalTo(segCenter));

            Assert.IsTrue(segLastHalf.Intersect(segFull).IsIdenticalTo(segLastHalf));
            Assert.IsTrue(segLastHalf.Intersect(segFirstHalf).IsIdenticalTo(segCenter));
            Assert.IsTrue(segLastHalf.Intersect(segLastHalf).IsIdenticalTo(segLastHalf));
            Assert.IsTrue(segLastHalf.Intersect(segMiddle).IsIdenticalTo(new StringSegment(str, 4, 2)));
            Assert.IsTrue(segLastHalf.Intersect(segSecondChar).IsIdenticalTo(segCenter));
            Assert.IsTrue(segLastHalf.Intersect(segLastChar).IsIdenticalTo(segLastChar));
            Assert.IsTrue(segLastHalf.Intersect(segCenter).IsIdenticalTo(segCenter));

            Assert.IsTrue(segMiddle.Intersect(segFull).IsIdenticalTo(segMiddle));
            Assert.IsTrue(segMiddle.Intersect(segFirstHalf).IsIdenticalTo(new StringSegment(str, 2, 2)));
            Assert.IsTrue(segMiddle.Intersect(segLastHalf).IsIdenticalTo(new StringSegment(str, 4, 2)));
            Assert.IsTrue(segMiddle.Intersect(segMiddle).IsIdenticalTo(segMiddle));
            Assert.IsTrue(segMiddle.Intersect(segSecondChar).IsIdenticalTo(new StringSegment(str, 2, 0)));
            Assert.IsTrue(segMiddle.Intersect(segLastChar).IsIdenticalTo(new StringSegment(str, 7, 0)));
            Assert.IsTrue(segMiddle.Intersect(segCenter).IsIdenticalTo(segCenter));

            Assert.IsTrue(segSecondChar.Intersect(segFull).IsIdenticalTo(segSecondChar));
            Assert.IsTrue(segSecondChar.Intersect(segFirstHalf).IsIdenticalTo(segSecondChar));
            Assert.IsTrue(segSecondChar.Intersect(segLastHalf).IsIdenticalTo(segCenter));
            Assert.IsTrue(segSecondChar.Intersect(segMiddle).IsIdenticalTo(new StringSegment(str, 2, 0)));
            Assert.IsTrue(segSecondChar.Intersect(segSecondChar).IsIdenticalTo(segSecondChar));
            Assert.IsTrue(segSecondChar.Intersect(segLastChar).IsIdenticalTo(new StringSegment(str, 7, 0)));
            Assert.IsTrue(segSecondChar.Intersect(segCenter).IsIdenticalTo(segCenter));

            Assert.IsTrue(segLastChar.Intersect(segFull).IsIdenticalTo(segLastChar));
            Assert.IsTrue(segLastChar.Intersect(segFirstHalf).IsIdenticalTo(new StringSegment(str, 7, 0)));
            Assert.IsTrue(segLastChar.Intersect(segLastHalf).IsIdenticalTo(segLastChar));
            Assert.IsTrue(segLastChar.Intersect(segMiddle).IsIdenticalTo(new StringSegment(str, 7, 0)));
            Assert.IsTrue(segLastChar.Intersect(segSecondChar).IsIdenticalTo(new StringSegment(str, 7, 0)));
            Assert.IsTrue(segLastChar.Intersect(segLastChar).IsIdenticalTo(segLastChar));
            Assert.IsTrue(segLastChar.Intersect(segCenter).IsIdenticalTo(new StringSegment(str, 7, 0)));

            Assert.IsTrue(segCenter.Intersect(segFull).IsIdenticalTo(segCenter));
            Assert.IsTrue(segCenter.Intersect(segFirstHalf).IsIdenticalTo(segCenter));
            Assert.IsTrue(segCenter.Intersect(segLastHalf).IsIdenticalTo(segCenter));
            Assert.IsTrue(segCenter.Intersect(segMiddle).IsIdenticalTo(segCenter));
            Assert.IsTrue(segCenter.Intersect(segSecondChar).IsIdenticalTo(segCenter));
            Assert.IsTrue(segCenter.Intersect(segLastChar).IsIdenticalTo(new StringSegment(str, 7, 0)));
            Assert.IsTrue(segCenter.Intersect(segCenter).IsIdenticalTo(segCenter));
        }