public void VerifyArgumentNullExceptionForCopyToArray()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            int[] array = null;

            simpleLinkList.CopyTo(array, 2);
        }
        public void VerifyArgumentOutOfRangeExceptionForCopyToArray()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            var array = new[] { 1, 2, 0 };

            simpleLinkList.CopyTo(array, -1);
        }
        public void AddMoreElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);

            simpleLinkList.ShouldContain(2);
        }
        public void VerifyClearLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Clear();

            simpleLinkList.ShouldBeEmpty();
        }
        public void VerifyUpdateElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Update(2,5);

            simpleLinkList.ShouldContain(5);
            simpleLinkList.ShouldNotContain(2);
        }
        public void VerifyUpdateAnNonExistentElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Update(3, 5);

            simpleLinkList.ShouldNotContain(5);
        }
        public void VerifyRemoveFirstElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Remove(4);

            simpleLinkList.ShouldNotContain(4);
        }
        public void VerifyRemoveFirstElementEndResutAnEmptyLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.ShouldContain(2);
            simpleLinkList.Remove(2);

            simpleLinkList.ShouldBeEmpty();
        }
        public void VerifyCountInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);

            simpleLinkList.Count.ShouldEqual(3);
        }
        public void VerifyRemoveANonExistentElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.ShouldContain(2);
            simpleLinkList.Remove(3);

            simpleLinkList.ShouldContain(2);
            simpleLinkList.Count.ShouldEqual(1);
        }
        public void VerifyInsertRightLastItemInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.InsertAfter(2, 5);

            simpleLinkList.ShouldContain(5);
            simpleLinkList.Count.ShouldEqual(4);
        }
        public void VerifyInsertLeftItemInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.InsertBefore(3, 5);

            simpleLinkList.ShouldContain(5);
            simpleLinkList.Count.ShouldEqual(4);
        }
        public void VerifyInsertDelegateBeforeItemInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            Insert<int> del = new Insert<int>(simpleLinkList.InsertItem);
            del(2, 5, true);

            CollectionAssert.AreEqual(new[] { 4, 3, 5, 2 }, simpleLinkList);
        }
        public void VerifyIndexOutOfRangeForCopyToArray()
        {
            var simpleLinkList=new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            var array = new[] { 1, 2, 0 };

            simpleLinkList.CopyTo(array,2);
        }
        public void VerifyCountWhenRemoveAnElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Remove(4);

            simpleLinkList.Count.ShouldEqual(2);
        }
        public void VerifyContainsItemLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);

            simpleLinkList.Contains(2).ShouldBeTrue();
        }
        public void VerifyCopyToInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);

            var array = new[] {1, 2, 3, 0, 0, 0};
            var expectedResult = new[] {1, 2, 3, 4, 3, 2};

            simpleLinkList.CopyTo(array, 3);
            CollectionAssert.AreEqual(expectedResult,array);
        }