/* * Copyright (c) 2002-2012 Alibaba Group Holding Limited. * All rights reserved. * * 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.alibaba.citrus.util; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; /** * 测试<code>Paginator</code>。 * * @author Michael Zhou */ public class PaginatorTests { private Paginator pg; @Before public void init() { pg = new Paginator(10); } /** 测试无限多项。 */ @Test public void unknownItems() { assertEquals(Paginator.UNKNOWN_ITEMS, pg.getItems()); assertEquals(10, pg.getItemsPerPage()); // 初始状态,第1页 assertEquals(1, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(1, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(2, pg.getNextPage()); assertEquals(11, pg.getNextPage(10)); assertEquals(1, pg.getBeginIndex()); assertEquals(10, pg.getEndIndex()); assertEquals(0, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertTrue(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); // 下一页,第2页 pg.setPage(2); assertEquals(2, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(1, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(3, pg.getNextPage()); assertEquals(12, pg.getNextPage(10)); assertEquals(11, pg.getBeginIndex()); assertEquals(20, pg.getEndIndex()); assertEquals(10, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertTrue(pg.isDisabledPage(2)); // 第11页 pg.setPage(11); assertEquals(11, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(10, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(12, pg.getNextPage()); assertEquals(21, pg.getNextPage(10)); assertEquals(101, pg.getBeginIndex()); assertEquals(110, pg.getEndIndex()); assertEquals(100, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertTrue(pg.isDisabledPage(11)); assertFalse(pg.isDisabledPage(12)); } /** 测试有限多项。 */ @Test public void limitedItems() { pg.setItems(123); assertEquals(13, pg.getPages()); assertEquals(123, pg.getItems()); assertEquals(10, pg.getItemsPerPage()); // 初始状态,第1页 assertEquals(1, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(1, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(2, pg.getNextPage()); assertEquals(11, pg.getNextPage(10)); assertEquals(13, pg.getLastPage()); assertEquals(1, pg.getBeginIndex()); assertEquals(10, pg.getEndIndex()); assertEquals(0, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertTrue(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertFalse(pg.isDisabledPage(13)); assertTrue(pg.isDisabledPage(14)); // 下一页,第2页 pg.setPage(2); assertEquals(2, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(1, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(3, pg.getNextPage()); assertEquals(12, pg.getNextPage(10)); assertEquals(11, pg.getBeginIndex()); assertEquals(20, pg.getEndIndex()); assertEquals(10, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertTrue(pg.isDisabledPage(2)); assertFalse(pg.isDisabledPage(13)); assertTrue(pg.isDisabledPage(14)); // 第11页 pg.setPage(11); assertEquals(11, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(10, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(12, pg.getNextPage()); assertEquals(13, pg.getNextPage(10)); assertEquals(101, pg.getBeginIndex()); assertEquals(110, pg.getEndIndex()); assertEquals(100, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertTrue(pg.isDisabledPage(11)); assertFalse(pg.isDisabledPage(13)); assertTrue(pg.isDisabledPage(14)); // 第13页(最后一页) pg.setPage(13); assertEquals(13, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(12, pg.getPreviousPage()); assertEquals(3, pg.getPreviousPage(10)); assertEquals(13, pg.getNextPage()); assertEquals(13, pg.getNextPage(10)); assertEquals(121, pg.getBeginIndex()); assertEquals(123, pg.getEndIndex()); assertEquals(120, pg.getOffset()); assertEquals(3, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertFalse(pg.isDisabledPage(11)); assertTrue(pg.isDisabledPage(13)); assertTrue(pg.isDisabledPage(14)); } @Test public void setItems() { pg.setItems(123); pg.setPage(11); pg.setItems(133); // 改变items assertEquals(14, pg.getPages()); assertEquals(133, pg.getItems()); assertEquals(10, pg.getItemsPerPage()); assertEquals(11, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(10, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(12, pg.getNextPage()); assertEquals(14, pg.getNextPage(10)); assertEquals(101, pg.getBeginIndex()); assertEquals(110, pg.getEndIndex()); assertEquals(100, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertTrue(pg.isDisabledPage(11)); assertFalse(pg.isDisabledPage(13)); assertFalse(pg.isDisabledPage(14)); assertTrue(pg.isDisabledPage(15)); } @Test public void setItemsPerPage() { pg.setItems(123); pg.setPage(11); // 变大itemsPerPage pg.setItemsPerPage(20); assertEquals(7, pg.getPages()); assertEquals(123, pg.getItems()); assertEquals(20, pg.getItemsPerPage()); assertEquals(6, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(5, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(7, pg.getNextPage()); assertEquals(7, pg.getNextPage(10)); assertEquals(101, pg.getBeginIndex()); assertEquals(120, pg.getEndIndex()); assertEquals(100, pg.getOffset()); assertEquals(20, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertTrue(pg.isDisabledPage(6)); assertFalse(pg.isDisabledPage(7)); assertTrue(pg.isDisabledPage(8)); // 变小itemsPerPage pg.setItemsPerPage(5); assertEquals(25, pg.getPages()); assertEquals(123, pg.getItems()); assertEquals(5, pg.getItemsPerPage()); assertEquals(21, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(20, pg.getPreviousPage()); assertEquals(11, pg.getPreviousPage(10)); assertEquals(22, pg.getNextPage()); assertEquals(25, pg.getNextPage(10)); assertEquals(101, pg.getBeginIndex()); assertEquals(105, pg.getEndIndex()); assertEquals(100, pg.getOffset()); assertEquals(5, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertTrue(pg.isDisabledPage(21)); assertFalse(pg.isDisabledPage(22)); assertTrue(pg.isDisabledPage(26)); } @Test public void noItems() { pg.setItems(0); pg.setPage(1); assertEquals(0, pg.getPages()); assertEquals(10, pg.getItemsPerPage()); assertEquals(0, pg.getPage()); assertEquals(0, pg.getFirstPage()); assertEquals(0, pg.getPreviousPage()); assertEquals(0, pg.getPreviousPage(10)); assertEquals(0, pg.getNextPage()); assertEquals(0, pg.getNextPage(10)); assertEquals(0, pg.getBeginIndex()); assertEquals(0, pg.getEndIndex()); assertEquals(0, pg.getOffset()); assertEquals(0, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertTrue(pg.isDisabledPage(1)); assertTrue(pg.isDisabledPage(2)); assertTrue(pg.isDisabledPage(21)); assertTrue(pg.isDisabledPage(22)); assertTrue(pg.isDisabledPage(26)); } @Test public void setItem() { pg.setItems(123); // 13页 pg.setItem(122); assertEquals(13, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(12, pg.getPreviousPage()); assertEquals(3, pg.getPreviousPage(10)); assertEquals(13, pg.getNextPage()); assertEquals(13, pg.getNextPage(10)); assertEquals(121, pg.getBeginIndex()); assertEquals(123, pg.getEndIndex()); assertEquals(120, pg.getOffset()); assertEquals(3, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertFalse(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertFalse(pg.isDisabledPage(11)); assertTrue(pg.isDisabledPage(13)); assertTrue(pg.isDisabledPage(14)); // 1页 pg.setItem(0); assertEquals(1, pg.getPage()); assertEquals(1, pg.getFirstPage()); assertEquals(1, pg.getPreviousPage()); assertEquals(1, pg.getPreviousPage(10)); assertEquals(2, pg.getNextPage()); assertEquals(11, pg.getNextPage(10)); assertEquals(13, pg.getLastPage()); assertEquals(1, pg.getBeginIndex()); assertEquals(10, pg.getEndIndex()); assertEquals(0, pg.getOffset()); assertEquals(10, pg.getLength()); assertTrue(pg.isDisabledPage(0)); assertTrue(pg.isDisabledPage(1)); assertFalse(pg.isDisabledPage(2)); assertFalse(pg.isDisabledPage(13)); assertTrue(pg.isDisabledPage(14)); } @Test public void slider() { pg.setItems(0); assertEquals(0, pg.getSlider().length); pg.setItems(123); assertEquals(0, pg.getSlider(0).length); assertSlide(1, 2, 3, 4, 5, 6, 7); pg.setPage(2); assertSlide(1, 2, 3, 4, 5, 6, 7); pg.setPage(3); assertSlide(1, 2, 3, 4, 5, 6, 7); pg.setPage(4); assertSlide(1, 2, 3, 4, 5, 6, 7); pg.setPage(5); assertSlide(2, 3, 4, 5, 6, 7, 8); pg.setPage(6); assertSlide(3, 4, 5, 6, 7, 8, 9); pg.setPage(7); assertSlide(4, 5, 6, 7, 8, 9, 10); pg.setPage(8); assertSlide(5, 6, 7, 8, 9, 10, 11); pg.setPage(9); assertSlide(6, 7, 8, 9, 10, 11, 12); pg.setPage(10); assertSlide(7, 8, 9, 10, 11, 12, 13); pg.setPage(11); assertSlide(7, 8, 9, 10, 11, 12, 13); pg.setPage(12); assertSlide(7, 8, 9, 10, 11, 12, 13); pg.setPage(13); assertSlide(7, 8, 9, 10, 11, 12, 13); } private void assertSlide(int a, int b, int c, int d, int e, int f, int g) { int i = 0; int[] slider = pg.getSlider(7); assertEquals(a, slider[i++]); assertEquals(b, slider[i++]); assertEquals(c, slider[i++]); assertEquals(d, slider[i++]); assertEquals(e, slider[i++]); assertEquals(f, slider[i++]); assertEquals(g, slider[i++]); } }