package org.molgenis.data.support;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.molgenis.data.Entity;
import org.molgenis.data.Query;
import org.molgenis.data.meta.model.EntityType;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.testng.Assert.assertEquals;
public class BatchingQueryResultTest
{
@Test
public void getBatch()
{
final int batchSize = 2;
BatchingQueryResult<Entity> bqr = new DummyBatchingQueryResult(batchSize);
assertEquals(Iterables.size(bqr), 4);
}
private static class DummyBatchingQueryResult extends BatchingQueryResult<Entity>
{
private final int batchSize;
int batchCount;
private DummyBatchingQueryResult(int batchSize)
{
super(batchSize, new QueryImpl<>());
this.batchSize = batchSize;
batchCount = 0;
}
@Override
protected List<Entity> getBatch(Query<Entity> q)
{
assertEquals(q.getOffset(), batchCount * batchSize);
assertEquals(q.getPageSize(), batchSize);
if (++batchCount == 3) return Lists.newArrayList();
return Arrays.asList(new DynamicEntity(mock(EntityType.class)),
new DynamicEntity(mock(EntityType.class)));
}
}
}