public void Test05FunctionalDelete() { // 0 1 2 3 4 5 6 7 8 9 // 0 1 2 3 4 A B C D E F G H I J 5 6 7 8 9 // 0 1 2 3 4 A B C D E F G H I J 5 6 7 8 9 a b // 0 1 2 3 J 5 6 7 8 9 a b // 0, 4/9, 1/5, 5/10, 2 var st = new SpanTable(); st.Insert(0, 10); st.Insert(5, 10); st.Insert(20, 2); st.Delete(4, 10); var temp = st.Head; var span = new Span(0, 0, 4); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; span = new Span(1, 9, 1); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; span = new Span(0, 5, 5); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; span = new Span(1, 10, 2); Assert.AreEqual(span, temp); Assert.IsNull(temp.Next); }
public void Test08FunctionalDeleteMultiSpanExtraLength() { // 0 1 2 3 4 5 6 7 8 9 // 0 1 2 3 4 A B C D E F G H I J 5 6 7 8 9 // 0 1 2 3 4 A B C D E F G H I J 5 6 7 8 9 a b // 0 1 2 3 4 A B C D E F G H I J 5 // 0, 5/0, 10/5, 1 var st = new SpanTable(); st.Insert(0, 10); st.Insert(5, 10); st.Insert(20, 2); var temp = st.Head; var span = new Span(0, 0, 5); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; Assert.IsNotNull(temp.Previous); Assert.IsNotNull(temp.Next); span = new Span(1, 0, 10); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); st.Delete(16, 1000); temp = st.Head; span = new Span(0, 0, 5); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; span = new Span(1, 0, 10); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; span = new Span(0, 5, 1); Assert.AreEqual(span, temp); Assert.IsNull(temp.Next); }
public void Test07FunctionalDeleteSingleSpanTail() { // 0 1 2 3 4 5 6 7 8 9 // 0 1 2 3 4 A B C D E F G H I J 5 6 7 8 9 // 0 1 2 3 4 A B C D E F G H I J 5 6 7 8 9 a b // 0 1 2 3 4 A B C D E F G H I J 5 6 7 8 9 // 0, 5/0, 10/5, 5 var st = new SpanTable(); st.Insert(0, 10); st.Insert(5, 10); st.Insert(20, 2); var temp = st.Head; var span = new Span(0, 0, 5); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; Assert.IsNotNull(temp.Previous); Assert.IsNotNull(temp.Next); span = new Span(1, 0, 10); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); st.Delete(20, 2); temp = st.Head; span = new Span(0, 0, 5); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; span = new Span(1, 0, 10); Assert.AreEqual(span, temp); Assert.IsNotNull(temp.Next); temp = temp.Next; span = new Span(0, 5, 5); Assert.AreEqual(span, temp); Assert.IsNull(temp.Next); }