Esempio n. 1
0
        public void FindDepthFirst()
        {
            var annList = new AnnotationList <int>();

            annList.Add(1, 2, FeatureStruct.New().Value);
            annList.Add(9, 10, FeatureStruct.New().Value);
            annList.Add(49, 50, FeatureStruct.New().Value);
            annList.Add(69, 70, FeatureStruct.New().Value);
            annList.Add(99, 100, FeatureStruct.New().Value);
            annList.Add(1, 49, FeatureStruct.New().Value);
            annList.Add(51, 100, FeatureStruct.New().Value);

            Annotation <int> result;

            Assert.IsFalse(annList.FindDepthFirst(0, out result));
            Assert.AreEqual(annList.Begin, result);

            Assert.IsFalse(annList.FindDepthFirst(100, out result));
            Assert.AreEqual(annList.Last, result);

            Assert.IsTrue(annList.FindDepthFirst(1, out result));
            Assert.AreEqual(annList.First, result);

            Assert.IsFalse(annList.FindDepthFirst(8, out result));
            Assert.AreEqual(annList.First.Children.First, result);

            Assert.IsTrue(annList.FindDepthFirst(99, out result));
            Assert.AreEqual(annList.Last.Children.Last, result);

            Assert.IsTrue(annList.FindDepthFirst(49, out result));
            Assert.AreEqual(annList.First.Next, result);

            Assert.IsFalse(annList.FindDepthFirst(101, Direction.RightToLeft, out result));
            Assert.AreEqual(annList.End, result);

            Assert.IsFalse(annList.FindDepthFirst(1, Direction.RightToLeft, out result));
            Assert.AreEqual(annList.First, result);

            Assert.IsTrue(annList.FindDepthFirst(100, Direction.RightToLeft, out result));
            Assert.AreEqual(annList.Last, result);

            Assert.IsFalse(annList.FindDepthFirst(71, Direction.RightToLeft, out result));
            Assert.AreEqual(annList.Last.Children.Last, result);

            Assert.IsTrue(annList.FindDepthFirst(2, Direction.RightToLeft, out result));
            Assert.AreEqual(annList.First.Children.First, result);

            Assert.IsTrue(annList.FindDepthFirst(50, Direction.RightToLeft, out result));
            Assert.AreEqual(annList.Last.Prev, result);
        }