Skip to content

Commit c958783

Browse files
committed
testing: improve MergeKSortedLinkedListTest
1 parent 032f75c commit c958783

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

src/test/java/com/thealgorithms/datastructures/lists/MergeKSortedLinkedListTest.java

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,88 @@ private int[] getListValues(Node head) {
9090
}
9191
return Arrays.copyOf(values, i); // return only filled part
9292
}
93+
94+
@Test
95+
void testMergeWithNullListsInArray() {
96+
Node list1 = new Node(1, new Node(3));
97+
Node list2 = null;
98+
Node list3 = new Node(2, new Node(4));
99+
Node[] lists = {list1, list2, list3};
100+
101+
MergeKSortedLinkedList merger = new MergeKSortedLinkedList();
102+
Node mergedHead = merger.mergeKList(lists, lists.length);
103+
104+
int[] expectedValues = {1, 2, 3, 4};
105+
int[] actualValues = getListValues(mergedHead);
106+
assertArrayEquals(expectedValues, actualValues, "Should handle null lists mixed with valid lists");
107+
}
108+
109+
@Test
110+
void testMergeWithDuplicateValues() {
111+
Node list1 = new Node(1, new Node(1, new Node(3)));
112+
Node list2 = new Node(1, new Node(2, new Node(3)));
113+
Node list3 = new Node(3, new Node(3));
114+
Node[] lists = {list1, list2, list3};
115+
116+
MergeKSortedLinkedList merger = new MergeKSortedLinkedList();
117+
Node mergedHead = merger.mergeKList(lists, lists.length);
118+
119+
int[] expectedValues = {1, 1, 1, 2, 3, 3, 3, 3};
120+
int[] actualValues = getListValues(mergedHead);
121+
assertArrayEquals(expectedValues, actualValues, "Should handle duplicate values correctly");
122+
}
123+
124+
@Test
125+
void testMergeWithZeroLength() {
126+
Node[] lists = {};
127+
128+
MergeKSortedLinkedList merger = new MergeKSortedLinkedList();
129+
Node mergedHead = merger.mergeKList(lists, 0);
130+
131+
assertNull(mergedHead, "Should return null for zero-length array");
132+
}
133+
134+
@Test
135+
void testMergeWithNegativeNumbers() {
136+
Node list1 = new Node(-5, new Node(-1, new Node(3)));
137+
Node list2 = new Node(-3, new Node(0, new Node(2)));
138+
Node[] lists = {list1, list2};
139+
140+
MergeKSortedLinkedList merger = new MergeKSortedLinkedList();
141+
Node mergedHead = merger.mergeKList(lists, lists.length);
142+
143+
int[] expectedValues = {-5, -3, -1, 0, 2, 3};
144+
int[] actualValues = getListValues(mergedHead);
145+
assertArrayEquals(expectedValues, actualValues, "Should handle negative numbers correctly");
146+
}
147+
148+
@Test
149+
void testMergeIdenticalLists() {
150+
Node list1 = new Node(1, new Node(2, new Node(3)));
151+
Node list2 = new Node(1, new Node(2, new Node(3)));
152+
Node list3 = new Node(1, new Node(2, new Node(3)));
153+
Node[] lists = {list1, list2, list3};
154+
155+
MergeKSortedLinkedList merger = new MergeKSortedLinkedList();
156+
Node mergedHead = merger.mergeKList(lists, lists.length);
157+
158+
int[] expectedValues = {1, 1, 1, 2, 2, 2, 3, 3, 3};
159+
int[] actualValues = getListValues(mergedHead);
160+
assertArrayEquals(expectedValues, actualValues, "Should merge identical lists correctly");
161+
}
162+
163+
@Test
164+
void testMergeAlreadySortedSequence() {
165+
Node list1 = new Node(1, new Node(2));
166+
Node list2 = new Node(3, new Node(4));
167+
Node list3 = new Node(5, new Node(6));
168+
Node[] lists = {list1, list2, list3};
169+
170+
MergeKSortedLinkedList merger = new MergeKSortedLinkedList();
171+
Node mergedHead = merger.mergeKList(lists, lists.length);
172+
173+
int[] expectedValues = {1, 2, 3, 4, 5, 6};
174+
int[] actualValues = getListValues(mergedHead);
175+
assertArrayEquals(expectedValues, actualValues, "Should handle already sorted sequence");
176+
}
93177
}

0 commit comments

Comments
 (0)