/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.rdfbean.virtuoso.query; import static com.mysema.query.alias.Alias.$; import static org.junit.Assert.assertEquals; import javax.annotation.Nullable; import org.junit.Before; import org.junit.Test; import com.mysema.commons.lang.IteratorAdapter; import com.mysema.query.QueryModifiers; import com.mysema.query.SearchResults; import com.mysema.query.alias.Alias; import com.mysema.rdfbean.domains.EntityDomain; import com.mysema.rdfbean.domains.EntityDomain.Entity; import com.mysema.rdfbean.object.BeanQuery; import com.mysema.rdfbean.testutil.SessionConfig; import com.mysema.rdfbean.virtuoso.AbstractConnectionTest; @SessionConfig(Entity.class) public class PagingTest extends AbstractConnectionTest implements EntityDomain { private static final Entity entity = Alias.alias(Entity.class); @Before public void setUp() { for (int i = 0; i < 9; i++) { Entity entity = new Entity(); entity.property = String.valueOf(i); session.save(entity); } session.clear(); } @Test public void test() { assertResultSize(9, 9, null); assertResultSize(9, 2, new QueryModifiers(2l, null)); assertResultSize(9, 2, new QueryModifiers(2l, 0l)); assertResultSize(9, 2, new QueryModifiers(2l, 3l)); assertResultSize(9, 9, new QueryModifiers(20l, null)); assertResultSize(9, 9, new QueryModifiers(20l, 0l)); assertResultSize(9, 5, new QueryModifiers(20l, 4l)); assertResultSize(9, 0, new QueryModifiers(10l, 9l)); } private void assertResultSize(int total, int size, @Nullable QueryModifiers modifiers) { // via list assertEquals(size, createQuery(modifiers).list($(entity)).size()); System.out.println(); // via results SearchResults<?> results = createQuery(modifiers).listResults($(entity)); assertEquals(total, results.getTotal()); assertEquals(size, results.getResults().size()); System.out.println(); // via iterator assertEquals(size, IteratorAdapter.asList(createQuery(modifiers).iterate($(entity))).size()); System.out.println(); } private BeanQuery createQuery(@Nullable QueryModifiers modifiers) { BeanQuery beanQuery = session.from($(entity)).orderBy($(entity.getProperty()).asc()); if (modifiers != null) beanQuery.restrict(modifiers); return beanQuery; } }