blob: 7e93928107bc8b4de4666eec51c2c562b76d2e8c [file] [log] [blame]
/*
* Copyright 2010 Google Inc.
*
* 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.google.gwt.user.cellview.client;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.view.client.HasRows;
import com.google.gwt.view.client.MockHasData;
import com.google.gwt.view.client.Range;
/**
* Tests for {@link AbstractPager}.
*/
public class AbstractPagerTest extends GWTTestCase {
/**
* Mock {@link AbstractPager} used for testing.
*/
private class MockPager extends AbstractPager {
@Override
protected void onRangeOrRowCountChanged() {
}
}
@Override
public String getModuleName() {
return "com.google.gwt.user.cellview.CellView";
}
public void testFirstPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
pager.firstPage();
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(14, 20);
pager.firstPage();
assertEquals(new Range(0, 20), display.getVisibleRange());
}
public void testGetPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
assertEquals(-1, pager.getPage());
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
// Exact page.
display.setVisibleRange(0, 20);
assertEquals(0, pager.getPage());
display.setVisibleRange(200, 20);
assertEquals(10, pager.getPage());
// Inexact page.
display.setVisibleRange(1, 20);
assertEquals(1, pager.getPage());
display.setVisibleRange(205, 20);
assertEquals(11, pager.getPage());
}
public void testGetPageCount() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
assertEquals(-1, pager.getPageCount());
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
// Perfect count.
display.setVisibleRange(0, 20);
display.setRowCount(100, true);
assertEquals(5, pager.getPageCount());
// Imperfect page.
display.setRowCount(105, true);
assertEquals(6, pager.getPageCount());
}
public void testHasNextPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
assertFalse(pager.hasNextPage());
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(0, 20);
display.setRowCount(20, true);
assertFalse(pager.hasNextPage());
assertFalse(pager.hasNextPages(1));
display.setRowCount(105, true);
assertTrue(pager.hasNextPage());
assertTrue(pager.hasNextPages(5));
assertFalse(pager.hasNextPages(6));
}
public void testHasPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
assertFalse(pager.hasPage(0));
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(0, 20);
display.setRowCount(105, true);
assertTrue(pager.hasPage(0));
assertTrue(pager.hasPage(5));
assertFalse(pager.hasPage(6));
}
public void testHasPreviousPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
assertFalse(pager.hasPreviousPage());
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setRowCount(105, true);
display.setVisibleRange(0, 20);
assertFalse(pager.hasPreviousPage());
assertFalse(pager.hasPreviousPages(1));
display.setVisibleRange(40, 20);
assertTrue(pager.hasPreviousPage());
assertTrue(pager.hasPreviousPages(2));
assertFalse(pager.hasPreviousPages(3));
display.setVisibleRange(41, 20);
assertTrue(pager.hasPreviousPage());
assertTrue(pager.hasPreviousPages(3));
assertFalse(pager.hasPreviousPages(4));
}
public void testLastPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
pager.lastPage();
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(14, 20);
display.setRowCount(105, true);
pager.lastPage();
assertEquals(new Range(100, 20), display.getVisibleRange());
}
public void testLastPageStart() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
pager.lastPageStart();
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
pager.setRangeLimited(false);
display.setVisibleRange(14, 20);
display.setRowCount(105, true);
pager.lastPageStart();
assertEquals(new Range(85, 20), display.getVisibleRange());
}
public void testNextPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
pager.nextPage();
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(10, 20);
display.setRowCount(105, true);
pager.nextPage();
assertEquals(new Range(30, 20), display.getVisibleRange());
}
public void testPreviousPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
pager.previousPage();
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(45, 20);
display.setRowCount(105, true);
pager.previousPage();
assertEquals(new Range(25, 20), display.getVisibleRange());
}
public void testSetPage() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
pager.setPage(0);
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(10, 20);
display.setRowCount(105, true);
pager.setPage(0);
assertEquals(new Range(0, 20), display.getVisibleRange());
pager.setPage(3);
assertEquals(new Range(60, 20), display.getVisibleRange());
pager.setPage(5);
assertEquals(new Range(100, 20), display.getVisibleRange());
}
public void testSetPageStart() {
AbstractPager pager = createPager();
// Should not throw an error when the display is null.
assertNull(pager.getDisplay());
pager.setPageStart(0);
// Set the display.
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setVisibleRange(10, 20);
display.setRowCount(105, true);
pager.setPageStart(0);
assertEquals(new Range(0, 20), display.getVisibleRange());
pager.setPageStart(45);
assertEquals(new Range(45, 20), display.getVisibleRange());
pager.setPageStart(100);
assertEquals(new Range(85, 20), display.getVisibleRange());
}
public void testSetRangeLimited() {
AbstractPager pager = createPager();
HasRows display = new MockHasData<String>();
pager.setDisplay(display);
display.setRowCount(110, true);
display.setVisibleRange(70, 20);
// Invalid ranges should be constrained by default.
assertTrue(pager.isRangeLimited());
display.setRowCount(84, true);
assertEquals(new Range(64, 20), display.getVisibleRange());
// Allow invalid ranges.
pager.setRangeLimited(false);
assertFalse(pager.isRangeLimited());
display.setVisibleRange(50, 20);
display.setRowCount(10, true);
assertEquals(new Range(50, 20), display.getVisibleRange());
}
/**
* Create the pager to test. The list display should not be set in the pager.
*
* @return the pager
*/
protected AbstractPager createPager() {
return new MockPager();
}
}