|
2 | 2 |
|
3 | 3 | import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
4 | 4 |
|
5 |
| -import org.junit.jupiter.api.Test; |
| 5 | +import java.util.stream.Stream; |
| 6 | +import org.junit.jupiter.params.ParameterizedTest; |
| 7 | +import org.junit.jupiter.params.provider.MethodSource; |
6 | 8 |
|
7 | 9 | public class ConvolutionTest {
|
8 | 10 |
|
9 |
| - @Test |
10 |
| - public void testConvolutionBasic() { |
11 |
| - double[] signalA = {1, 2, 3}; |
12 |
| - double[] signalB = {4, 5, 6}; |
13 |
| - double[] expected = {4, 13, 28, 27, 18}; // Expected output |
14 |
| - |
15 |
| - double[] result = Convolution.convolution(signalA, signalB); |
16 |
| - |
17 |
| - assertArrayEquals(expected, result, 1e-9); // Allowing for floating-point precision |
18 |
| - } |
19 |
| - |
20 |
| - @Test |
21 |
| - public void testConvolutionWithZeroElements() { |
22 |
| - double[] signalA = {0, 0, 0}; |
23 |
| - double[] signalB = {1, 2, 3}; |
24 |
| - double[] expected = {0, 0, 0, 0, 0}; // All values should remain zero |
25 |
| - |
26 |
| - double[] result = Convolution.convolution(signalA, signalB); |
27 |
| - |
28 |
| - assertArrayEquals(expected, result, 1e-9); |
29 |
| - } |
30 |
| - |
31 |
| - @Test |
32 |
| - public void testConvolutionSingleElement() { |
33 |
| - double[] signalA = {2}; |
34 |
| - double[] signalB = {3}; |
35 |
| - double[] expected = {6}; // 2 * 3 = 6 |
36 |
| - |
37 |
| - double[] result = Convolution.convolution(signalA, signalB); |
38 |
| - |
39 |
| - assertArrayEquals(expected, result, 1e-9); |
| 11 | + record ConvolutionTestCase(String description, double[] signalA, double[] signalB, double[] expected) { |
40 | 12 | }
|
41 | 13 |
|
42 |
| - @Test |
43 |
| - public void testConvolutionWithDifferentSizes() { |
44 |
| - double[] signalA = {1, 2}; |
45 |
| - double[] signalB = {3, 4, 5}; |
46 |
| - double[] expected = {3, 10, 13, 10}; // Expected output |
47 |
| - |
48 |
| - double[] result = Convolution.convolution(signalA, signalB); |
49 |
| - |
50 |
| - assertArrayEquals(expected, result, 1e-9); |
| 14 | + @ParameterizedTest(name = "{0}") |
| 15 | + @MethodSource("provideTestCases") |
| 16 | + void testConvolution(ConvolutionTestCase testCase) { |
| 17 | + double[] result = Convolution.convolution(testCase.signalA, testCase.signalB); |
| 18 | + assertArrayEquals(testCase.expected, result, 1e-9, testCase.description); |
51 | 19 | }
|
52 | 20 |
|
53 |
| - @Test |
54 |
| - public void testConvolutionWithNegativeValues() { |
55 |
| - double[] signalA = {1, -2, 3}; |
56 |
| - double[] signalB = {-1, 2, -3}; |
57 |
| - double[] expected = {-1, 4, -10, 12, -9}; // Expected output |
58 |
| - |
59 |
| - double[] result = Convolution.convolution(signalA, signalB); |
60 |
| - |
61 |
| - assertArrayEquals(expected, result, 1e-9); |
62 |
| - } |
63 |
| - |
64 |
| - @Test |
65 |
| - public void testConvolutionWithLargeNumbers() { |
66 |
| - double[] signalA = {1e6, 2e6}; |
67 |
| - double[] signalB = {3e6, 4e6}; |
68 |
| - double[] expected = {3e12, 1e13, 8e12}; // Expected output with large numbers |
69 |
| - |
70 |
| - double[] result = Convolution.convolution(signalA, signalB); |
71 |
| - |
72 |
| - assertArrayEquals(expected, result, 1e-9); |
| 21 | + private static Stream<ConvolutionTestCase> provideTestCases() { |
| 22 | + return Stream.of(new ConvolutionTestCase("Basic convolution", new double[] {1, 2, 3}, new double[] {4, 5, 6}, new double[] {4, 13, 28, 27, 18}), new ConvolutionTestCase("Convolution with zero elements", new double[] {0, 0, 0}, new double[] {1, 2, 3}, new double[] {0, 0, 0, 0, 0}), |
| 23 | + new ConvolutionTestCase("Convolution with single element", new double[] {2}, new double[] {3}, new double[] {6}), new ConvolutionTestCase("Convolution with different sizes", new double[] {1, 2}, new double[] {3, 4, 5}, new double[] {3, 10, 13, 10}), |
| 24 | + new ConvolutionTestCase("Convolution with negative values", new double[] {1, -2, 3}, new double[] {-1, 2, -3}, new double[] {-1, 4, -10, 12, -9}), |
| 25 | + new ConvolutionTestCase("Convolution with large numbers", new double[] {1e6, 2e6}, new double[] {3e6, 4e6}, new double[] {3e12, 1e13, 8e12})); |
73 | 26 | }
|
74 | 27 | }
|
0 commit comments