Skip to content

Commit 18ad375

Browse files
committed
Add tests for Convolution
1 parent 596c614 commit 18ad375

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.thealgorithms.maths;
2+
3+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
public class ConvolutionTest {
8+
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);
40+
}
41+
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);
51+
}
52+
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);
73+
}
74+
}

0 commit comments

Comments
 (0)