TestSuite negativeTests = new TestSuite();
negativeTests.setName("Negative Syntax Tests");
// Read manifest and create declared test cases
Repository manifestRep = new SailRepository(new MemoryStore());
manifestRep.initialize();
RepositoryConnection con = manifestRep.getConnection();
URL manifestURL = SeRQLParserTestCase.class.getResource(MANIFEST_FILE);
RDFFormat format = RDFFormat.forFileName(MANIFEST_FILE, RDFFormat.TURTLE);
con.add(manifestURL, base(manifestURL.toExternalForm()), format);
String query = "SELECT testName, query, result " + "FROM {} mf:name {testName}; "
+ " mf:action {query}; " + " mf:result {result} " + "USING NAMESPACE "
+ " mf = <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#>, "
+ " mfx = <http://www.openrdf.org/test-manifest-extensions#>, "
+ " qt = <http://www.w3.org/2001/sw/DataAccess/tests/test-query#>";
TupleResult tests = con.prepareTupleQuery(QueryLanguage.SERQL, query).evaluate();
while (tests.hasNext()) {
BindingSet testBindings = tests.next();
String testName = testBindings.getValue("testName").toString();
String queryFile = testBindings.getValue("query").toString();
Value result = testBindings.getValue("result");
if (MFX_CORRECT.equals(result)) {
positiveTests.addTest(factory.createTest(testName, queryFile, result));
}
else if (MFX_PARSE_ERROR.equals(result)) {
negativeTests.addTest(factory.createTest(testName, queryFile, result));
}
else {
logger.warn("Unexpected result value for test \"" + testName + "\": " + result);
}
}
tests.close();
con.close();
manifestRep.shutDown();
suite.addTest(positiveTests);
suite.addTest(negativeTests);
return suite;
}