package br.com.citframework.integracao.core;
import static br.com.centralit.UnitTestUtils.assertEqualsAndHashcode;
import static br.com.centralit.UnitTestUtils.assertNotEqualsAndHashcode;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Test;
/**
* Classe de testes para valida��o do comportamento {@link PageRequest}
*
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 01/10/2014
*
*/
public final class PageRequestTest {
private PageRequest newPageRequest(final int page, final int size) {
return new PageRequest(page, size);
}
@Test(expected = IllegalArgumentException.class)
public void preventsNegativePage() {
this.newPageRequest(-1, 10);
}
@Test(expected = IllegalArgumentException.class)
public void preventsNegativeSize() {
this.newPageRequest(0, -1);
}
@Test(expected = IllegalArgumentException.class)
public void preventsPageSizeLessThanOne() {
this.newPageRequest(0, 0);
}
@Test
public void navigatesPageablesCorrectly() {
final Pageable request = this.newPageRequest(1, 10);
assertThat(request.hasPrevious(), is(true));
assertThat(request.next(), is((Pageable) this.newPageRequest(2, 10)));
final Pageable first = request.previousOrFirst();
assertThat(first.hasPrevious(), is(false));
assertThat(first, is((Pageable) this.newPageRequest(0, 10)));
assertThat(first, is(request.first()));
assertThat(first.previousOrFirst(), is(first));
}
@Test
public void equalsHonoursPageAndSize() {
final PageRequest request = this.newPageRequest(0, 10);
assertEqualsAndHashcode(request, request);
assertEqualsAndHashcode(request, this.newPageRequest(0, 10));
assertNotEqualsAndHashcode(request, this.newPageRequest(1, 10));
assertNotEqualsAndHashcode(request, this.newPageRequest(0, 11));
}
}