package org.displaytag.decorator; import org.displaytag.model.Row; import org.displaytag.model.RowIterator; import org.displaytag.model.TableModel; import org.displaytag.pagination.SmartListHelper; import org.displaytag.properties.TableProperties; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; /** * Test for TableDecorator with pagination. * * If you set up pagination and iterate through the entire page, you should * always be on the last row at the end. If you have grouped totals, the first * group on a page other than the first should start at the page offset, not at 0. * * @author Robert West * @version $Revision: 1 $ ($Author: rwest $) */ public class TableDecoratorPaginationTest { @Test public void testSinglePage() { List<Integer> rawData = new ArrayList<Integer>(10); List<Object> data = new ArrayList<Object>(10); for(int i = 1; i <= 10; i++) { rawData.add(i); data.add(new Row(i, i)); } TableProperties props = TableProperties.getInstance(null); SmartListHelper helper = new SmartListHelper(data, data.size(), 10, props, false); helper.setCurrentPage(1); List fullList = helper.getListForCurrentPage(); TableModel model = new TableModel(props, "", null); model.setRowListPage(fullList); model.setPageOffset(helper.getFirstIndexForCurrentPage()); MultilevelTotalTableDecorator decorator = new MultilevelTotalTableDecorator(); decorator.init(null, rawData, model); model.setTableDecorator(decorator); RowIterator iterator = model.getRowIterator(false); while(iterator.hasNext()) { iterator.next(); } assertEquals(decorator.isLastRow(), true); } @Test public void testFirstPage() { List<Integer> rawData = new ArrayList<Integer>(10); List<Object> data = new ArrayList<Object>(10); for(int i = 1; i <= 10; i++) { rawData.add(i); data.add(new Row(i, i)); } TableProperties props = TableProperties.getInstance(null); SmartListHelper helper = new SmartListHelper(data, data.size(), 5, props, false); helper.setCurrentPage(1); List fullList = helper.getListForCurrentPage(); TableModel model = new TableModel(props, "", null); model.setRowListPage(fullList); model.setPageOffset(helper.getFirstIndexForCurrentPage()); MultilevelTotalTableDecorator decorator = new MultilevelTotalTableDecorator(); decorator.init(null, rawData, model); model.setTableDecorator(decorator); RowIterator iterator = model.getRowIterator(false); while(iterator.hasNext()) { iterator.next(); } assertEquals(decorator.isLastRow(), true); } @Test public void testSecondPage() { List<Integer> rawData = new ArrayList<Integer>(10); List<Object> data = new ArrayList<Object>(10); for(int i = 1; i <= 10; i++) { rawData.add(i); data.add(new Row(i, i)); } TableProperties props = TableProperties.getInstance(null); SmartListHelper helper = new SmartListHelper(data, data.size(), 5, props, false); helper.setCurrentPage(2); List fullList = helper.getListForCurrentPage(); TableModel model = new TableModel(props, "", null); model.setRowListPage(fullList); model.setPageOffset(helper.getFirstIndexForCurrentPage()); MultilevelTotalTableDecorator decorator = new MultilevelTotalTableDecorator(); decorator.init(null, rawData, model); model.setTableDecorator(decorator); RowIterator iterator = model.getRowIterator(false); while(iterator.hasNext()) { iterator.next(); } assertEquals(decorator.isLastRow(), true); } }