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.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Test; /** * Classe de testes para valida��o do comportamento {@link PageImpl} * * @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a> * @since 01/10/2014 * */ public final class PageImplTest { @Test public void assertEqualsForSimpleSetup() throws Exception { final PageImpl<String> page = new PageImpl<>(Arrays.asList("Foo")); assertEqualsAndHashcode(page, page); assertEqualsAndHashcode(page, new PageImpl<>(Arrays.asList("Foo"))); } @Test public void assertEqualsForComplexSetup() throws Exception { final Pageable pageable = new PageRequest(0, 10); final List<String> content = Arrays.asList("Foo"); final PageImpl<String> page = new PageImpl<>(content, pageable, 100); assertEqualsAndHashcode(page, page); assertEqualsAndHashcode(page, new PageImpl<>(content, pageable, 100)); assertNotEqualsAndHashcode(page, new PageImpl<>(content, pageable, 90)); assertNotEqualsAndHashcode(page, new PageImpl<>(content, new PageRequest(1, 10), 100)); assertNotEqualsAndHashcode(page, new PageImpl<>(content, new PageRequest(0, 15), 100)); } @Test(expected = IllegalArgumentException.class) public void preventsNullContentForSimpleSetup() throws Exception { new PageImpl<>(null); } @Test(expected = IllegalArgumentException.class) public void preventsNullContentForAdvancedSetup() throws Exception { new PageImpl<>(null, null, 0); } @Test public void returnsNextPageable() { final Page<Object> page = new PageImpl<>(Arrays.asList(new Object()), new PageRequest(0, 1), 10); assertThat(page.isFirst(), is(true)); assertThat(page.hasPrevious(), is(false)); assertThat(page.previousPageable(), is(nullValue())); assertThat(page.isLast(), is(false)); assertThat(page.hasNext(), is(true)); assertThat(page.nextPageable(), is((Pageable) new PageRequest(1, 1))); } @Test public void returnsPreviousPageable() { final Page<Object> page = new PageImpl<>(Arrays.asList(new Object()), new PageRequest(1, 1), 2); assertThat(page.isFirst(), is(false)); assertThat(page.hasPrevious(), is(true)); assertThat(page.previousPageable(), is((Pageable) new PageRequest(0, 1))); assertThat(page.isLast(), is(true)); assertThat(page.hasNext(), is(false)); assertThat(page.nextPageable(), is(nullValue())); } @Test public void createsPageForEmptyContentCorrectly() { final List<String> list = Collections.emptyList(); final Page<String> page = new PageImpl<>(list); assertThat(page.getContent(), is(list)); assertThat(page.getNumber(), is(0)); assertThat(page.getNumberOfElements(), is(0)); assertThat(page.getSize(), is(0)); assertThat(page.getTotalElements(), is(0L)); assertThat(page.getTotalPages(), is(1)); assertThat(page.hasNext(), is(false)); assertThat(page.hasPrevious(), is(false)); assertThat(page.isFirst(), is(true)); assertThat(page.isLast(), is(true)); assertThat(page.hasContent(), is(false)); } @Test public void returnsCorrectTotalPages() { final Page<String> page = new PageImpl<>(Arrays.asList("a")); assertThat(page.getTotalPages(), is(1)); assertThat(page.hasNext(), is(false)); assertThat(page.hasPrevious(), is(false)); } }