/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.sesame.query;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import org.junit.Ignore;
import org.junit.Test;
import com.mysema.query.types.Predicate;
import com.mysema.rdfbean.domains.SimpleDomain.SimpleType;
import com.mysema.rdfbean.domains.SimpleDomain.SimpleType2;
import com.mysema.rdfbean.object.BeanQuery;
import com.mysema.rdfbean.sesame.SessionTestBase;
import com.mysema.rdfbean.testutil.SessionConfig;
@SessionConfig({ SimpleType.class, SimpleType2.class })
public class SimpleQueriesTest extends SessionTestBase {
private SimpleType instance;
private List<SimpleType> instances;
private BeanQuery where(Predicate... conditions) {
return session.from(var).where(conditions);
}
@Test(expected = IllegalArgumentException.class)
public void in_empty() {
where(var.directProperty.in(Collections.<String> emptySet())).list(var);
}
@Test
public void AllIds() {
System.out.println("allIds");
instances = session.from(var).list(var);
List<String> ids = Arrays.asList(instances.get(0).getId(), instances.get(1).getId());
assertEquals(ids, session.from(var).list(var.id));
}
@Test
public void AllInstances() {
System.out.println("allInstances");
instances = session.from(var).list(var);
assertEquals(2, instances.size());
for (SimpleType i : instances) {
System.out.println(i.getId() + ", " + i.getDirectProperty());
}
}
@Test
public void AllDistinctInstances() {
System.out.println("allDistinctInstances");
assertEquals(2, session.from(var).listDistinct(var).size());
}
@Test
public void ById() {
System.out.println("byId");
String id = session.from(var).list(var.id).get(0);
instance = where(var.id.eq(id)).uniqueResult(var);
assertNotNull(instance);
assertEquals(id, instance.getId());
}
@Test
public void ByIdNegated() {
System.out.println("byIdNegated");
instances = session.from(var).list(var);
instance = where(var.id.ne(instances.get(0).getId())).uniqueResult(var);
assertNotNull(instance);
assertEquals(instances.get(1).getId(), instance.getId());
}
@Test
public void ByLiteralProperty() {
System.out.println("byLiteralProperty");
instance = where(var.directProperty.eq("propertymap")).uniqueResult(var);
assertNotNull(instance);
assertEquals("propertymap", instance.getDirectProperty());
}
@Test
public void ByNonExistantProperty() {
System.out.println("byNonExistantProperty");
assertEquals(2, where(var.notExistantProperty.isNull()).list(var).size());
assertEquals(0, where(var.notExistantProperty.isNotNull()).list(var).size());
}
@Test
public void ByNumericProperty() {
assertEquals(1, where(var.numericProperty.eq(10)).list(var).size());
assertEquals(1, where(var.numericProperty.eq(20)).list(var).size());
assertEquals(0, where(var.numericProperty.eq(30)).list(var).size());
}
@Test
@Ignore
public void ByReferenceProperty() {
// TODO
}
@Test
public void IdAndDirectProperties() {
System.out.println("idAndDirectProperties");
session.from(var).list(var.id, var.directProperty);
}
@Test
public void TypeOf() {
System.out.println("typeOf");
assertEquals(2, where(var.instanceOf(SimpleType.class)).list(var).size());
}
@Test
public void ListAccess() {
System.out.println("listAccess");
assertEquals(1, where(var.listProperty.get(1).directProperty.eq("nsprefix")).list(var).size());
}
@Test
public void ListAccess2() {
System.out.println("listAccess2");
assertEquals(1, where(var.listProperty.get(0).directProperty.eq("target_idspace")).list(var).size());
}
@Test
@Ignore
public void MapAccess() {
// TODO
}
@Test
@Ignore
public void DtoProjection() {
// TODO
}
@Test
public void MatchLocale() {
System.out.println("matchLocale");
assertEquals(1, where(var.localizedProperty.eq("fi")).list(var).size());
assertEquals(1, where(var.localizedProperty.eq("en")).list(var).size());
}
@Test
@Ignore
public void MatchLocale2() {
// FIXME
System.out.println("matchLocale2");
assertEquals(1, where(var.localizedProperty.ne("fi")).list(var).size());
assertEquals(1, where(var.localizedProperty.ne("en")).list(var).size());
}
@Test
public void LocalizedMap() {
System.out.println("localizedMap");
assertEquals(1, where(var.localizedAsMap.get(new Locale("fi")).eq("fi")).list(var).size());
assertEquals(1, where(var.localizedAsMap.get(new Locale("en")).eq("fi")).list(var).size());
assertEquals(0, where(var.localizedAsMap.get(new Locale("")).eq("fi")).list(var).size());
}
@Test
public void LocalizedMap2() {
System.out.println("localizedMap2");
assertEquals(1, where(var.localizedAsMap.get(new Locale("en")).eq("en")).list(var).size());
assertEquals(1, where(var.localizedAsMap.get(new Locale("fi")).eq("en")).list(var).size());
assertEquals(0, where(var.localizedAsMap.get(new Locale("")).eq("en")).list(var).size());
}
}