|
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