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)); }