|
3 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; |
4 | 4 |
|
5 | 5 | import java.util.ArrayList; |
6 | | -import org.junit.jupiter.api.Test; |
| 6 | +import java.util.stream.Stream; |
| 7 | +import org.junit.jupiter.params.ParameterizedTest; |
| 8 | +import org.junit.jupiter.params.provider.Arguments; |
| 9 | +import org.junit.jupiter.params.provider.MethodSource; |
7 | 10 |
|
8 | 11 | public class ConvolutionFFTTest { |
9 | 12 |
|
@@ -31,68 +34,21 @@ private void assertComplexArrayEquals(ArrayList<FFT.Complex> expected, ArrayList |
31 | 34 | } |
32 | 35 | } |
33 | 36 |
|
34 | | - @Test |
35 | | - public void testConvolutionFFTBasic() { |
36 | | - double[] a = {1, 2, 3}; |
37 | | - double[] b = {4, 5, 6}; |
| 37 | + @ParameterizedTest(name = "Test case {index}: {3}") |
| 38 | + @MethodSource("provideTestCases") |
| 39 | + public void testConvolutionFFT(double[] a, double[] b, double[] expectedOutput, String testDescription) { |
38 | 40 | ArrayList<FFT.Complex> signalA = createComplexSignal(a); |
39 | 41 | ArrayList<FFT.Complex> signalB = createComplexSignal(b); |
40 | 42 |
|
41 | | - ArrayList<FFT.Complex> expected = createComplexSignal(new double[] {4, 13, 28, 27, 18}); // Expected output |
| 43 | + ArrayList<FFT.Complex> expected = createComplexSignal(expectedOutput); |
42 | 44 | ArrayList<FFT.Complex> result = ConvolutionFFT.convolutionFFT(signalA, signalB); |
43 | 45 |
|
44 | 46 | assertComplexArrayEquals(expected, result, 1e-9); // Allow small margin of error |
45 | 47 | } |
46 | 48 |
|
47 | | - @Test |
48 | | - public void testConvolutionFFTWithZeroElements() { |
49 | | - double[] a = {0, 0, 0}; |
50 | | - double[] b = {1, 2, 3}; |
51 | | - ArrayList<FFT.Complex> signalA = createComplexSignal(a); |
52 | | - ArrayList<FFT.Complex> signalB = createComplexSignal(b); |
53 | | - |
54 | | - ArrayList<FFT.Complex> expected = createComplexSignal(new double[] {0, 0, 0, 0, 0}); // All values should be zero |
55 | | - ArrayList<FFT.Complex> result = ConvolutionFFT.convolutionFFT(signalA, signalB); |
56 | | - |
57 | | - assertComplexArrayEquals(expected, result, 1e-9); |
58 | | - } |
59 | | - |
60 | | - @Test |
61 | | - public void testConvolutionFFTWithDifferentSizes() { |
62 | | - double[] a = {1, 2}; |
63 | | - double[] b = {3, 4, 5}; |
64 | | - ArrayList<FFT.Complex> signalA = createComplexSignal(a); |
65 | | - ArrayList<FFT.Complex> signalB = createComplexSignal(b); |
66 | | - |
67 | | - ArrayList<FFT.Complex> expected = createComplexSignal(new double[] {3, 10, 13, 10}); |
68 | | - ArrayList<FFT.Complex> result = ConvolutionFFT.convolutionFFT(signalA, signalB); |
69 | | - |
70 | | - assertComplexArrayEquals(expected, result, 1e-9); |
71 | | - } |
72 | | - |
73 | | - @Test |
74 | | - public void testConvolutionFFTWithSingleElement() { |
75 | | - double[] a = {5}; |
76 | | - double[] b = {2}; |
77 | | - ArrayList<FFT.Complex> signalA = createComplexSignal(a); |
78 | | - ArrayList<FFT.Complex> signalB = createComplexSignal(b); |
79 | | - |
80 | | - ArrayList<FFT.Complex> expected = createComplexSignal(new double[] {10}); |
81 | | - ArrayList<FFT.Complex> result = ConvolutionFFT.convolutionFFT(signalA, signalB); |
82 | | - |
83 | | - assertComplexArrayEquals(expected, result, 1e-9); |
84 | | - } |
85 | | - |
86 | | - @Test |
87 | | - public void testConvolutionFFTWithNegativeValues() { |
88 | | - double[] a = {1, -2, 3}; |
89 | | - double[] b = {-1, 2, -3}; |
90 | | - ArrayList<FFT.Complex> signalA = createComplexSignal(a); |
91 | | - ArrayList<FFT.Complex> signalB = createComplexSignal(b); |
92 | | - |
93 | | - ArrayList<FFT.Complex> expected = createComplexSignal(new double[] {-1, 4, -10, 12, -9}); |
94 | | - ArrayList<FFT.Complex> result = ConvolutionFFT.convolutionFFT(signalA, signalB); |
95 | | - |
96 | | - assertComplexArrayEquals(expected, result, 1e-9); |
| 49 | + private static Stream<Arguments> provideTestCases() { |
| 50 | + return Stream.of(Arguments.of(new double[] {1, 2, 3}, new double[] {4, 5, 6}, new double[] {4, 13, 28, 27, 18}, "Basic test"), Arguments.of(new double[] {0, 0, 0}, new double[] {1, 2, 3}, new double[] {0, 0, 0, 0, 0}, "Test with zero elements"), |
| 51 | + Arguments.of(new double[] {1, 2}, new double[] {3, 4, 5}, new double[] {3, 10, 13, 10}, "Test with different sizes"), Arguments.of(new double[] {5}, new double[] {2}, new double[] {10}, "Test with single element"), |
| 52 | + Arguments.of(new double[] {1, -2, 3}, new double[] {-1, 2, -3}, new double[] {-1, 4, -10, 12, -9}, "Test with negative values")); |
97 | 53 | } |
98 | 54 | } |
0 commit comments