Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }