/* ArrayOperationsTest.java created 2010-12-02
*
*/
package org.signalml.math;
import static org.junit.Assert.assertEquals;
import static org.signalml.SignalMLAssert.assertArrayEquals;
import org.junit.Test;
/**
* This method performs unit tests on {@link Convolution}.
*
* @author Piotr Szachewicz
*/
public class ArrayOperationsTest {
/**
* A test method for {@link ArrayOperations#padWithZeros(double[], int) }.
*/
@Test
public void testPadWithZeros() {
double[] array;
double[] paddedArray;
array = new double[] {};
paddedArray = ArrayOperations.padArrayWithZerosToSize(array, 0);
assertEquals(0, paddedArray.length);
paddedArray = ArrayOperations.padArrayWithZerosToSize(array, 2);
assertEquals(2, paddedArray.length);
assertArrayEquals(new double[] {0.0, 0.0}, paddedArray, 1e-10);
array = new double[] {1.0};
paddedArray = ArrayOperations.padArrayWithZerosToSize(array, 1);
assertEquals(1, paddedArray.length);
assertArrayEquals(new double[] {1.0}, paddedArray, 1e-10);
paddedArray = ArrayOperations.padArrayWithZerosToSize(array, 4);
assertEquals(4, paddedArray.length);
assertArrayEquals(new double[] {1.0, 0.0, 0.0, 0.0}, paddedArray, 1e-10);
array = new double[] {1.0, 0.2, 0.3};
paddedArray = ArrayOperations.padArrayWithZerosToSize(array, 5);
assertEquals(5, paddedArray.length);
assertArrayEquals(new double[] {1.0, 0.2, 0.3, 0.0, 0.0}, paddedArray, 1e-10);
array = new double[] {1, 2, 5, 4};
paddedArray = ArrayOperations.padArrayWithZerosToSize(array, 10);
assertEquals(10, paddedArray.length);
assertArrayEquals(paddedArray, new double[] {1, 2, 5, 4, 0, 0, 0, 0, 0, 0}, 0.01);
}
/**
* A test method for {@link ArrayOperations#convolve(double[], double[]) }.
*/
@Test
public void testConvolve() {
double[] array1;
double[] array2;
//test data set 1
array1 = new double[] {1, 1, 1};
array2 = new double[] {1, 2, 3};
assertArrayEquals(ArrayOperations.convolve(array1, array2), new double[] {1, 3, 6, 5, 3}, 0.01);
//test data set 2
array1 = new double[] {0.1, 0.6, -5.432, 0.44};
array2 = new double[] {9, -12, -0.33};
assertArrayEquals(ArrayOperations.convolve(array1, array2), new double[] {0.9000, 4.2000, -56.1210, 68.9460, -3.4874, -0.1452}, 0.0001);
}
/**
* A test method for {@link ArrayOperations#reverse(double[]) }.
*/
@Test
public void testReverse() {
double[] array = new double[] {1, 2, 3, 4, 5};
assertArrayEquals(ArrayOperations.reverse(array), new double[] {5, 4, 3, 2, 1}, 0.001);
}
/**
* A test method for {@link ArrayOperations#trimArrayToSize(double[], int) }.
*/
@Test
public void testTrimArrayToSize() {
double[] array = new double[] {1, 2, 3, 4, 5, 6};
assertArrayEquals(ArrayOperations.trimArrayToSize(array, 4), new double[] {1, 2, 3, 4}, 0.001);
}
/**
* A test method for {@link ArrayOperations#removeFirstElements(double[], int) }.
*/
@Test
public void testRemoveFirstElements() {
double[] array = new double[] {1, 2, 3, 4, 5, 6};
double[] trimmed = ArrayOperations.removeFirstElements(array, 2);
assertEquals(4, trimmed.length);
assertArrayEquals(trimmed, new double[] {3, 4, 5, 6}, 0.001);
}
}