public void List_CanMoveCyclicNodeFromHeadToSomewhereInTheMiddle()
        {
            var circular = new CircularLinkedList <int>();

            circular.AddLast(30);
            circular.AddLast(40);
            circular.AddLast(50);

            circular.ChangeCyclicNode(1);
            var cyclic = circular.GetNodeWhereCycleBegins();

            Assert.Equal(40, cyclic.Value);
        }
        public void List_CanMoveCyclicNodeFromHeadToTheEnd()
        {
            var circular = new CircularLinkedList <int>();

            circular.AddLast(30);
            circular.AddLast(40);
            circular.AddLast(50);

            circular.ChangeCyclicNode(2);
            var cyclic = circular.GetNodeWhereCycleBegins();

            Assert.Equal(50, cyclic.Value);
            Assert.Equal(circular.TailNode, cyclic);
        }
        public void List_DeletingTheCyclicNodeMovesTheCyclicLinkToNextNode()
        {
            var circular = new CircularLinkedList <int>();

            circular.AddLast(30);
            circular.AddLast(40);
            circular.AddLast(50);

            circular.ChangeCyclicNode(1);
            circular.RemoveAt(1);
            var cyclic = circular.GetNodeWhereCycleBegins();

            Assert.Equal(2, circular.Size);
            Assert.Equal(circular.TailNode, cyclic);
            Assert.Equal(circular.GetAt(1), cyclic);
        }