package com.mysema.query.jdoql; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; import javax.jdo.PersistenceManager; import javax.jdo.Transaction; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import com.mysema.query.SearchResults; import com.mysema.query.jdoql.testdomain.Product; import com.mysema.query.jdoql.testdomain.QProduct; public class QueryOrderingTest extends AbstractJDOTest { private QProduct product = QProduct.product; @Test public void testOrderAsc() { List namesAsc = query().from(product).orderBy( product.name.asc(), product.description.desc()).list( product.name); assertEquals(30, namesAsc.size()); String prev = null; for (String name : namesAsc) { if (prev != null) { assertTrue(prev.compareTo(name) < 0); } prev = name; } } @Test public void testOrderDesc() { List namesDesc = query().from(product).orderBy( product.name.desc()).list(product.name); assertEquals(30, namesDesc.size()); String prev = null; for (String name : namesDesc) { if (prev != null) { assertTrue(prev.compareTo(name) > 0); } prev = name; } } @Test public void testTabularResults() { List rows = query().from(product).orderBy(product.name.asc()) .list(product.name, product.description); assertEquals(30, rows.size()); for (Object[] row : rows) { assertEquals(row[0].toString().substring(1), row[1].toString() .substring(1)); } } @Test public void paging(){ assertEquals( Arrays.asList("A0", "A1"), query().from(product).orderBy(product.name.asc()).limit(2).list(product.name)); assertEquals( Arrays.asList("A2", "A3", "A4"), query().from(product).orderBy(product.name.asc()).offset(2).limit(3).list(product.name)); assertEquals( Arrays.asList("C9", "C8"), query().from(product).orderBy(product.name.desc()).limit(2).list(product.name)); } @Test public void searchResults() { SearchResults results = query() .from(product) .orderBy(product.name.asc()) .limit(2) .listResults(product.name); assertEquals(Arrays.asList("A0","A1"), results.getResults()); assertEquals(30, results.getTotal()); } @Test @Ignore public void testDistinct() { // TODO } @BeforeClass public static void doPersist() { // Persistence of a Product and a Book. PersistenceManager pm = pmf.getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); for (int i = 0; i < 10; i++) { pm.makePersistent(new Product("C" + i, "F" + i, 200.00)); pm.makePersistent(new Product("B" + i, "E" + i, 200.00)); pm.makePersistent(new Product("A" + i, "D" + i, 200.00)); } tx.commit(); } finally { if (tx.isActive()) { tx.rollback(); } pm.close(); } System.out.println(""); } }