Skip to content

Commit 24f4090

Browse files
testing: improve MergeKSortedLinkedListTes (#6445)
testing: improve MergeKSortedLinkedListTest Co-authored-by: Deniz Altunkapan <93663085+DenizAltunkapan@users.noreply.github.com>
1 parent 0081d5c commit 24f4090

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy