public void FirstTest()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAsLast(11);
            list1.InsertAsLast(12);

            Assert.IsTrue(list1.First().Data == 10);
        }
        public void DeduplicateTest()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAsLast(12);
            list1.InsertAsLast(11);
            list1.InsertAsLast(10);

            Assert.IsTrue(list1.Deduplicate() == 1);
            Assert.IsTrue(list1.Size() == 3, "size");
            Assert.IsTrue(list1.First().Data == 12, "12");
            Assert.IsTrue(list1.First().Succeed.Data == 11, "11");
            Assert.IsTrue(list1.Last().Data == 10, "10");
        }
        public void InsertAfterTest()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAfter(list1.First(), 11);

            Assert.IsTrue(list1.Size() == 2);
            Assert.IsTrue(list1.Last().Data == 11);
        }
        public void UniquifyTest()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAsLast(11);
            list1.InsertAsLast(11);
            list1.InsertAsLast(12);
            list1.InsertAsLast(12);

            Assert.IsTrue(list1.Uniquify() == 2);
            Assert.IsTrue(list1[0] == 10, "10");
            Assert.IsTrue(list1[1] == 11, "11");
            Assert.IsTrue(list1[2] == 12, "12");
        }
        public void TraverseTest()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAsLast(11);
            list1.InsertAsLast(12);

            int sum = 0;
            list1.Traverse(o => sum += o);
            Assert.IsTrue(sum == 33);
        }
        public void SizeTest()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAsLast(11);
            list1.InsertAsLast(12);

            Assert.IsTrue(list1.Size() == 3);
        }
        public void SearchTest()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAsLast(11);
            list1.InsertAsLast(12);
            //ordered
            //10,11,12

            Assert.IsTrue(list1.Search(9) == list1.First().Precursor, "head");

            list1.InsertAfter(list1.Search(13), 13);
            Assert.IsTrue(list1.Size() == 4);
            Assert.IsTrue(list1.Last().Data == 13, "13-1");
            Assert.IsTrue(list1[3] == 13, "13");
        }
        public void MyListTest3()
        {
            MyList<int> list1 = new MyList<int>();
            list1.InsertAsLast(10);
            list1.InsertAsLast(11);
            list1.InsertAsLast(12);

            MyList<int> list2 = new MyList<int>(list1, 1, 2);
            Assert.IsTrue(list2 != null);
            Assert.IsTrue(list2.Size() == 2);
            Assert.IsTrue(list2.First().Data == 11, "11");
            Assert.IsTrue(list2.First().Succeed.Data == 12, "12");
        }