/*
* Copyright 2002-2013 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 org.springframework.beans.support;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.springframework.tests.Assume;
import org.springframework.tests.TestGroup;
import org.springframework.tests.sample.beans.TestBean;
import static org.junit.Assert.*;
/**
* @author Juergen Hoeller
* @author Jean-Pierre PAWLAK
* @author Chris Beams
* @since 20.05.2003
*/
public class PagedListHolderTests {
@Test
public void testPagedListHolder() {
Assume.group(TestGroup.LONG_RUNNING);
TestBean tb1 = new TestBean();
tb1.setName("eva");
tb1.setAge(25);
TestBean tb2 = new TestBean();
tb2.setName("juergen");
tb2.setAge(99);
TestBean tb3 = new TestBean();
tb3.setName("Rod");
tb3.setAge(32);
List tbs = new ArrayList();
tbs.add(tb1);
tbs.add(tb2);
tbs.add(tb3);
PagedListHolder holder = new PagedListHolder(tbs);
assertTrue("Correct source", holder.getSource() == tbs);
assertTrue("Correct number of elements", holder.getNrOfElements() == 3);
assertTrue("Correct number of pages", holder.getPageCount() == 1);
assertTrue("Correct page size", holder.getPageSize() == PagedListHolder.DEFAULT_PAGE_SIZE);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct first element", holder.getLastElementOnPage() == 2);
assertTrue("Correct page list size", holder.getPageList().size() == 3);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb2);
assertTrue("Correct page list contents", holder.getPageList().get(2) == tb3);
holder.setPageSize(2);
assertTrue("Correct number of pages", holder.getPageCount() == 2);
assertTrue("Correct page size", holder.getPageSize() == 2);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertFalse("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct last element", holder.getLastElementOnPage() == 1);
assertTrue("Correct page list size", holder.getPageList().size() == 2);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb2);
holder.setPage(1);
assertTrue("Correct page number", holder.getPage() == 1);
assertFalse("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 2);
assertTrue("Correct last element", holder.getLastElementOnPage() == 2);
assertTrue("Correct page list size", holder.getPageList().size() == 1);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb3);
holder.setPageSize(3);
assertTrue("Correct number of pages", holder.getPageCount() == 1);
assertTrue("Correct page size", holder.getPageSize() == 3);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct last element", holder.getLastElementOnPage() == 2);
holder.setPage(1);
holder.setPageSize(2);
assertTrue("Correct number of pages", holder.getPageCount() == 2);
assertTrue("Correct page size", holder.getPageSize() == 2);
assertTrue("Correct page number", holder.getPage() == 1);
assertFalse("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 2);
assertTrue("Correct last element", holder.getLastElementOnPage() == 2);
holder.setPageSize(2);
holder.setPage(1);
((MutableSortDefinition) holder.getSort()).setProperty("name");
((MutableSortDefinition) holder.getSort()).setIgnoreCase(false);
holder.resort();
assertTrue("Correct source", holder.getSource() == tbs);
assertTrue("Correct number of elements", holder.getNrOfElements() == 3);
assertTrue("Correct number of pages", holder.getPageCount() == 2);
assertTrue("Correct page size", holder.getPageSize() == 2);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertFalse("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct last element", holder.getLastElementOnPage() == 1);
assertTrue("Correct page list size", holder.getPageList().size() == 2);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb3);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb1);
((MutableSortDefinition) holder.getSort()).setProperty("name");
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb2);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb1);
((MutableSortDefinition) holder.getSort()).setProperty("name");
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb3);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb1);
holder.setPage(1);
assertTrue("Correct page list size", holder.getPageList().size() == 1);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb2);
((MutableSortDefinition) holder.getSort()).setProperty("age");
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb3);
((MutableSortDefinition) holder.getSort()).setIgnoreCase(true);
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb3);
holder.nextPage();
assertEquals(1, holder.getPage());
holder.previousPage();
assertEquals(0, holder.getPage());
holder.nextPage();
assertEquals(1, holder.getPage());
holder.nextPage();
assertEquals(1, holder.getPage());
holder.previousPage();
assertEquals(0, holder.getPage());
holder.previousPage();
assertEquals(0, holder.getPage());
}
public static class MockFilter {
private String name = "";
private String age = "";
private String extendedInfo = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getExtendedInfo() {
return extendedInfo;
}
public void setExtendedInfo(String extendedInfo) {
this.extendedInfo = extendedInfo;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MockFilter)) return false;
final MockFilter mockFilter = (MockFilter) o;
if (!age.equals(mockFilter.age)) return false;
if (!extendedInfo.equals(mockFilter.extendedInfo)) return false;
if (!name.equals(mockFilter.name)) return false;
return true;
}
@Override
public int hashCode() {
int result;
result = name.hashCode();
result = 29 * result + age.hashCode();
result = 29 * result + extendedInfo.hashCode();
return result;
}
}
}