Skip to content

Commit 3b55afb

Browse files
committed
Fix
1 parent 18ad375 commit 3b55afb

File tree

1 file changed

+14
-61
lines changed

1 file changed

+14
-61
lines changed

src/test/java/com/thealgorithms/maths/ConvolutionTest.java

Lines changed: 14 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,73 +2,26 @@
22

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

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;
68

79
public class ConvolutionTest {
810

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) {
4012
}
4113

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);
5119
}
5220

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}));
7326
}
7427
}

0 commit comments

Comments
 (0)