package org.signalml.domain.signal.samplesource;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.signalml.domain.signal.samplesource.RoundBufferMultichannelSampleSource;
/**
* @author Mariusz Podsiadło
*
*/
public class RoundBufferMultichannelSampleSourceTest {
public static final int TEST_CHANNEL_COUNT = 4;
public static final int TEST_SAMPLE_COUNT = 10;
protected RoundBufferMultichannelSampleSource theSource;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
theSource = new RoundBufferMultichannelSampleSource(TEST_CHANNEL_COUNT, TEST_SAMPLE_COUNT);
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
theSource = null;
}
/**
* Test method for {@link org.signalml.domain.signal.samplesource.RoundBufferMultichannelSampleSource#incrNextInsertPos()}.
*/
@Test
public void testIncrNextInsertPos() {
assertEquals(0, theSource.getNextInsertPos());
theSource.incrNextInsertPos();
assertEquals(1, theSource.getNextInsertPos());
theSource.setNextInsertPos(TEST_SAMPLE_COUNT - 2);
theSource.incrNextInsertPos();
assertEquals(TEST_SAMPLE_COUNT - 1, theSource.getNextInsertPos());
theSource.incrNextInsertPos();
assertEquals(0, theSource.getNextInsertPos());
}
/**
* Test method for {@link org.signalml.domain.signal.samplesource.RoundBufferMultichannelSampleSource#addSamples(double[])}.
*/
@Test
public void testAddSamples() {
assertEquals(0, theSource.getNextInsertPos());
float[] samples = null;
samples = new float[] {1.0F, 2.0F, 3.0F, 4.0F};
theSource.addSamples(samples);
assertEquals(1, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {11.0F, 12.0F, 13.0F, 14.0F};
theSource.addSamples(samples);
assertEquals(2, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {21.0F, 22.0F, 23.0F, 24.0F};
theSource.addSamples(samples);
assertEquals(3, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {31.0F, 32.0F, 33.0F, 34.0F};
theSource.addSamples(samples);
assertEquals(4, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {41.0F, 42.0F, 43.0F, 44.0F};
theSource.addSamples(samples);
assertEquals(5, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {51.0F, 52.0F, 53.0F, 54.0F};
theSource.addSamples(samples);
assertEquals(6, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {61.0F, 62.0F, 63.0F, 64.0F};
theSource.addSamples(samples);
assertEquals(7, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {71.0F, 72.0F, 73.0F, 74.0F};
theSource.addSamples(samples);
assertEquals(8, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {81.0F, 82.0F, 83.0F, 84.0F};
theSource.addSamples(samples);
assertEquals(9, theSource.getNextInsertPos());
assertFalse(theSource.isFull());
samples = new float[] {91.0F, 92.0F, 93.0F, 94.0F};
theSource.addSamples(samples);
assertEquals(0, theSource.getNextInsertPos());
assertTrue(theSource.isFull());
samples = new float[] {101.0F, 102.0F, 103.0F, 104.0F};
theSource.addSamples(samples);
assertEquals(1, theSource.getNextInsertPos());
assertTrue(theSource.isFull());
samples = new float[] {111.0F, 112.0F, 113.0F, 114.0F};
theSource.addSamples(samples);
assertEquals(2, theSource.getNextInsertPos());
assertTrue(theSource.isFull());
double[][] theSamples = theSource.getSamples();
assertEquals(101.0, theSamples[0][0], 0.1);
assertEquals(102.0, theSamples[1][0], 0.1);
assertEquals(103.0, theSamples[2][0], 0.1);
assertEquals(104.0, theSamples[3][0], 0.1);
assertEquals(111.0, theSamples[0][1], 0.1);
assertEquals(112.0, theSamples[1][1], 0.1);
assertEquals(113.0, theSamples[2][1], 0.1);
assertEquals(114.0, theSamples[3][1], 0.1);
assertEquals(21.0, theSamples[0][2], 0.1);
assertEquals(22.0, theSamples[1][2], 0.1);
assertEquals(23.0, theSamples[2][2], 0.1);
assertEquals(24.0, theSamples[3][2], 0.1);
assertEquals(91.0, theSamples[0][9], 0.1);
assertEquals(92.0, theSamples[1][9], 0.1);
assertEquals(93.0, theSamples[2][9], 0.1);
assertEquals(94.0, theSamples[3][9], 0.1);
}
/**
* Test method for {@link org.signalml.domain.signal.samplesource.RoundBufferMultichannelSampleSource#getSamples(int, double[], int, int, int)}.
*/
@Test
public void testGetSamples() {
double[] target = new double[TEST_SAMPLE_COUNT];
theSource.getSamples(0 , target, 0, TEST_SAMPLE_COUNT, 0);
for (int i = 0; i < TEST_SAMPLE_COUNT; i++) {
assertEquals(0.0, target[i], 0.1);
}
theSource.addSamples(new float[] {1.0F, 2.0F, 3.0F, 4.0F});
theSource.addSamples(new float[] {11.0F, 12.0F, 13.0F, 14.0F});
theSource.addSamples(new float[] {21.0F, 22.0F, 23.0F, 24.0F});
theSource.getSamples(0 , target, 0, TEST_SAMPLE_COUNT, 0);
int i = 0;
for (; i < TEST_SAMPLE_COUNT - 3; i++) {
assertEquals(0.0, target[i], 0.1);
}
assertEquals(1.0, target[i++], 0.1);
assertEquals(11.0, target[i++], 0.1);
assertEquals(21.0, target[i++], 0.1);
theSource.addSamples(new float[] {31.0F, 32.0F, 33.0F, 34.0F});
theSource.addSamples(new float[] {41.0F, 42.0F, 43.0F, 44.0F});
theSource.addSamples(new float[] {51.0F, 52.0F, 53.0F, 54.0F});
theSource.addSamples(new float[] {61.0F, 62.0F, 63.0F, 64.0F});
theSource.addSamples(new float[] {71.0F, 72.0F, 73.0F, 74.0F});
theSource.addSamples(new float[] {81.0F, 82.0F, 83.0F, 84.0F});
theSource.addSamples(new float[] {91.0F, 92.0F, 93.0F, 94.0F});
theSource.addSamples(new float[] {101.0F, 102.0F, 103.0F, 104.0F});
theSource.addSamples(new float[] {111.0F, 112.0F, 113.0F, 114.0F});
theSource.addSamples(new float[] {121.0F, 122.0F, 123.0F, 124.0F});
theSource.getSamples(0 , target, 0, TEST_SAMPLE_COUNT, 0);
}
}