/* RoundBufferSampleSourceTest.java created 2010-09-07
*
*/
package org.signalml.domain.signal.samplesource;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.signalml.domain.signal.samplesource.RoundBufferSampleSource;
/**
* This class performs unit tests on {@link RoundBufferSampleSource} class.
*
* @author Piotr Szachewicz
*/
public class RoundBufferSampleSourceTest {
/**
* number of samples used for the tests.
*/
public static final int TEST_SAMPLE_COUNT = 4;
/**
* the sample source used for the test
*/
private RoundBufferSampleSource source;
/**
* sets everything up for the test
*/
@Before
public void setUp() {
source = new RoundBufferSampleSource(TEST_SAMPLE_COUNT);
}
/**
* cleans everything after the test
*/
@After
public void tearDown() {
source = null;
}
/**
* Test method for {@link RoundBufferSampleSource#addSamples(double[])}.
*/
@Test
public void testAddSamples() {
source.addSamples(new double[] {1.0});
source.addSamples(new double[] {1.1});
source.addSamples(new double[] {1.2});
source.addSamples(new double[] {1.3});
source.addSamples(new double[] {1.4});
source.addSamples(new double[] {1.5});
double[] theSamples=source.getSamples();
assertEquals(theSamples[0],1.4, 0.00001);
assertEquals(theSamples[1],1.5, 0.00001);
assertEquals(theSamples[2],1.2, 0.00001);
assertEquals(theSamples[3],1.3, 0.00001);
}
/**
* Test method for {@link RoundBufferSampleSource#getSamples(double[], int, int, int) }.
*/
@Test
public void testGetSamples() {
double target[];
//what happens when getting samples from an empty buffer?
target = new double[4];
source.getSamples(target, 0, 4, 0);
for (int i = 0; i < 4; i++)
assertEquals(target[i], 0.0, 0.0000001);
source.addSamples(new double[] {1.0});
source.addSamples(new double[] {1.1});
source.addSamples(new double[] {1.2});
source.addSamples(new double[] {1.3});
target = new double[3];
source.getSamples(target, 1, 3, 0);
assertEquals(target[0],1.1,0.0001);
assertEquals(target[1],1.2,0.0001);
assertEquals(target[2],1.3,0.0001);
target = new double[5];
source.getSamples(target, 0, 4, 1);
assertEquals(target[1], 1.0, 0.0001);
assertEquals(target[2], 1.1, 0.0001);
assertEquals(target[3], 1.2, 0.0001);
assertEquals(target[4], 1.3, 0.0001);
}
/**
* Test method for {@link RoundBufferSampleSource#getSamples(double[], int, int, int) }.
*/
@Test
public void testGetSamplesGettingTheLastAddedSample() {
double target[] = new double[1];
double sample;
for (int i = 0; i < 10; i++) {
sample = Math.random();
source.addSamples(new double[] {sample});
source.getSamples(target, source.getSampleCount() - 1, 1, 0);
assertEquals(sample, target[0], 0.000001);
}
sample = Math.random();
source.addSamples(new double[] {sample});
source.addSamples(new double[] {sample + 1});
target = new double[2];
source.getSamples(target, source.getSampleCount() - 2, 2, 0);
assertEquals(target[0], sample, 0.000001);
assertEquals(target[1], sample + 1, 0.00001);
}
}