public void TestMergeTwoSortedListWithSameNumberOfNode()
        {
            SimpleLinkedListNode listA  = new SimpleLinkedListNode(1);
            SimpleLinkedListNode listA2 = new SimpleLinkedListNode(4);
            SimpleLinkedListNode listA3 = new SimpleLinkedListNode(5);

            listA.SetNext(listA2);
            listA2.SetNext(listA3);

            SimpleLinkedListNode listB  = new SimpleLinkedListNode(2);
            SimpleLinkedListNode listB2 = new SimpleLinkedListNode(3);
            SimpleLinkedListNode listB3 = new SimpleLinkedListNode(6);

            listB.SetNext(listB2);
            listB2.SetNext(listB3);


            MergeSortedList      mergeSortedList = new MergeSortedList();
            SimpleLinkedListNode listC           = mergeSortedList.GetMergeSortedList(listA, listB);

            Assert.AreEqual(1, listC.value);
            listC = listC.Next;
            Assert.AreEqual(2, listC.value);
            listC = listC.Next;
            Assert.AreEqual(3, listC.value);
            listC = listC.Next;
            Assert.AreEqual(4, listC.value);
            listC = listC.Next;
            Assert.AreEqual(5, listC.value);
            listC = listC.Next;
            Assert.AreEqual(6, listC.value);
        }
예제 #2
0
        public void TestFirstSecondBySort()
        {
            ListNode first  = Helper.CreateLinkedList(new int[] { 1, 2, 3 });
            ListNode second = Helper.CreateLinkedList(new int[] { 4, 5, 6 });

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 1, 2, 3, 4, 5, 6 }),
                              MergeSortedList.Process(first, second)));

            first  = Helper.CreateLinkedList(new int[] { 1, 2, 3 });
            second = Helper.CreateLinkedList(new int[] { 4, 5, 6 });

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 1, 2, 3, 4, 5, 6 }),
                              MergeSortedList.Process_Recursively(first, second)));
        }
예제 #3
0
        public void TestFirstIsNull()
        {
            ListNode first  = null;
            ListNode second = Helper.CreateLinkedList(new int[] { 2, 4, 6 });

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 2, 4, 6 }),
                              MergeSortedList.Process(first, second)));

            first  = null;
            second = Helper.CreateLinkedList(new int[] { 2, 4, 6 });

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 2, 4, 6 }),
                              MergeSortedList.Process_Recursively(first, second)));
        }
예제 #4
0
        public void TestOnlyOneNode()
        {
            ListNode first  = new ListNode(2);
            ListNode second = new ListNode(1);

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 1, 2 }),
                              MergeSortedList.Process(first, second)));

            first  = new ListNode(2);
            second = new ListNode(1);

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 1, 2 }),
                              MergeSortedList.Process_Recursively(first, second)));
        }
예제 #5
0
        public void TestHasSameValue()
        {
            ListNode first  = Helper.CreateLinkedList(new int[] { 1, 3, 5 });
            ListNode second = Helper.CreateLinkedList(new int[] { 1, 3, 5 });

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 1, 1, 3, 3, 5, 5 }),
                              MergeSortedList.Process(first, second)));

            first  = Helper.CreateLinkedList(new int[] { 1, 3, 5 });
            second = Helper.CreateLinkedList(new int[] { 1, 3, 5 });

            Assert.IsTrue(Helper.CompareLinkedList(
                              Helper.CreateLinkedList(new int[] { 1, 1, 3, 3, 5, 5 }),
                              MergeSortedList.Process_Recursively(first, second)));
        }
예제 #6
0
 public void TestNull()
 {
     Assert.IsNull(MergeSortedList.Process(null, null));
     Assert.IsNull(MergeSortedList.Process_Recursively(null, null));
 }