/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.sesame.query;
import static com.mysema.query.alias.Alias.$;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import com.mysema.query.alias.Alias;
import com.mysema.rdfbean.domains.UserDomain;
import com.mysema.rdfbean.domains.UserDomain.User;
import com.mysema.rdfbean.sesame.SessionTestBase;
import com.mysema.rdfbean.testutil.SessionConfig;
@SessionConfig(User.class)
public class OrderTest extends SessionTestBase implements UserDomain {
@Test
public void OrderBy() throws IOException {
session.save(new User());
User user = Alias.alias(User.class, "user");
assertFalse(session.from($(user))
.orderBy($(user.getFirstName()).asc()).list($(user)).isEmpty());
assertFalse(session.from($(user))
.where($(user.getFirstName()).isNull())
.orderBy($(user.getFirstName()).asc()).list($(user)).isEmpty());
}
@Test
public void CorrectOrder() throws IOException {
for (User user : session.findInstances(User.class)) {
session.delete(user);
}
for (String name : Arrays.asList("C", "A", "D", "B")) {
session.save(new User(name));
}
User user = Alias.alias(User.class, "user");
List<String> results = session.from($(user))
.orderBy($(user.getFirstName()).asc())
.list($(user.getFirstName()));
assertEquals(Arrays.asList("A", "B", "C", "D"), results);
}
@Test
public void OrderWithOffset() throws IOException {
for (User user : session.findInstances(User.class)) {
session.delete(user);
}
for (String name : Arrays.asList("C", "A", "D", "B")) {
session.save(new User(name));
}
// #1
User user = Alias.alias(User.class, "user");
List<String> results = session.from($(user))
.orderBy($(user.getFirstName()).asc())
.offset(1)
.list($(user.getFirstName()));
assertEquals(Arrays.asList("B", "C", "D"), results);
// #2
results = session.from($(user))
.orderBy($(user.getFirstName()).asc())
.limit(3)
.list($(user.getFirstName()));
assertEquals(Arrays.asList("A", "B", "C"), results);
// #3
results = session.from($(user))
.orderBy($(user.getFirstName()).asc())
.offset(1)
.limit(2)
.list($(user.getFirstName()));
assertEquals(Arrays.asList("B", "C"), results);
}
}