package com.mysema.rdfbean.sesame.query;
import static com.mysema.query.alias.Alias.$;
import static com.mysema.query.alias.Alias.alias;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import com.mysema.query.BooleanBuilder;
import com.mysema.rdfbean.domains.NoteTypeDomain;
import com.mysema.rdfbean.domains.NoteTypeDomain.Note;
import com.mysema.rdfbean.domains.NoteTypeDomain.NoteType;
import com.mysema.rdfbean.object.BeanQuery;
import com.mysema.rdfbean.sesame.SessionTestBase;
import com.mysema.rdfbean.testutil.SessionConfig;
@SessionConfig({ Note.class, NoteType.class })
public class EnumTest extends SessionTestBase implements NoteTypeDomain {
private Note n = alias(Note.class, "n");
@Before
public void setUp() {
// note with types
Note note = new Note();
note.type = NoteType.TYPE1;
note.types = Collections.singleton(NoteType.TYPE1);
session.save(note);
// note without types
session.save(new Note());
session.flush();
}
@Test
public void Order() {
session.save(new Note(NoteType.A));
session.save(new Note(NoteType.B));
session.flush();
assertEquals(
Arrays.asList(null, NoteType.A, NoteType.B, NoteType.TYPE1),
session.from($(n)).orderBy($(n.getType()).asc()).list($(n.getType())));
}
@Test
public void Order_by_ordinal() throws IOException {
session.save(new Note(NoteType.A));
session.save(new Note(NoteType.B));
session.flush();
assertEquals(
Arrays.asList(null, NoteType.TYPE1, NoteType.A, NoteType.B),
session.from($(n)).orderBy($(n.getType()).ordinal().asc()).list($(n.getType())));
}
@Test
public void test() {
assertEquals(0, session.from($(n)).where($(n.getType()).eq(NoteType.TYPE2)).list($(n)).size());
assertEquals(1, session.from($(n)).where($(n.getType()).eq(NoteType.TYPE1)).list($(n)).size());
}
@Test
public void test1() {
assertEquals(0, session.from($(n)).where($(n.getTypes()).contains(NoteType.TYPE2)).list($(n)).size());
assertEquals(1, session.from($(n)).where($(n.getTypes()).contains(NoteType.TYPE1)).list($(n)).size());
}
@Test
public void test2() {
BeanQuery query = session.from($(n));
BooleanBuilder filter = new BooleanBuilder();
filter.and($(n.getTypes()).contains(NoteType.TYPE1));
filter.and($(n.getTypes()).contains(NoteType.TYPE2));
assertEquals(0, query.where(filter).list($(n)).size());
}
@Test
public void test3() {
BeanQuery query = session.from($(n));
BooleanBuilder filter = new BooleanBuilder();
filter.or($(n.getTypes()).contains(NoteType.TYPE1));
filter.or($(n.getTypes()).contains(NoteType.TYPE2));
assertEquals(1, query.where(filter).list($(n)).size());
}
@Test
public void test4() {
BeanQuery query = session.from($(n));
BooleanBuilder filter = new BooleanBuilder();
filter.or($(n.getType()).eq(NoteType.TYPE1));
filter.or($(n.getType()).eq(NoteType.TYPE2));
assertEquals(1, query.where(filter).list($(n)).size());
}
}