org.openrdf.repository.TupleQueryResultTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sesame-store-testsuite Show documentation
Show all versions of sesame-store-testsuite Show documentation
Test suite for SAIL and Repository API
/*
* Licensed to Aduna under one or more contributor license agreements.
* See the NOTICE.txt file distributed with this work for additional
* information regarding copyright ownership.
*
* Aduna licenses this file to you under the terms of the Aduna BSD
* License (the "License"); you may not use this file except in compliance
* with the License. See the LICENSE.txt file distributed with this work
* for the full License.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package org.openrdf.repository;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.hamcrest.CoreMatchers.is;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openrdf.query.QueryLanguage;
import org.openrdf.query.TupleQueryResult;
import org.openrdf.rio.RDFFormat;
import org.openrdf.rio.RDFParseException;
import org.openrdf.rio.UnsupportedRDFormatException;
public abstract class TupleQueryResultTest {
private Repository rep;
private RepositoryConnection con;
private String emptyResultQuery;
private String singleResultQuery;
private String multipleResultQuery;
@Before
public void setUp()
throws Exception
{
rep = createRepository();
con = rep.getConnection();
buildQueries();
addData();
}
@After
public void tearDown()
throws Exception
{
con.close();
con = null;
rep.shutDown();
rep = null;
}
protected Repository createRepository()
throws Exception
{
Repository repository = newRepository();
repository.initialize();
RepositoryConnection con = repository.getConnection();
con.clear();
con.clearNamespaces();
con.close();
return repository;
}
protected abstract Repository newRepository()
throws Exception;
/*
* build some simple SeRQL queries to use for testing the result set object.
*/
private void buildQueries() {
StringBuilder query = new StringBuilder();
query.append("SELECT * ");
query.append("FROM {X} P {Y} ");
query.append("WHERE X != X ");
emptyResultQuery = query.toString();
query = new StringBuilder();
query.append("SELECT DISTINCT P ");
query.append("FROM {} dc:publisher {P} ");
query.append("USING NAMESPACE ");
query.append(" dc = ");
singleResultQuery = query.toString();
query = new StringBuilder();
query.append("SELECT DISTINCT P, D ");
query.append("FROM {} dc:publisher {P}; ");
query.append(" dc:date {D} ");
query.append("USING NAMESPACE ");
query.append(" dc = ");
multipleResultQuery = query.toString();
}
private void addData()
throws IOException, UnsupportedRDFormatException, RDFParseException, RepositoryException
{
InputStream defaultGraph = TupleQueryResultTest.class.getResourceAsStream("/testcases/default-graph-1.ttl");
try {
con.add(defaultGraph, "", RDFFormat.TURTLE);
}
finally {
defaultGraph.close();
}
}
@Test
public void testGetBindingNames()
throws Exception
{
TupleQueryResult result = con.prepareTupleQuery(QueryLanguage.SERQL, multipleResultQuery).evaluate();
try {
List headers = result.getBindingNames();
assertThat("first header element", headers.get(0), is("P"));
assertThat("second header element", headers.get(1), is("D"));
}
finally {
result.close();
}
}
/*
* deprecated
public void testIsDistinct()
throws Exception
{
TupleQueryResult result = con.prepareTupleQuery(QueryLanguage.SERQL, emptyResultQuery).evaluate();
try {
if (result.isDistinct()) {
fail("query result should not be distinct.");
}
}
finally {
result.close();
}
result = con.prepareTupleQuery(QueryLanguage.SERQL, singleResultQuery).evaluate();
try {
if (!result.isDistinct()) {
fail("query result should be distinct.");
}
}
finally {
result.close();
}
}
*/
@Test
public void testIterator()
throws Exception
{
TupleQueryResult result = con.prepareTupleQuery(QueryLanguage.SERQL, multipleResultQuery).evaluate();
try {
int count = 0;
while (result.hasNext()) {
result.next();
count++;
}
assertTrue("query should have multiple results.", count > 1);
}
finally {
result.close();
}
}
@Test
public void testIsEmpty()
throws Exception
{
TupleQueryResult result = con.prepareTupleQuery(QueryLanguage.SERQL, emptyResultQuery).evaluate();
try {
assertFalse("Query result should be empty", result.hasNext());
}
finally {
result.close();
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy