package io.ebeaninternal.server.query;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebeaninternal.api.SpiQuery;
import org.tests.model.basic.Order;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class LimitOffsetPagedListTest {
private EbeanServer server = Ebean.getDefaultServer();
@Test
public void getPageIndex_when_firstRowsZero() throws Exception {
assertEquals(limit(0, 10).getPageIndex(), 0);
}
@Test
public void getPageIndex_when_10_10() {
assertEquals(limit(10, 10).getPageIndex(), 1);
}
@Test
public void getPageIndex_when_20_10() {
assertEquals(limit(20, 10).getPageIndex(), 2);
}
@Test
public void getPageIndex_when_1_10() throws Exception {
assertEquals(limit(1, 10).getPageIndex(), 1);
}
@Test
public void getPageIndex_when_9_10() throws Exception {
assertEquals(limit(1, 10).getPageIndex(), 1);
}
@Test
public void getPageIndex_when_10_4() {
assertEquals(limit(10, 4).getPageIndex(), 3);
}
@Test
public void getPageIndex_when_10_5() {
assertEquals(limit(10, 5).getPageIndex(), 2);
}
@Test
public void getPageIndex_when_10_9() {
assertEquals(limit(10, 9).getPageIndex(), 2);
}
@Test
public void getPageIndex_when_10_11() {
assertEquals(limit(10, 11).getPageIndex(), 1);
}
@Test
public void getPageIndex_when_21_10() {
assertEquals(limit(21, 10).getPageIndex(), 3);
}
@Test
public void getPageIndex_when_29_10() {
assertEquals(limit(29, 10).getPageIndex(), 3);
}
@Test
public void getPageIndex_when_30_10() {
assertEquals(limit(30, 10).getPageIndex(), 3);
}
@Test
public void getPageIndex_when_31_10() {
assertEquals(limit(31, 10).getPageIndex(), 4);
}
@Test
public void getPageIndex_when_40_10() {
assertEquals(limit(40, 10).getPageIndex(), 4);
}
private LimitOffsetPagedList<Order> limit(int first, int max) {
return limitQuery(queryWith(first, max));
}
private LimitOffsetPagedList<Order> limitQuery(SpiQuery<Order> query) {
return new LimitOffsetPagedList<>(server, query);
}
private SpiQuery<Order> queryWith(int first, int max) {
SpiQuery<Order> query = query();
query.setFirstRow(first);
query.setMaxRows(max);
return query;
}
private SpiQuery<Order> query() {
return (SpiQuery<Order>) server.find(Order.class);
}
}