From 84fcc7838caa022f92347a31215a0bb575cd5c6e Mon Sep 17 00:00:00 2001 From: psawale Date: Wed, 3 Jun 2026 22:05:29 +0530 Subject: [PATCH 1/5] test: upgrade MergeSortedArrayListTest to use JUnit 5 parameterized tests --- .../lists/MergeSortedArrayListTest.java | 129 ++++++++---------- 1 file changed, 58 insertions(+), 71 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java index 5483bbcd0394..dc94d05c28ef 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java @@ -2,98 +2,85 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Stream; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; class MergeSortedArrayListTest { - @Test - void testMergeTwoSortedLists() { - List listA = Arrays.asList(1, 3, 5, 7, 9); - List listB = Arrays.asList(2, 4, 6, 8, 10); + @ParameterizedTest(name = "{3}") + @MethodSource("provideMergeTestData") + void testMergeParameterizedScenarios(List listA, List listB, List expected, String scenarioName) { List result = new ArrayList<>(); - MergeSortedArrayList.merge(listA, listB, result); - - List expected = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); - assertEquals(expected, result, "Merged list should be sorted and contain all elements from both input lists."); + assertEquals(expected, result, () -> "Failed scenario: " + scenarioName); } - @Test - void testMergeWithEmptyList() { - List listA = Arrays.asList(1, 2, 3); - List listB = new ArrayList<>(); // Empty list - List result = new ArrayList<>(); - - MergeSortedArrayList.merge(listA, listB, result); - - List expected = Arrays.asList(1, 2, 3); - assertEquals(expected, result, "Merged list should match listA when listB is empty."); - } - - @Test - void testMergeWithBothEmptyLists() { - List listA = new ArrayList<>(); // Empty list - List listB = new ArrayList<>(); // Empty list - List result = new ArrayList<>(); - - MergeSortedArrayList.merge(listA, listB, result); - - assertTrue(result.isEmpty(), "Merged list should be empty when both input lists are empty."); + private static Stream provideMergeTestData() { + return Stream.of( + Arguments.of( + Arrays.asList(1, 3, 5, 7, 9), + Arrays.asList(2, 4, 6, 8, 10), + Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), + "Standard alternating sorted lists" + ), + Arguments.of( + Arrays.asList(1, 2, 3), + new ArrayList<>(), + Arrays.asList(1, 2, 3), + "Merge with empty second list" + ), + Arguments.of( + new ArrayList<>(), + Arrays.asList(4, 5, 6), + Arrays.asList(4, 5, 6), + "Merge with empty first list" + ), + Arguments.of( + new ArrayList<>(), + new ArrayList<>(), + new ArrayList<>(), + "Merge with both lists empty" + ), + Arguments.of( + Arrays.asList(1, 2, 2, 3), + Arrays.asList(2, 3, 4), + Arrays.asList(1, 2, 2, 2, 3, 3, 4), + "Handling duplicate elements gracefully" + ), + Arguments.of( + Arrays.asList(-3, -1, 2), + Arrays.asList(-2, 0, 3), + Arrays.asList(-3, -2, -1, 0, 2, 3), + "Handling negative numbers mixed with positive numbers" + ) + ); } @Test - void testMergeWithDuplicateElements() { - List listA = Arrays.asList(1, 2, 2, 3); - List listB = Arrays.asList(2, 3, 4); + void testMergeThrowsExceptionWhenListAIsNull() { + List listB = Arrays.asList(1, 2, 3); List result = new ArrayList<>(); - - MergeSortedArrayList.merge(listA, listB, result); - - List expected = Arrays.asList(1, 2, 2, 2, 3, 3, 4); - assertEquals(expected, result, "Merged list should correctly handle and include duplicate elements."); + assertThrows(NullPointerException.class, () -> MergeSortedArrayList.merge(null, listB, result)); } @Test - void testMergeWithNegativeAndPositiveNumbers() { - List listA = Arrays.asList(-3, -1, 2); - List listB = Arrays.asList(-2, 0, 3); + void testMergeThrowsExceptionWhenListBIsNull() { + List listA = Arrays.asList(1, 2, 3); List result = new ArrayList<>(); - - MergeSortedArrayList.merge(listA, listB, result); - - List expected = Arrays.asList(-3, -2, -1, 0, 2, 3); - assertEquals(expected, result, "Merged list should correctly handle negative and positive numbers."); + assertThrows(NullPointerException.class, () -> MergeSortedArrayList.merge(listA, null, result)); } @Test - void testMergeThrowsExceptionOnNullInput() { - List listA = null; - List listB = Arrays.asList(1, 2, 3); - List result = new ArrayList<>(); - - List finalListB = listB; - List finalListA = listA; - List finalResult = result; - assertThrows(NullPointerException.class, () -> MergeSortedArrayList.merge(finalListA, finalListB, finalResult), "Should throw NullPointerException if any input list is null."); - - listA = Arrays.asList(1, 2, 3); - listB = null; - List finalListA1 = listA; - List finalListB1 = listB; - List finalResult1 = result; - assertThrows(NullPointerException.class, () -> MergeSortedArrayList.merge(finalListA1, finalListB1, finalResult1), "Should throw NullPointerException if any input list is null."); - - listA = Arrays.asList(1, 2, 3); - listB = Arrays.asList(4, 5, 6); - result = null; - List finalListA2 = listA; - List finalListB2 = listB; - List finalResult2 = result; - assertThrows(NullPointerException.class, () -> MergeSortedArrayList.merge(finalListA2, finalListB2, finalResult2), "Should throw NullPointerException if the result collection is null."); + void testMergeThrowsExceptionWhenResultCollectionIsNull() { + List listA = Arrays.asList(1, 2, 3); + List listB = Arrays.asList(4, 5, 6); + assertThrows(NullPointerException.class, () -> MergeSortedArrayList.merge(listA, listB, null)); } -} +} \ No newline at end of file From ddf6ae3788d7a599be16f48986e1a188fdb95441 Mon Sep 17 00:00:00 2001 From: psawale Date: Wed, 3 Jun 2026 22:17:35 +0530 Subject: [PATCH 2/5] style: strip trailing whitespace and add trailing newline via IDE --- .../lists/MergeSortedArrayListTest.java | 40 +------------------ 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java index dc94d05c28ef..77cd92b0405f 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java @@ -7,6 +7,7 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Stream; + import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -23,44 +24,7 @@ void testMergeParameterizedScenarios(List listA, List listB, L } private static Stream provideMergeTestData() { - return Stream.of( - Arguments.of( - Arrays.asList(1, 3, 5, 7, 9), - Arrays.asList(2, 4, 6, 8, 10), - Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), - "Standard alternating sorted lists" - ), - Arguments.of( - Arrays.asList(1, 2, 3), - new ArrayList<>(), - Arrays.asList(1, 2, 3), - "Merge with empty second list" - ), - Arguments.of( - new ArrayList<>(), - Arrays.asList(4, 5, 6), - Arrays.asList(4, 5, 6), - "Merge with empty first list" - ), - Arguments.of( - new ArrayList<>(), - new ArrayList<>(), - new ArrayList<>(), - "Merge with both lists empty" - ), - Arguments.of( - Arrays.asList(1, 2, 2, 3), - Arrays.asList(2, 3, 4), - Arrays.asList(1, 2, 2, 2, 3, 3, 4), - "Handling duplicate elements gracefully" - ), - Arguments.of( - Arrays.asList(-3, -1, 2), - Arrays.asList(-2, 0, 3), - Arrays.asList(-3, -2, -1, 0, 2, 3), - "Handling negative numbers mixed with positive numbers" - ) - ); + return Stream.of(Arguments.of(Arrays.asList(1, 3, 5, 7, 9), Arrays.asList(2, 4, 6, 8, 10), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "Standard alternating sorted lists"), Arguments.of(Arrays.asList(1, 2, 3), new ArrayList<>(), Arrays.asList(1, 2, 3), "Merge with empty second list"), Arguments.of(new ArrayList<>(), Arrays.asList(4, 5, 6), Arrays.asList(4, 5, 6), "Merge with empty first list"), Arguments.of(new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), "Merge with both lists empty"), Arguments.of(Arrays.asList(1, 2, 2, 3), Arrays.asList(2, 3, 4), Arrays.asList(1, 2, 2, 2, 3, 3, 4), "Handling duplicate elements gracefully"), Arguments.of(Arrays.asList(-3, -1, 2), Arrays.asList(-2, 0, 3), Arrays.asList(-3, -2, -1, 0, 2, 3), "Handling negative numbers mixed with positive numbers")); } @Test From cd5995c38615d53c34f45569c70a020a174f9c4a Mon Sep 17 00:00:00 2001 From: sawaleparas Date: Wed, 3 Jun 2026 22:27:02 +0530 Subject: [PATCH 3/5] style: align layout with clang-format rules --- .../lists/MergeSortedArrayListTest.java | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java index 77cd92b0405f..5f9cfd48371f 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java @@ -7,7 +7,6 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Stream; - import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -24,7 +23,44 @@ void testMergeParameterizedScenarios(List listA, List listB, L } private static Stream provideMergeTestData() { - return Stream.of(Arguments.of(Arrays.asList(1, 3, 5, 7, 9), Arrays.asList(2, 4, 6, 8, 10), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "Standard alternating sorted lists"), Arguments.of(Arrays.asList(1, 2, 3), new ArrayList<>(), Arrays.asList(1, 2, 3), "Merge with empty second list"), Arguments.of(new ArrayList<>(), Arrays.asList(4, 5, 6), Arrays.asList(4, 5, 6), "Merge with empty first list"), Arguments.of(new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), "Merge with both lists empty"), Arguments.of(Arrays.asList(1, 2, 2, 3), Arrays.asList(2, 3, 4), Arrays.asList(1, 2, 2, 2, 3, 3, 4), "Handling duplicate elements gracefully"), Arguments.of(Arrays.asList(-3, -1, 2), Arrays.asList(-2, 0, 3), Arrays.asList(-3, -2, -1, 0, 2, 3), "Handling negative numbers mixed with positive numbers")); + return Stream.of( + Arguments.of( + Arrays.asList(1, 3, 5, 7, 9), + Arrays.asList(2, 4, 6, 8, 10), + Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), + "Standard alternating sorted lists" + ), + Arguments.of( + Arrays.asList(1, 2, 3), + new ArrayList<>(), + Arrays.asList(1, 2, 3), + "Merge with empty second list" + ), + Arguments.of( + new ArrayList<>(), + Arrays.asList(4, 5, 6), + Arrays.asList(4, 5, 6), + "Merge with empty first list" + ), + Arguments.of( + new ArrayList<>(), + new ArrayList<>(), + new ArrayList<>(), + "Merge with both lists empty" + ), + Arguments.of( + Arrays.asList(1, 2, 2, 3), + Arrays.asList(2, 3, 4), + Arrays.asList(1, 2, 2, 2, 3, 3, 4), + "Handling duplicate elements gracefully" + ), + Arguments.of( + Arrays.asList(-3, -1, 2), + Arrays.asList(-2, 0, 3), + Arrays.asList(-3, -2, -1, 0, 2, 3), + "Handling negative numbers mixed with positive numbers" + ) + ); } @Test @@ -47,4 +83,4 @@ void testMergeThrowsExceptionWhenResultCollectionIsNull() { List listB = Arrays.asList(4, 5, 6); assertThrows(NullPointerException.class, () -> MergeSortedArrayList.merge(listA, listB, null)); } -} \ No newline at end of file +} From c3ebd5b55f372cd2adb6867704052273e6af0dce Mon Sep 17 00:00:00 2001 From: sawaleparas Date: Wed, 3 Jun 2026 22:29:54 +0530 Subject: [PATCH 4/5] style: collapse stream arguments to single lines for clang --- .../lists/MergeSortedArrayListTest.java | 39 +------------------ 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java index 5f9cfd48371f..97c490eebba9 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java @@ -23,44 +23,7 @@ void testMergeParameterizedScenarios(List listA, List listB, L } private static Stream provideMergeTestData() { - return Stream.of( - Arguments.of( - Arrays.asList(1, 3, 5, 7, 9), - Arrays.asList(2, 4, 6, 8, 10), - Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), - "Standard alternating sorted lists" - ), - Arguments.of( - Arrays.asList(1, 2, 3), - new ArrayList<>(), - Arrays.asList(1, 2, 3), - "Merge with empty second list" - ), - Arguments.of( - new ArrayList<>(), - Arrays.asList(4, 5, 6), - Arrays.asList(4, 5, 6), - "Merge with empty first list" - ), - Arguments.of( - new ArrayList<>(), - new ArrayList<>(), - new ArrayList<>(), - "Merge with both lists empty" - ), - Arguments.of( - Arrays.asList(1, 2, 2, 3), - Arrays.asList(2, 3, 4), - Arrays.asList(1, 2, 2, 2, 3, 3, 4), - "Handling duplicate elements gracefully" - ), - Arguments.of( - Arrays.asList(-3, -1, 2), - Arrays.asList(-2, 0, 3), - Arrays.asList(-3, -2, -1, 0, 2, 3), - "Handling negative numbers mixed with positive numbers" - ) - ); + return Stream.of(Arguments.of(Arrays.asList(1, 3, 5, 7, 9), Arrays.asList(2, 4, 6, 8, 10), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "Standard alternating sorted lists"), Arguments.of(Arrays.asList(1, 2, 3), new ArrayList<>(), Arrays.asList(1, 2, 3), "Merge with empty second list"), Arguments.of(new ArrayList<>(), Arrays.asList(4, 5, 6), Arrays.asList(4, 5, 6), "Merge with empty first list"), Arguments.of(new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), "Merge with both lists empty"), Arguments.of(Arrays.asList(1, 2, 2, 3), Arrays.asList(2, 3, 4), Arrays.asList(1, 2, 2, 2, 3, 3, 4), "Handling duplicate elements gracefully"), Arguments.of(Arrays.asList(-3, -1, 2), Arrays.asList(-2, 0, 3), Arrays.asList(-3, -2, -1, 0, 2, 3), "Handling negative numbers mixed with positive numbers")); } @Test From 55b169a7c5397500c794c234f555c47a2d6ba676 Mon Sep 17 00:00:00 2001 From: sawaleparas Date: Wed, 3 Jun 2026 22:32:05 +0530 Subject: [PATCH 5/5] style: fix line wrapping length for clang linter --- .../datastructures/lists/MergeSortedArrayListTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java index 97c490eebba9..4390c0f5f2eb 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/MergeSortedArrayListTest.java @@ -23,7 +23,10 @@ void testMergeParameterizedScenarios(List listA, List listB, L } private static Stream provideMergeTestData() { - return Stream.of(Arguments.of(Arrays.asList(1, 3, 5, 7, 9), Arrays.asList(2, 4, 6, 8, 10), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "Standard alternating sorted lists"), Arguments.of(Arrays.asList(1, 2, 3), new ArrayList<>(), Arrays.asList(1, 2, 3), "Merge with empty second list"), Arguments.of(new ArrayList<>(), Arrays.asList(4, 5, 6), Arrays.asList(4, 5, 6), "Merge with empty first list"), Arguments.of(new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), "Merge with both lists empty"), Arguments.of(Arrays.asList(1, 2, 2, 3), Arrays.asList(2, 3, 4), Arrays.asList(1, 2, 2, 2, 3, 3, 4), "Handling duplicate elements gracefully"), Arguments.of(Arrays.asList(-3, -1, 2), Arrays.asList(-2, 0, 3), Arrays.asList(-3, -2, -1, 0, 2, 3), "Handling negative numbers mixed with positive numbers")); + return Stream.of(Arguments.of(Arrays.asList(1, 3, 5, 7, 9), Arrays.asList(2, 4, 6, 8, 10), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "Standard alternating sorted lists"), Arguments.of(Arrays.asList(1, 2, 3), new ArrayList<>(), Arrays.asList(1, 2, 3), "Merge with empty second list"), + Arguments.of(new ArrayList<>(), Arrays.asList(4, 5, 6), Arrays.asList(4, 5, 6), "Merge with empty first list"), Arguments.of(new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), "Merge with both lists empty"), + Arguments.of(Arrays.asList(1, 2, 2, 3), Arrays.asList(2, 3, 4), Arrays.asList(1, 2, 2, 2, 3, 3, 4), "Handling duplicate elements gracefully"), + Arguments.of(Arrays.asList(-3, -1, 2), Arrays.asList(-2, 0, 3), Arrays.asList(-3, -2, -1, 0, 2, 3), "Handling negative numbers mixed with positive numbers")); } @Test