public void AddRangeTest()
 {
     int[] data = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
     var list = new ConceptualSinglyLinkedList<int>(0);
     list.AddRange(data);
     Assert.AreEqual(data[2], list.Next.Next.Payload);
 }
 public void FindLastNthNodeTest()
 {
     int[] data = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
     var list = new ConceptualSinglyLinkedList<int>(0);
     list.AddRange(data);
     var loopingNode = list.FindLastNthNode(8);
     Assert.AreEqual(list.Next, loopingNode);
 }
 public void FindLoopingNodeTest()
 {
     int[] data = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
     var list = new ConceptualSinglyLinkedList<int>(0);
     list.AddRange(data);
     var last = list as ISinglyLinkedList<int>;
     while (last.Next != null)
     {
         last = last.Next;
     }
     last.Next = list.Next;
     var loopingNode = list.FindLoopNode();
     Assert.AreEqual(list.Next, loopingNode);
 }
 public void ReverseTest()
 {
     int[] data = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
     var list = new ConceptualSinglyLinkedList<int>(int.MinValue);
     list.AddRange(data);
     list.Reverse();
     var p = list as ISinglyLinkedList<int>;
     int i = 0;
     while(p.Next != null)
     {
         Assert.AreEqual(data[data.Length - i - 1], p.Payload);
         p = p.Next;
         i++;
     }
 }