|
1 | 1 | package com.thealgorithms.sorts;
|
2 | 2 |
|
| 3 | +import static org.junit.jupiter.api.Assertions.assertArrayEquals; |
3 | 4 | import static org.junit.jupiter.api.Assertions.assertFalse;
|
| 5 | +import static org.junit.jupiter.api.Assertions.assertThrows; |
4 | 6 | import static org.junit.jupiter.api.Assertions.assertTrue;
|
5 | 7 |
|
6 | 8 | import java.util.List;
|
| 9 | +import java.util.stream.Stream; |
| 10 | + |
7 | 11 | import org.junit.jupiter.api.Test;
|
| 12 | +import org.junit.jupiter.params.ParameterizedTest; |
| 13 | +import org.junit.jupiter.params.provider.Arguments; |
| 14 | +import org.junit.jupiter.params.provider.MethodSource; |
8 | 15 |
|
9 | 16 | class SortUtilsTest {
|
10 | 17 |
|
@@ -67,4 +74,24 @@ void isSortedListFalse() {
|
67 | 74 | List<Integer> array3 = List.of(5, 4, 3, 2, 1);
|
68 | 75 | assertFalse(SortUtils.isSorted(array3));
|
69 | 76 | }
|
| 77 | + |
| 78 | + @ParameterizedTest |
| 79 | + @MethodSource("provideArraysForSwap") |
| 80 | + public <T> void testSwap(T[] array, int i, int j, T[] expected, String message) { |
| 81 | + SortUtils.swap(array, i, j); |
| 82 | + assertArrayEquals(expected, array, message); |
| 83 | + } |
| 84 | + |
| 85 | + private static Stream<Arguments> provideArraysForSwap() { |
| 86 | + return Stream.of(Arguments.of(new Integer[]{1, 2, 3, 4}, 1, 2, new Integer[]{1, 3, 2, 4}, "Swapping adjacent elements should work correctly."), Arguments.of(new Integer[]{1, 2, 3, 4}, 0, 3, new Integer[]{4, 2, 3, 1}, "Swapping non-adjacent elements should work correctly."), Arguments.of(new Integer[]{1, 2, 3, 4}, 2, 2, new Integer[]{1, 2, 3, 4}, "Swapping the same index should not change the array."), |
| 87 | + Arguments.of(new String[]{"a", "b", "c", "d"}, 0, 3, new String[]{"d", "b", "c", "a"}, "Swapping first and last elements should work correctly."), Arguments.of(new String[]{null, "b", "c", null}, 0, 3, new String[]{null, "b", "c", null}, "Swapping null elements should work correctly."), Arguments.of(new Integer[]{}, 0, 0, new Integer[]{}, "Swapping in an empty array should not throw an error.")); |
| 88 | + } |
| 89 | + |
| 90 | + @Test |
| 91 | + public void testSwapOutOfBounds() { |
| 92 | + Integer[] array = {1, 2, 3, 4}; |
| 93 | + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { |
| 94 | + SortUtils.swap(array, -1, 4); |
| 95 | + }, "Swapping out of bounds should throw an ArrayIndexOutOfBoundsException."); |
| 96 | + } |
70 | 97 | }
|
0 commit comments