package org.openstack.atlas;
import org.junit.Test;
import org.openstack.atlas.usage.BatchAction;
import org.openstack.atlas.usage.ExecutionUtilities;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class ExecutionUtilitiesTest {
@Test
public void testExecuteInBatchesWithNoRemainder() throws Exception {
final List<Object> objects = createDummyArrayList(26);
final int batchSize = 2;
final List batchCountList = runExecuteInBatches(objects, batchSize);
assertEquals(13, batchCountList.size());
}
@Test
public void testExecuteInBatchesWithRemainder() throws Exception {
final List<Object> objects = createDummyArrayList(251);
final int batchSize = 20;
List batchCountList = runExecuteInBatches(objects, batchSize);
assertEquals(13, batchCountList.size());
}
@Test
public void testExecuteInBatchesWhereListSizeIsSmallerThanBatchSize() throws Exception {
final List<Object> objects = createDummyArrayList(1);
final int batchSize = 2;
List batchCountList = runExecuteInBatches(objects, batchSize);
assertEquals(1, batchCountList.size());
}
@Test
public void testExecuteInBatchesWithNoEntriesInBatch() throws Exception {
final List<Object> objects = new ArrayList<Object>();
final int batchSize = 2;
List batchCountList = runExecuteInBatches(objects, batchSize);
assertEquals(0, batchCountList.size());
}
private <T> List<String> runExecuteInBatches(final List<T> objects, final int batchSize) throws Exception {
final List<String> batchCountList = new ArrayList<String>();
BatchAction<T> batchAction = new BatchAction<T>() {
public void execute(Collection<T> objects) throws Exception {
batchCountList.add("");
}
};
ExecutionUtilities.executeInBatches(objects, batchSize, batchAction);
return batchCountList;
}
private List<Object> createDummyArrayList(int listCount) {
ArrayList<Object> list = new ArrayList<Object>();
for (int i = 0; i < listCount; i++) {
list.add(new Object());
}
return list;
}
}