package se.l4.vibe.probes;
import java.util.LinkedList;
import se.l4.vibe.probes.Sampler.Entry;
/**
* Utility class to help with testing of {@link SampleOperation}s.
*
* @author Andreas Holstenson
*
* @param <Input>
* @param <Output>
*/
public class TimeSeriesOperationHelper<Input, Output>
{
private LinkedList<Sampler.Entry<Input>> list;
private final SampleOperation<Input, Output> op;
public TimeSeriesOperationHelper(SampleOperation<Input, Output> op)
{
this.op = op;
list = new LinkedList<Sampler.Entry<Input>>();
}
public static <Input, Output> TimeSeriesOperationHelper<Input, Output>
create(SampleOperation<Input, Output> op)
{
return new TimeSeriesOperationHelper<Input, Output>(op);
}
public void add(final Input value)
{
list.add(new Entry<Input>()
{
@Override
public long getTime()
{
return 0;
}
@Override
public Input getValue()
{
return value;
}
@Override
public String toString()
{
return "Entry{time=0, value=" + value + "}";
}
});
op.add(value, list);
}
public void removeFirst()
{
Entry<Input> entry = list.removeFirst();
op.remove(entry.getValue(), list);
}
public Output get()
{
return op.get();
}
}