blob: 0d44933adcdcdb1de711675086dc3956f22e4e88 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.apache.jena.riot.langsuite ;
import junit.framework.Test ;
import junit.framework.TestSuite ;
import org.apache.jena.rdf.model.Resource ;
import org.apache.jena.riot.RDFLanguages ;
import org.apache.jena.riot.RiotException ;
import org.apache.jena.sparql.junit.EarlReport ;
import org.apache.jena.util.junit.TestFactoryManifest ;
import org.apache.jena.util.junit.TestUtils ;
import org.apache.jena.vocabulary.RDF ;
public class FactoryTestRiot extends TestFactoryManifest
{
public static String assumedRootURIex = "http://example/base/" ;
public static String assumedRootURITurtle = "http://www.w3.org/2013/TurtleTests/" ;
public static String assumedRootURITriG = "http://www.w3.org/2013/TriGTests/" ;
public static EarlReport report = null ;
public static TestSuite make(String manifest) {
return make(manifest, null, null);
}
public static TestSuite make(String manifest, Resource dftTestType, String labelPrefix) {
return new FactoryTestRiot(dftTestType, labelPrefix).process(manifest);
}
private Resource dftTestType ;
private String labelPrefix ;
public FactoryTestRiot(Resource dftTestType, String labelPrefix)
{
this.dftTestType = dftTestType ;
this.labelPrefix = labelPrefix ;
}
@Override
public Test makeTest(Resource manifest, Resource item, String testName, Resource action, Resource result)
{
try
{
Resource r = TestUtils.getResource(item, RDF.type) ;
if ( r == null )
r = dftTestType ;
if ( r == null )
throw new RiotException("Can't determine the test type") ;
if ( labelPrefix != null )
testName = labelPrefix+testName ;
// In Turtle tests, the action directly names the file to process.
Resource input = action ;
Resource output = result ;
if ( r.equals(VocabLangRDF.TestPositiveSyntaxTTL) )
return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TURTLE, report) ;
if ( r.equals(VocabLangRDF.TestNegativeSyntaxTTL) )
return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TURTLE, report) ;
if ( r.equals(VocabLangRDF.TestPositiveSyntaxTriG) )
return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TRIG, report) ;
if ( r.equals(VocabLangRDF.TestNegativeSyntaxTriG) )
return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.TRIG, report) ;
if ( r.equals(VocabLangRDF.TestPositiveSyntaxNT) )
return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NTRIPLES, report) ;
if ( r.equals(VocabLangRDF.TestNegativeSyntaxNT) )
return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NTRIPLES, report) ;
if ( r.equals(VocabLangRDF.TestPositiveSyntaxNQ) )
return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NQUADS, report) ;
if ( r.equals(VocabLangRDF.TestNegativeSyntaxNQ) )
return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.NQUADS, report) ;
if ( r.equals(VocabLangRDF.TestPositiveSyntaxRJ) )
return new UnitTestSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.RDFJSON, report) ;
if ( r.equals(VocabLangRDF.TestNegativeSyntaxRJ) )
return new UnitTestBadSyntax(testName, item.getURI(), input.getURI(), RDFLanguages.RDFJSON, report) ;
if ( r.equals(VocabLangRDF.TestSurpressed ))
return new UnitTestSurpressed(testName, item.getURI(), report) ;
// Eval.
if ( r.equals(VocabLangRDF.TestEvalTTL) ) {
String base = rebase(input, assumedRootURITurtle) ;
return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), base, RDFLanguages.TURTLE, report) ;
}
if ( r.equals(VocabLangRDF.TestEvalTriG) ) {
String base = rebase(input, assumedRootURITriG) ;
return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), base, RDFLanguages.TRIG, report) ;
}
if ( r.equals(VocabLangRDF.TestNegativeEvalTTL) )
return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.TURTLE, report) ;
if ( r.equals(VocabLangRDF.TestNegativeEvalTriG) )
return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.TRIG, report) ;
if ( r.equals(VocabLangRDF.TestEvalNT) )
return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), null, RDFLanguages.NTRIPLES, report) ;
if ( r.equals(VocabLangRDF.TestNegativeEvalNT) )
return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.NTRIPLES, report) ;
if ( r.equals(VocabLangRDF.TestEvalRJ) ) {
String base = rebase(input, assumedRootURIex) ;
return new UnitTestEval(testName, item.getURI(), input.getURI(), result.getURI(), base, RDFLanguages.RDFJSON, report) ;
}
if ( r.equals(VocabLangRDF.TestNegativeEvalRJ) )
return new UnitTestBadEval(testName, item.getURI(), input.getURI(), RDFLanguages.RDFJSON, report) ;
System.err.println("Unrecognized turtle test : ("+r+")" + testName) ;
return null ;
} catch (Exception ex)
{
ex.printStackTrace(System.err) ;
System.err.println("Failed to grok test : " + testName) ;
return null ;
}
}
private static String rebase(Resource input, String baseIRI) {
String x = input.getLocalName() ;
// Yuk, yuk, yuk.
baseIRI = baseIRI+x ;
return baseIRI ;
}
}