package com.mysema.rdfbean.sparql; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.IOException; import javax.servlet.ServletException; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import com.mysema.rdfbean.model.Format; import com.mysema.rdfbean.sesame.MemoryRepository; public class SPARQLImplicitLimitTest { private static SPARQLServlet servlet = new SPARQLServlet(); private static MemoryRepository repository; private final MockHttpServletRequest request = new MockHttpServletRequest(); private final MockHttpServletResponse response = new MockHttpServletResponse(); @BeforeClass public static void setUpClass() throws ServletException { repository = new MemoryRepository(); repository.initialize(); repository.load(Format.RDFXML, SPARQLImplicitLimitTest.class.getResourceAsStream("/foaf.rdf"), null, false); servlet = new SPARQLServlet(repository, 10); } @Test public void Implicit_Limit_with_Construct() throws ServletException, IOException { request.setParameter("query", "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o } ORDER BY ?s ?p ?o"); request.addHeader("Accept", Format.NTRIPLES.getMimetype()); servlet.service(request, response); String content = response.getContentAsString(); assertEquals(10, content.split("\n").length); } @Test public void Implicit_Limit_with_Select() throws ServletException, IOException { request.setParameter("query", "SELECT ?s ?p ?o WHERE { ?s ?p ?o }"); request.addHeader("Accept", Format.NTRIPLES.getMimetype()); servlet.service(request, response); } @Test public void Implicit_Limit_with_Ask() throws ServletException, IOException { request.setParameter("query", "ASK WHERE { ?s ?p ?o }"); request.addHeader("Accept", Format.NTRIPLES.getMimetype()); servlet.service(request, response); String content = response.getContentAsString(); assertTrue(content.contains("<boolean>true</boolean>")); } @Test public void Explicit_High_Limit_Overriden() throws ServletException, IOException { request.setParameter("query", "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o } ORDER BY ?s ?p ?o"); request.setParameter("limit", "30"); request.addHeader("Accept", Format.NTRIPLES.getMimetype()); servlet.service(request, response); String content = response.getContentAsString(); assertEquals(10, content.split("\n").length); } @Test public void Explicit_Low_Limit() throws ServletException, IOException { request.setParameter("query", "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o } ORDER BY ?s ?p ?o"); request.setParameter("limit", "5"); request.addHeader("Accept", Format.NTRIPLES.getMimetype()); servlet.service(request, response); String content = response.getContentAsString(); assertEquals(5, content.split("\n").length); } }