Skip to content

Commit ec894a9

Browse files
author
alxklm
committed
Refactor: Tests to ParameterizedTest
1 parent 6c940a4 commit ec894a9

File tree

2 files changed

+25
-78
lines changed

2 files changed

+25
-78
lines changed

src/main/java/com/thealgorithms/sorts/WaveSort.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* The WaveSort algorithm sorts an array so that every alternate element is greater than its adjacent elements.
55
*/
66
public class WaveSort implements SortAlgorithm {
7-
87
@Override
98
public <T extends Comparable<T>> T[] sort(T[] array) {
109
int n = array.length;
@@ -21,4 +20,16 @@ public <T extends Comparable<T>> T[] sort(T[] array) {
2120

2221
return array;
2322
}
23+
24+
public <T extends Comparable<T>> boolean isWaveSorted(T[] array) {
25+
for (int i = 0; i < array.length; i += 2) {
26+
if (i > 0 && SortUtils.less(array[i], array[i - 1])) {
27+
return false;
28+
}
29+
if (i < array.length - 1 && SortUtils.less(array[i], array[i + 1])) {
30+
return false;
31+
}
32+
}
33+
return true;
34+
}
2435
}

src/test/java/com/thealgorithms/sorts/WaveSortTest.java

+13-77
Original file line numberDiff line numberDiff line change
@@ -2,88 +2,24 @@
22

33
import static org.junit.jupiter.api.Assertions.assertTrue;
44

5-
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.params.ParameterizedTest;
6+
import org.junit.jupiter.params.provider.MethodSource;
67

7-
public class WaveSortTest {
8-
@Test
9-
public void testWaveSortGeneralCase() {
10-
Integer[] array = {7, 7, 11, 3, 4, 5, 15};
11-
WaveSort waveSort = new WaveSort();
12-
assertTrue(isWaveSorted(waveSort.sort(array)));
13-
}
14-
15-
@Test
16-
public void testWaveSortAscendingOrder() {
17-
Integer[] array = {1, 2, 3, 4, 5, 6, 7, 8};
18-
WaveSort waveSort = new WaveSort();
19-
assertTrue(isWaveSorted(waveSort.sort(array)));
20-
}
21-
22-
@Test
23-
public void testWaveSortDescendingOrder() {
24-
Integer[] array = {8, 7, 6, 5, 4, 3, 2, 1};
25-
WaveSort waveSort = new WaveSort();
26-
assertTrue(isWaveSorted(waveSort.sort(array)));
27-
}
8+
import java.util.stream.Stream;
289

29-
@Test
30-
public void testWaveSortSameElements() {
31-
Integer[] array = {3, 3, 3, 3};
32-
WaveSort waveSort = new WaveSort();
33-
assertTrue(isWaveSorted(waveSort.sort(array)));
34-
}
35-
36-
@Test
37-
public void testWaveSortNegativeElements() {
38-
Integer[] array = {-1, -3, -2, -4, -6, -5};
39-
WaveSort waveSort = new WaveSort();
40-
assertTrue(isWaveSorted(waveSort.sort(array)));
41-
}
42-
43-
@Test
44-
public void testWaveSortSingleElement() {
45-
Integer[] array = {1};
46-
WaveSort waveSort = new WaveSort();
47-
assertTrue(isWaveSorted(waveSort.sort(array)));
48-
}
49-
50-
@Test
51-
public void testWaveSortTwoElements() {
52-
Integer[] array = {2, 1};
53-
WaveSort waveSort = new WaveSort();
54-
assertTrue(isWaveSorted(waveSort.sort(array)));
55-
}
56-
57-
@Test
58-
public void testWaveSortLargeMixedElements() {
59-
Integer[] array = {5, 3, 1, 2, 9, 7, 6, 8, 4, 0};
60-
WaveSort waveSort = new WaveSort();
61-
assertTrue(isWaveSorted(waveSort.sort(array)));
62-
}
63-
64-
@Test
65-
public void testWaveSortEmptyArray() {
66-
Integer[] array = {};
67-
WaveSort waveSort = new WaveSort();
68-
assertTrue(isWaveSorted(waveSort.sort(array)));
69-
}
10+
public class WaveSortTest {
11+
record InputData(Integer[] array) {}
7012

71-
@Test
72-
public void testWaveSortMixedPositiveNegativeZero() {
73-
Integer[] array = {0, 5, -3, 2, -1, 4, -2, 1, 3};
13+
@ParameterizedTest
14+
@MethodSource("inputStream")
15+
public void testWaveSortMixedPositiveNegativeZero(InputData inputData) {
7416
WaveSort waveSort = new WaveSort();
75-
assertTrue(isWaveSorted(waveSort.sort(array)));
17+
assertTrue(waveSort.isWaveSorted(waveSort.sort(inputData.array)));
7618
}
7719

78-
private <T extends Comparable<T>> boolean isWaveSorted(T[] array) {
79-
for (int i = 0; i < array.length; i += 2) {
80-
if (i > 0 && SortUtils.less(array[i], array[i - 1])) {
81-
return false;
82-
}
83-
if (i < array.length - 1 && SortUtils.less(array[i], array[i + 1])) {
84-
return false;
85-
}
86-
}
87-
return true;
20+
private static Stream<InputData> inputStream() {
21+
return Stream.of(new InputData(new Integer[]{7, 7, 11, 3, 4, 5, 15}), new InputData(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8}), new InputData(new Integer[]{8, 7, 6, 5, 4, 3, 2, 1}), new InputData(new Integer[]{3, 3, 3, 3}),
22+
new InputData(new Integer[]{-1, -3, -2, -4, -6, -5}), new InputData(new Integer[]{5, 3, 1, 2, 9, 7, 6, 8, 4, 0}), new InputData(new Integer[]{1}), new InputData(new Integer[]{2, 1}), new InputData(new Integer[]{}),
23+
new InputData(new Integer[]{0, 5, -3, 2, -1, 4, -2, 1, 3}));
8824
}
8925
}

0 commit comments

Comments
 (0)