Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions DIRECTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,7 @@
* [CeilTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/CeilTest.java)
* [CollatzConjectureTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/CollatzConjectureTest.java)
* [CombinationsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/CombinationsTest.java)
* [ConvolutionTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/ConvolutionTest.java)
* [CrossCorrelationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/CrossCorrelationTest.java)
* [DeterminantOfMatrixTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/DeterminantOfMatrixTest.java)
* [DigitalRootTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/DigitalRootTest.java)
Expand Down
74 changes: 74 additions & 0 deletions src/test/java/com/thealgorithms/maths/ConvolutionTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.thealgorithms.maths;

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

import org.junit.jupiter.api.Test;

public class ConvolutionTest {

@Test
public void testConvolutionBasic() {
double[] signalA = {1, 2, 3};
double[] signalB = {4, 5, 6};
double[] expected = {4, 13, 28, 27, 18}; // Expected output

double[] result = Convolution.convolution(signalA, signalB);

assertArrayEquals(expected, result, 1e-9); // Allowing for floating-point precision
}

@Test
public void testConvolutionWithZeroElements() {
double[] signalA = {0, 0, 0};
double[] signalB = {1, 2, 3};
double[] expected = {0, 0, 0, 0, 0}; // All values should remain zero

double[] result = Convolution.convolution(signalA, signalB);

assertArrayEquals(expected, result, 1e-9);
}

@Test
public void testConvolutionSingleElement() {
double[] signalA = {2};
double[] signalB = {3};
double[] expected = {6}; // 2 * 3 = 6

double[] result = Convolution.convolution(signalA, signalB);

assertArrayEquals(expected, result, 1e-9);
}

@Test
public void testConvolutionWithDifferentSizes() {
double[] signalA = {1, 2};
double[] signalB = {3, 4, 5};
double[] expected = {3, 10, 13, 10}; // Expected output

double[] result = Convolution.convolution(signalA, signalB);

assertArrayEquals(expected, result, 1e-9);
}

@Test
public void testConvolutionWithNegativeValues() {
double[] signalA = {1, -2, 3};
double[] signalB = {-1, 2, -3};
double[] expected = {-1, 4, -10, 12, -9}; // Expected output

double[] result = Convolution.convolution(signalA, signalB);

assertArrayEquals(expected, result, 1e-9);
}

@Test
public void testConvolutionWithLargeNumbers() {
double[] signalA = {1e6, 2e6};
double[] signalB = {3e6, 4e6};
double[] expected = {3e12, 1e13, 8e12}; // Expected output with large numbers

double[] result = Convolution.convolution(signalA, signalB);

assertArrayEquals(expected, result, 1e-9);
}
}