package com.jcwhatever.nucleus.mixins;
import com.jcwhatever.nucleus.mixins.IPaginator.PageStartIndex;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@Ignore
public class IPaginatorTest {
/**
* Run the test from within another test, providing implementation
* of an {@link IPaginator}.
*
* <p>The collection of the paginator needs to be initialized for
* the test first using {@link #initforTest}.</p>
*
* @param zero An instance ith its page index set to 0.
* @param one An instance with its page index set to 1.
*/
public static void run(IPaginator<String> zero, IPaginator<String> one) throws Exception {
IPaginatorTest test = new IPaginatorTest(zero, one);
test.testGetItemsPerPage();
test.testGetPage();
test.testGetPageStartIndex();
test.testGetTotalPages();
test.testIterator();
}
/**
* Initialize a paginator collection for the test.
*/
public static <T extends Collection<String>> T initForTest(T paginator) {
paginator.clear();
paginator.add("1");
paginator.add("2");
paginator.add("3");
paginator.add("4");
paginator.add("5");
paginator.add("6");
paginator.add("7");
paginator.add("8");
paginator.add("9");
paginator.add("10");
return paginator;
}
private IPaginator<String> _paginZero;
private IPaginator<String> _paginOne;
public IPaginatorTest(IPaginator<String> zero, IPaginator<String> one) {
_paginZero = zero;
_paginOne = one;
}
@Test
public void testGetPageStartIndex() throws Exception {
Assert.assertEquals(PageStartIndex.ZERO, _paginZero.getPageStartIndex());
Assert.assertEquals(PageStartIndex.ONE, _paginOne.getPageStartIndex());
}
@Test
public void testGetTotalPages() throws Exception {
Assert.assertEquals(5, _paginZero.getTotalPages());
Assert.assertEquals(5, _paginOne.getTotalPages());
_paginZero.setItemsPerPage(3);
_paginOne.setItemsPerPage(3);
Assert.assertEquals(4, _paginZero.getTotalPages());
Assert.assertEquals(4, _paginOne.getTotalPages());
_paginZero.setItemsPerPage(5);
_paginOne.setItemsPerPage(5);
Assert.assertEquals(2, _paginZero.getTotalPages());
Assert.assertEquals(2, _paginOne.getTotalPages());
_paginZero.setItemsPerPage(20);
_paginOne.setItemsPerPage(20);
Assert.assertEquals(1, _paginZero.getTotalPages());
Assert.assertEquals(1, _paginOne.getTotalPages());
}
@Test
public void testGetItemsPerPage() throws Exception {
_paginZero.setItemsPerPage(2);
_paginOne.setItemsPerPage(2);
Assert.assertEquals(2, _paginZero.getItemsPerPage());
Assert.assertEquals(2, _paginOne.getItemsPerPage());
_paginZero.setItemsPerPage(5);
_paginOne.setItemsPerPage(5);
Assert.assertEquals(5, _paginZero.getItemsPerPage());
Assert.assertEquals(5, _paginOne.getItemsPerPage());
}
@Test
public void testGetPage() throws Exception {
_paginZero.setItemsPerPage(2);
_paginOne.setItemsPerPage(2);
List<String> page = _paginZero.getPage(0);
Assert.assertEquals(2, page.size());
Assert.assertEquals("1", page.get(0));
Assert.assertEquals("2", page.get(1));
page = _paginZero.getPage(4);
Assert.assertEquals(2, page.size());
Assert.assertEquals("9", page.get(0));
Assert.assertEquals("10", page.get(1));
page = _paginOne.getPage(1);
Assert.assertEquals(2, page.size());
Assert.assertEquals("1", page.get(0));
Assert.assertEquals("2", page.get(1));
page = _paginOne.getPage(5);
Assert.assertEquals(2, page.size());
Assert.assertEquals("9", page.get(0));
Assert.assertEquals("10", page.get(1));
}
@Test
public void testIterator() throws Exception {
_paginZero.setItemsPerPage(2);
_paginOne.setItemsPerPage(2);
Iterator<String> iterator = _paginZero.iterator(4);
Assert.assertEquals("9", iterator.next());
Assert.assertEquals("10", iterator.next());
Assert.assertEquals(false, iterator.hasNext());
iterator = _paginOne.iterator(5);
Assert.assertEquals("9", iterator.next());
Assert.assertEquals("10", iterator.next());
Assert.assertEquals(false, iterator.hasNext());
}
}