Пример #1
0
        public void FindCircularStartNodeInplaceTest_FullCycle()
        {
            var testList = new LinkedList(new LinkedListNode(1)
            {
                Next = new LinkedListNode(2)
                {
                    Next = new LinkedListNode(3)
                    {
                        Next = new LinkedListNode(4)
                        {
                            Next = new LinkedListNode(5)
                            {
                                Next = new LinkedListNode(6)
                            }
                        }
                    }
                }
            });

            testList.Head.Next.Next.Next.Next.Next.Next = testList.Head;
            LinkedListNode resultNode = Question_2_8.FindCircularStartNodeInplace(testList);

            Assert.IsNotNull(resultNode, "List is not circular.");
            Assert.AreEqual(testList.Head, resultNode, $"Incorrect circular start node {testList.Head.Data} (expected) vs {resultNode.Data} (actual).");
        }
Пример #2
0
        public void FindCircularStartNodeTest_NegativeCase()
        {
            var            testList   = new LinkedList(new int[] { 1, 2, 3, 4, 5, 3 });
            LinkedListNode resultNode = Question_2_8.FindCircularStartNode(testList);
            int            resultData = (resultNode != null) ? resultNode.Data : -1;

            Assert.IsNull(resultNode, $"List is circular starting at node {resultData}.");

            testList   = new LinkedList(new int[] { 1, 2, 3, 4, 5, 6, 3 });
            resultNode = Question_2_8.FindCircularStartNode(testList);
            resultData = (resultNode != null) ? resultNode.Data : -1;
            Assert.IsNull(resultNode, $"List is circular starting at node {resultData}.");
        }
Пример #3
0
        public void FindCircularStartNodeTest_PositiveCase()
        {
            var circularStartNode = new LinkedListNode(3)
            {
                Next = new LinkedListNode(4)
                {
                    Next = new LinkedListNode(5)
                }
            };

            circularStartNode.Next.Next.Next = circularStartNode;
            var testList = new LinkedList(new LinkedListNode(1)
            {
                Next = new LinkedListNode(2)
                {
                    Next = circularStartNode
                }
            });
            LinkedListNode resultNode = Question_2_8.FindCircularStartNode(testList);

            Assert.IsNotNull(resultNode, "List is not circular.");
            Assert.AreEqual(circularStartNode, resultNode, $"Incorrect circular start node {circularStartNode.Data} (expected) vs {resultNode.Data} (actual).");
        }
Пример #4
0
 private static void Validate <T>(Node <T> expected, Node <T> list)
     where T : IEquatable <T>
 {
     Assert.AreEqual(expected, Question_2_8.BeginningOfCycle(list));
 }
Пример #5
0
 public void Question_2_8_InvalidCases()
 {
     TestHelpers.AssertExceptionThrown(() => Question_2_8.BeginningOfCycle <int>(null), typeof(ArgumentNullException));
 }