/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.framework.util;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Apr 16, 2009
*/
public class BatchedListTest
{
@Test
public void testGetNextBatch()
{
List<Integer> sourceList = new ArrayList<Integer>();
sourceList.add( 1 );
sourceList.add( 2 );
sourceList.add( 3 );
sourceList.add( 4 );
sourceList.add( 5 );
BatchedList list = new BatchedList<Integer>( sourceList, 3 );
assertArrayEquals( new Integer[]{1, 2, 3}, list.getNextBatch().toArray() );
assertArrayEquals( new Integer[]{4, 5}, list.getNextBatch().toArray() );
assertNull( list.getNextBatch() );
}
@Test
public void testGetNextBatchWithEmptySourceList()
{
List<Integer> sourceList = new ArrayList<Integer>();
BatchedList list = new BatchedList<Integer>( sourceList, 3 );
assertNull( list.getNextBatch() );
}
@Test
public void testGetNextBatchWithSizeLessThanBatchSize()
{
List<Integer> sourceList = new ArrayList<Integer>();
sourceList.add( 1 );
sourceList.add( 2 );
sourceList.add( 3 );
sourceList.add( 4 );
sourceList.add( 5 );
BatchedList list = new BatchedList<Integer>( sourceList, 7 );
assertArrayEquals( new Integer[]{1, 2, 3, 4, 5}, list.getNextBatch().toArray() );
assertNull( list.getNextBatch() );
}
@Test
public void testHasMoreBatches()
{
List<Integer> sourceList = new ArrayList<Integer>();
sourceList.add( 1 );
sourceList.add( 2 );
sourceList.add( 3 );
sourceList.add( 4 );
sourceList.add( 5 );
BatchedList list = new BatchedList<Integer>( sourceList, 3 );
// two batches should be available
assertTrue( list.hasMoreBatches() );
// fetch the first batch
list.getNextBatch();
// one batch should be available
assertTrue( list.hasMoreBatches() );
// fetch the last batch
list.getNextBatch();
// no more batches should be available
assertFalse( list.hasMoreBatches() );
}
@Test
public void testHasMoreBatchesWithSizeLessThanBatchSize()
{
List<Integer> sourceList = new ArrayList<Integer>();
sourceList.add( 1 );
sourceList.add( 2 );
sourceList.add( 3 );
sourceList.add( 4 );
sourceList.add( 5 );
BatchedList list = new BatchedList<Integer>( sourceList, 10 );
// one batch should be available
assertTrue( list.hasMoreBatches() );
// fetch the one and only batch
assertNotNull( list.getNextBatch() );
// more more batches available
assertFalse( list.hasMoreBatches() );
}
@Test
public void testHasMoreBatchesWithSizeEqualToBatchSize()
{
List<Integer> sourceList = new ArrayList<Integer>();
sourceList.add( 1 );
sourceList.add( 2 );
sourceList.add( 3 );
sourceList.add( 4 );
sourceList.add( 5 );
BatchedList list = new BatchedList<Integer>( sourceList, 5 );
// one batch should be available
assertTrue( list.hasMoreBatches() );
// fetch the one and only batch
assertNotNull( list.getNextBatch() );
// no more batches available
assertFalse( list.hasMoreBatches() );
assertNull( list.getNextBatch() );
}
@Test
public void testhasMoreBatchesWithEmptySourceList()
{
List<Integer> sourceList = new ArrayList<Integer>();
BatchedList list = new BatchedList<Integer>( sourceList, 3 );
assertFalse( list.hasMoreBatches() );
assertNull( list.getNextBatch() );
}
}