public void Find() { var annList = new AnnotationList <int>(); annList.Add(1, 2, FeatureStruct.New().Value); annList.Add(9, 10, FeatureStruct.New().Value); annList.Add(24, 25, FeatureStruct.New().Value); annList.Add(49, 50, FeatureStruct.New().Value); annList.Add(99, 100, FeatureStruct.New().Value); annList.Add(99, 100, FeatureStruct.New().Value); annList.Add(new Annotation <int>(Range <int> .Create(20, 70), FeatureStruct.New().Value), false); Annotation <int> result; Assert.IsFalse(annList.Find(0, out result)); Assert.AreSame(annList.Begin, result); Assert.IsTrue(annList.Find(1, out result)); Assert.AreSame(annList.First, result); Assert.IsFalse(annList.Find(100, out result)); Assert.AreSame(annList.Last, result); Assert.IsFalse(annList.Find(101, out result)); Assert.AreSame(annList.Last, result); Assert.IsFalse(annList.Find(30, out result)); Assert.AreSame(annList.ElementAt(3), result); Assert.IsTrue(annList.Find(9, out result)); Assert.AreSame(annList.First.Next, result); Assert.IsFalse(annList.Find(101, Direction.RightToLeft, out result)); Assert.AreSame(annList.End, result); Assert.IsTrue(annList.Find(100, Direction.RightToLeft, out result)); Assert.AreSame(annList.Last, result); Assert.IsFalse(annList.Find(1, Direction.RightToLeft, out result)); Assert.AreSame(annList.First, result); Assert.IsFalse(annList.Find(0, Direction.RightToLeft, out result)); Assert.AreSame(annList.First, result); Assert.IsFalse(annList.Find(15, Direction.RightToLeft, out result)); Assert.AreSame(annList.ElementAt(2), result); Assert.IsTrue(annList.Find(10, Direction.RightToLeft, out result)); Assert.AreSame(annList.First.Next, result); }
public void Add() { var annList = new AnnotationList <int>(); // add without subsumption // add to empty list var a = new Annotation <int>(Range <int> .Create(49, 50), FeatureStruct.New().Value); annList.Add(a, false); Assert.AreEqual(1, annList.Count); Assert.AreSame(a, annList.First); // add to beginning of list a = new Annotation <int>(Range <int> .Create(0, 1), FeatureStruct.New().Value); annList.Add(a, false); Assert.AreEqual(2, annList.Count); Assert.AreSame(a, annList.First); // add to end of list a = new Annotation <int>(Range <int> .Create(99, 100), FeatureStruct.New().Value); annList.Add(a, false); Assert.AreEqual(3, annList.Count); Assert.AreSame(a, annList.Last); // add to middle of list a = new Annotation <int>(Range <int> .Create(24, 25), FeatureStruct.New().Value); annList.Add(a, false); Assert.AreEqual(4, annList.Count); Assert.AreSame(a, annList.ElementAt(1)); // add containing annotation a = new Annotation <int>(Range <int> .Create(0, 100), FeatureStruct.New().Value); annList.Add(a, false); Assert.AreEqual(5, annList.Count); Assert.AreSame(a, annList.First()); // add contained annotation a = new Annotation <int>(Range <int> .Create(9, 10), FeatureStruct.New().Value); annList.Add(a, false); Assert.AreEqual(6, annList.Count); Assert.AreSame(a, annList.ElementAt(2)); annList.Clear(); // add with subsumption // add to empty list a = new Annotation <int>(Range <int> .Create(49, 50), FeatureStruct.New().Value); annList.Add(a); Assert.AreEqual(1, annList.Count); Assert.AreSame(a, annList.First); // add to beginning of list a = new Annotation <int>(Range <int> .Create(0, 1), FeatureStruct.New().Value); annList.Add(a); Assert.AreEqual(2, annList.Count); Assert.AreSame(a, annList.First); // add to end of list a = new Annotation <int>(Range <int> .Create(99, 100), FeatureStruct.New().Value); annList.Add(a); Assert.AreEqual(3, annList.Count); Assert.AreSame(a, annList.Last); // add to middle of list a = new Annotation <int>(Range <int> .Create(24, 25), FeatureStruct.New().Value); annList.Add(a); Assert.AreEqual(4, annList.Count); Assert.AreSame(a, annList.ElementAt(1)); // add containing annotation a = new Annotation <int>(Range <int> .Create(0, 100), FeatureStruct.New().Value); annList.Add(a); Assert.AreEqual(1, annList.Count); Assert.AreSame(a, annList.First()); Assert.AreEqual(4, a.Children.Count); // add contained annotation a = new Annotation <int>(Range <int> .Create(9, 10), FeatureStruct.New().Value); annList.Add(a); Assert.AreEqual(1, annList.Count); Assert.AreEqual(5, annList.First.Children.Count); Assert.AreSame(a, annList.First.Children.ElementAt(1)); annList.Clear(); annList.Add(0, 1, FeatureStruct.New().Value); annList.Add(1, 2, FeatureStruct.New().Value); annList.Add(2, 3, FeatureStruct.New().Value); annList.Add(3, 4, FeatureStruct.New().Value); annList.Add(4, 5, FeatureStruct.New().Value); annList.Add(5, 6, FeatureStruct.New().Value); Assert.AreEqual(6, annList.Count); a = new Annotation <int>(Range <int> .Create(1, 5), FeatureStruct.New().Value); a.Children.Add(1, 3, FeatureStruct.New().Value); a.Children.Add(3, 5, FeatureStruct.New().Value); Assert.AreEqual(2, a.Children.Count); annList.Add(a); Assert.AreEqual(3, annList.Count); Assert.AreSame(a, annList.ElementAt(1)); Assert.AreEqual(2, a.Children.Count); Assert.AreEqual(2, a.Children.First.Children.Count); Assert.AreEqual(2, a.Children.Last.Children.Count); }