/** * Copyright 2004-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.ibatis.common.util; import junit.framework.TestCase; import java.util.Iterator; public class PaginatedArrayListTest extends TestCase { private PaginatedArrayList smallPageList; private PaginatedArrayList oddPageList; private PaginatedArrayList evenPageList; @Override protected void setUp() throws Exception { smallPageList = new PaginatedArrayList(5); smallPageList.add(new Integer(0)); smallPageList.add(new Integer(1)); smallPageList.add(new Integer(2)); oddPageList = new PaginatedArrayList(5); oddPageList.add(new Integer(0)); oddPageList.add(new Integer(1)); oddPageList.add(new Integer(2)); oddPageList.add(new Integer(3)); oddPageList.add(new Integer(4)); oddPageList.add(new Integer(5)); oddPageList.add(new Integer(6)); oddPageList.add(new Integer(7)); oddPageList.add(new Integer(8)); oddPageList.add(new Integer(9)); oddPageList.add(new Integer(10)); oddPageList.add(new Integer(11)); oddPageList.add(new Integer(12)); oddPageList.add(new Integer(13)); oddPageList.add(new Integer(14)); oddPageList.add(new Integer(15)); oddPageList.add(new Integer(16)); oddPageList.add(new Integer(17)); evenPageList = new PaginatedArrayList(5); evenPageList.add(new Integer(0)); evenPageList.add(new Integer(1)); evenPageList.add(new Integer(2)); evenPageList.add(new Integer(3)); evenPageList.add(new Integer(4)); evenPageList.add(new Integer(5)); evenPageList.add(new Integer(6)); evenPageList.add(new Integer(7)); evenPageList.add(new Integer(8)); evenPageList.add(new Integer(9)); evenPageList.add(new Integer(10)); evenPageList.add(new Integer(11)); evenPageList.add(new Integer(12)); evenPageList.add(new Integer(13)); evenPageList.add(new Integer(14)); } public void testOddPaginatedIterator() { assertEquals(true, oddPageList.isFirstPage()); assertEquals(false, oddPageList.isPreviousPageAvailable()); int count = 0; Iterator i = oddPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(5, count); oddPageList.nextPage(); count = 0; i = oddPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(5, count); oddPageList.nextPage(); assertEquals(true, oddPageList.isMiddlePage()); count = 0; i = oddPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(5, count); oddPageList.nextPage(); count = 0; i = oddPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(3, count); assertEquals(true, oddPageList.isLastPage()); assertEquals(false, oddPageList.isNextPageAvailable()); oddPageList.nextPage(); assertEquals(true, oddPageList.isLastPage()); assertEquals(false, oddPageList.isNextPageAvailable()); oddPageList.previousPage(); assertEquals(new Integer(10), oddPageList.get(0)); assertEquals(new Integer(12), oddPageList.get(2)); oddPageList.gotoPage(500); assertEquals(new Integer(0), oddPageList.get(0)); assertEquals(new Integer(4), oddPageList.get(4)); oddPageList.gotoPage(-500); assertEquals(new Integer(15), oddPageList.get(0)); assertEquals(new Integer(17), oddPageList.get(2)); } public void testEvenPaginatedIterator() { assertEquals(true, evenPageList.isFirstPage()); assertEquals(false, evenPageList.isPreviousPageAvailable()); int count = 0; Iterator i = evenPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(5, count); evenPageList.nextPage(); assertEquals(true, evenPageList.isMiddlePage()); count = 0; i = evenPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(5, count); evenPageList.nextPage(); count = 0; i = evenPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(5, count); assertEquals(true, evenPageList.isLastPage()); assertEquals(false, evenPageList.isNextPageAvailable()); evenPageList.nextPage(); assertEquals(new Integer(10), evenPageList.get(0)); assertEquals(new Integer(14), evenPageList.get(4)); evenPageList.previousPage(); assertEquals(new Integer(5), evenPageList.get(0)); assertEquals(new Integer(9), evenPageList.get(4)); evenPageList.gotoPage(500); assertEquals(new Integer(0), evenPageList.get(0)); assertEquals(new Integer(4), evenPageList.get(4)); evenPageList.gotoPage(-500); assertEquals(new Integer(10), evenPageList.get(0)); assertEquals(new Integer(14), evenPageList.get(4)); } public void testSmallPaginatedIterator() { assertEquals(true, smallPageList.isFirstPage()); assertEquals(true, smallPageList.isLastPage()); assertEquals(false, smallPageList.isMiddlePage()); assertEquals(false, smallPageList.isPreviousPageAvailable()); assertEquals(false, smallPageList.isNextPageAvailable()); int count = 0; Iterator i = smallPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(3, count); smallPageList.nextPage(); count = 0; i = smallPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(3, count); assertEquals(true, smallPageList.isFirstPage()); assertEquals(true, smallPageList.isLastPage()); assertEquals(false, smallPageList.isMiddlePage()); assertEquals(false, smallPageList.isPreviousPageAvailable()); assertEquals(false, smallPageList.isNextPageAvailable()); smallPageList.nextPage(); count = 0; i = smallPageList.iterator(); while (i.hasNext()) { i.next(); count++; } assertEquals(3, count); smallPageList.nextPage(); assertEquals(new Integer(0), smallPageList.get(0)); assertEquals(new Integer(2), smallPageList.get(2)); smallPageList.previousPage(); assertEquals(new Integer(0), smallPageList.get(0)); assertEquals(new Integer(2), smallPageList.get(2)); smallPageList.gotoPage(500); assertEquals(new Integer(0), smallPageList.get(0)); assertEquals(new Integer(2), smallPageList.get(2)); smallPageList.gotoPage(-500); assertEquals(new Integer(0), smallPageList.get(0)); assertEquals(new Integer(2), smallPageList.get(2)); assertEquals(true, smallPageList.isFirstPage()); assertEquals(true, smallPageList.isLastPage()); assertEquals(false, smallPageList.isMiddlePage()); assertEquals(false, smallPageList.isPreviousPageAvailable()); assertEquals(false, smallPageList.isNextPageAvailable()); } }