package com.mysema.rdfbean.query;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.mysema.commons.lang.CloseableIterator;
import com.mysema.query.types.Expression;
import com.mysema.query.types.QBean;
import com.mysema.query.types.path.PathBuilder;
import com.mysema.rdfbean.domains.SimpleDomain;
import com.mysema.rdfbean.domains.SimpleDomain.SimpleType;
import com.mysema.rdfbean.domains.SimpleDomain.SimpleType2;
import com.mysema.rdfbean.testutil.SessionConfig;
@SessionConfig({ SimpleType.class, SimpleType2.class })
public class FactoryExpressionTest extends SessionTestBase implements SimpleDomain {
private PathBuilder<SimpleType> var = new PathBuilder<SimpleType>(SimpleType.class, "var");
private Expression<SimpleType> projection = new QBean<SimpleType>(SimpleType.class, var.getString("directProperty"));
@Before
public void setUp() {
session.saveAll(new SimpleType("a"), new SimpleType("b"), new SimpleType("c"), new SimpleType("d"));
}
@Test
public void List() {
List<SimpleType> result = session.from(var).list(projection);
assertEquals(4, result.size());
for (SimpleType st : result) {
assertNotNull(st.directProperty);
}
}
@Test
public void UniqueResult() {
assertTrue(session.from(var).limit(1).uniqueResult(projection) instanceof SimpleType);
}
@Test
public void Iterate() {
CloseableIterator<SimpleType> it = session.from(var).iterate(projection);
try {
assertTrue(it.next() instanceof SimpleType);
assertTrue(it.next() instanceof SimpleType);
assertTrue(it.next() instanceof SimpleType);
assertTrue(it.next() instanceof SimpleType);
assertFalse(it.hasNext());
} finally {
it.close();
}
}
}