package com.mysema.rdfbean.sparql;
import static org.junit.Assert.*;
import java.io.IOException;
import java.io.StringWriter;
import javax.servlet.ServletException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.mysema.rdfbean.model.Format;
import com.mysema.rdfbean.model.QueryLanguage;
import com.mysema.rdfbean.model.RDFConnection;
import com.mysema.rdfbean.model.SPARQLQuery;
import com.mysema.rdfbean.sesame.MemoryRepository;
public class JSONResultProducerTest {
private static MemoryRepository repository;
private RDFConnection connection;
@BeforeClass
public static void setUpClass() throws ServletException {
repository = new MemoryRepository();
repository.initialize();
repository.load(Format.RDFXML, SPARQLImplicitLimitTest.class.getResourceAsStream("/foaf.rdf"), null, false);
}
@AfterClass
public static void tearDownClass() {
repository.close();
}
@Before
public void setUp() {
connection = repository.openConnection();
}
@After
public void tearDown() {
if (connection != null) {
connection.close();
}
}
@Test
public void Ask() throws IOException {
JSONResultProducer producer = new JSONResultProducer();
SPARQLQuery query = connection.createQuery(QueryLanguage.SPARQL, "ASK { ?s ?p ?o }");
StringWriter writer = new StringWriter();
producer.stream(query, writer);
assertEquals("{\"head\":null,\"boolean\":true}", writer.toString());
}
@Test
public void Select() throws IOException {
JSONResultProducer producer = new JSONResultProducer();
SPARQLQuery query = connection.createQuery(QueryLanguage.SPARQL, "SELECT * WHERE { ?s ?p ?o } LIMIT 4");
StringWriter writer = new StringWriter();
producer.stream(query, writer);
System.out.println(writer.toString());
String response = writer.toString();
assertTrue(response.startsWith("{\"head\":{\"vars\":[\"s\",\"p\",\"o\"]},\"results\":{\"bindings\":[{\"s\":"));
assertTrue(response.endsWith("}}]}}"));
}
}