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