package org.kairosdb.core.aggregator;
import org.junit.Test;
import org.junit.Before;
import org.kairosdb.core.DataPoint;
import org.kairosdb.core.datapoints.DoubleDataPointFactoryImpl;
import org.kairosdb.core.datapoints.LongDataPoint;
import org.kairosdb.core.datastore.DataPointGroup;
import org.kairosdb.core.datastore.Sampling;
import org.kairosdb.core.datastore.TimeUnit;
import org.kairosdb.testing.ListDataPointGroup;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsEqual.equalTo;
/**
Created with IntelliJ IDEA.
User: bhawkins
Date: 6/18/13
Time: 11:34 AM
To change this template use File | Settings | File Templates.
*/
public class LeastSquaresAggregatorTest
{
LeastSquaresAggregator m_aggregator;
@Before
public void setup()
{
m_aggregator = new LeastSquaresAggregator(new DoubleDataPointFactoryImpl());
m_aggregator.setStartTime(0);
m_aggregator.setSampling(new Sampling(1, TimeUnit.HOURS));
}
@Test
public void test_noDataPoint()
{
ListDataPointGroup group = new ListDataPointGroup("group");
DataPointGroup result = m_aggregator.aggregate(group);
assertThat(result.hasNext(), equalTo(false));
}
@Test
public void test_singleDataPoint()
{
ListDataPointGroup group = new ListDataPointGroup("group");
group.addDataPoint(new LongDataPoint(1, 10));
DataPointGroup result = m_aggregator.aggregate(group);
DataPoint dp = result.next();
assertThat(dp.getTimestamp(), equalTo(1L));
assertThat(dp.getDoubleValue(), equalTo(10.0));
assertThat(result.hasNext(), equalTo(false));
}
@Test
public void test_twoDataPoints()
{
ListDataPointGroup group = new ListDataPointGroup("group");
group.addDataPoint(new LongDataPoint(1, 10));
group.addDataPoint(new LongDataPoint(2, 20));
DataPointGroup result = m_aggregator.aggregate(group);
DataPoint dp = result.next();
assertThat(dp.getTimestamp(), equalTo(1L));
assertThat(dp.getDoubleValue(), equalTo(10.0));
dp = result.next();
assertThat(dp.getTimestamp(), equalTo(2L));
assertThat(dp.getDoubleValue(), equalTo(20.0));
assertThat(result.hasNext(), equalTo(false));
}
}