|
2 | 2 |
|
3 | 3 | import static org.junit.jupiter.api.Assertions.assertTrue;
|
4 | 4 |
|
5 |
| -import org.junit.jupiter.api.Test; |
| 5 | +import org.junit.jupiter.params.ParameterizedTest; |
| 6 | +import org.junit.jupiter.params.provider.MethodSource; |
6 | 7 |
|
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; |
28 | 9 |
|
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) {} |
70 | 12 |
|
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) { |
74 | 16 | WaveSort waveSort = new WaveSort();
|
75 |
| - assertTrue(isWaveSorted(waveSort.sort(array))); |
| 17 | + assertTrue(waveSort.isWaveSorted(waveSort.sort(inputData.array))); |
76 | 18 | }
|
77 | 19 |
|
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})); |
88 | 24 | }
|
89 | 25 | }
|
0 commit comments