public void ReverseTest2() { string test1 = "test1"; string test6 = "test6"; BiDirectionalList <object> oldList = new BiDirectionalList <object>( "", "abcde", new Node <object>('3'), 4, 5.0 ); oldList.AddNode(test6); BiDirectionalList <string> strList1 = new BiDirectionalList <string>("", "abcde", "3", "4", "5.0"); BiDirectionalList <string> strList2 = strList1.Clone(); BiDirectionalList <object> newList = oldList.Clone(); string comp1 = oldList.ToString(); string comp2 = newList.ToString(); Assert.AreEqual(comp1, comp2); newList.Reverse(); Assert.IsFalse(this.CompareReversedList(oldList, newList)); Assert.IsTrue(this.CompareReversedList(oldList, newList, true)); Assert.IsFalse(strList1.Equals(strList2)); Assert.IsTrue(strList1.Equals(strList2, true)); Node <object> node1 = newList.InsertNode(test1); Assert.AreEqual(newList.Head, node1); Node <object> node5 = newList.DeleteNode(-1); Assert.IsNull(newList.FindNode(node5)); Node <object> node6 = newList.AddNode(test6); Assert.AreEqual(newList.Last, node6); }
public void ReverseTest1() { string abc = "abc"; string xyz = "xyz"; string test1 = "test1"; string test2 = "test2"; string test3 = "test3"; string test4 = "test4"; Node <String> newNode = null; BiDirectionalList <String> myList = new BiDirectionalList <String>(); Assert.AreEqual(myList.Count, 0); // testing empty list Assert.IsNull(myList.Current); Assert.IsNull(myList.Head); Assert.IsNull(myList.Last); myList.Reverse(); Assert.AreEqual(myList.Count, 0); // testing linked list with only one node newNode = myList.AddNode(test1); Assert.AreEqual(myList.Count, 1); Assert.AreEqual(myList.Head, newNode); Assert.AreEqual(myList.Last, myList.Current); Assert.AreEqual(myList.Head, myList.Current); myList.Reverse(); Assert.AreEqual(myList.Count, 1); Assert.AreEqual(myList.Last, myList.Last); // reinitializing a new linked list myList = new BiDirectionalList <String>(test1); Assert.AreEqual(myList.Count, 1); newNode = myList.AddNode(test2); Assert.AreEqual(myList.Count, 2); Assert.AreEqual(myList.Last, newNode); Assert.AreNotEqual(myList.Head, newNode); newNode = myList.AddNode(test3); Assert.AreEqual(myList.Last, newNode); Assert.AreEqual(myList.Current.Value.ToString(), test3.ToString()); Assert.AreNotEqual(myList.Head, newNode); newNode = myList.AddNode(abc); Assert.AreEqual(myList.Count, 4); Assert.AreEqual(myList.Last, newNode); Assert.AreNotEqual(myList.Head, newNode); newNode = myList.AddNode(xyz); Assert.AreEqual(myList.Count, 5); Assert.AreEqual(myList.Last, newNode); Assert.AreEqual(myList.Current, myList.Last); Assert.AreNotEqual(myList.Head, newNode); // searching in linked list Assert.AreEqual(myList.Head, myList.FindNode(0)); Assert.AreEqual(myList.Head, myList.FindNode(test1)); Assert.AreEqual(myList.Last, myList.FindNode(xyz)); Assert.AreEqual(myList.Last, myList.FindNode(myList.Count - 1)); Assert.AreNotEqual(myList.Last, myList.FindNode(myList.Head)); myList.Last.Previous.Value = test4; Assert.AreEqual(myList.FindNode(3), myList.FindNode(test4)); Assert.AreEqual(myList.FindNode(-2), myList.FindNode(test4)); Assert.AreEqual(myList.FindNode(-1), myList.FindNode(xyz)); Assert.AreEqual(myList.FindNode(-1), myList.Last); Assert.AreEqual(myList.FindNode(0), myList.Head); Assert.AreEqual(myList.Current, myList.Head); Assert.IsNull(myList.FindNode(abc)); Assert.AreEqual(myList.Current, myList.Head); // saving original linked list Node <String> node_old = myList.Head; Node <String> node_nul = null; object[] original_list = myList.ToArray(); Assert.IsNotNull(node_old); Assert.AreEqual(myList.Current.CompareTo(node_nul), 1); Assert.AreEqual(myList.Count, 5); object head = myList.Head.Value; object last = myList.Last.Value; myList.Reverse(); Assert.AreEqual(myList.Current, myList.Last); Assert.AreEqual(myList.Head.Value.ToString(), last.ToString()); Assert.AreEqual(myList.Last.Value.ToString(), head.ToString()); Assert.AreEqual(myList.Last.Previous.Value.ToString(), test2); Assert.AreEqual(myList.Last.Previous.Previous.Value.ToString(), test3); Assert.AreEqual(myList.Head.Next.Next.Value.ToString(), test3); newNode = myList.Head; for (int n = original_list.Length - 1; n >= 0; n--) { Assert.AreEqual(original_list[n], newNode.Value); newNode = newNode.Next; } Node <String> node_new = myList.Last; Assert.IsNotNull(node_new); while (node_old != null) { Assert.AreEqual(node_old, node_new); node_new = node_new.Previous; node_old = node_old.Next; } }