/*
* 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 org.apache.jena.rdf.model.Model ;
import org.apache.jena.rdf.model.ModelFactory ;
import org.apache.jena.riot.Lang ;
import org.apache.jena.riot.RDFDataMgr ;
import org.apache.jena.riot.RDFLanguages ;
import org.apache.jena.riot.RiotException ;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.core.DatasetGraphFactory ;
import org.apache.jena.sparql.junit.EarlReport ;
import org.apache.jena.sparql.util.IsoMatcher ;
public class UnitTestEval extends LangTestCase
{
String input ;
String output ;
String baseIRI ;
Lang lang ;
public UnitTestEval(String name, String testURI, String input, String output, String baseIRI, Lang lang, EarlReport earl)
{
super(name, testURI, earl) ;
this.input = input ;
this.output = output ;
this.baseIRI = baseIRI ;
this.lang = lang ;
}
@Override
protected void _setUp()
{}
@Override
protected void _tearDown()
{}
@Override
public void runTestForReal()
{
// Could generalise run4() to cover both cases.
// run3() predates dataset reading and is more tested.
if ( RDFLanguages.isTriples(lang) )
run3() ;
else
run4() ;
}
private void run4() {
DatasetGraph dsg = DatasetGraphFactory.create() ;
try {
if ( baseIRI != null )
RDFDataMgr.read(dsg, input, baseIRI, lang) ;
else
RDFDataMgr.read(dsg, input, lang) ;
Lang outLang = RDFLanguages.filenameToLang(output, Lang.NQUADS) ;
DatasetGraph results = DatasetGraphFactory.create() ;
try {
RDFDataMgr.read(results, output, outLang) ;
} catch (RiotException ex) {
fail("Failed to read results: "+ex.getMessage()) ;
}
boolean b = isomorphic(dsg, results) ;
if ( !b )
{
System.out.println("**** Test: "+getName()) ;
System.out.println("---- Parsed");
RDFDataMgr.write(System.out, dsg, Lang.TRIG) ;
System.out.println("---- Expected");
RDFDataMgr.write(System.out, results, Lang.TRIG) ;
System.out.println("--------");
}
assertTrue("Datasets not isomorphic", b) ;
} catch (RiotException ex)
{
// Catch and rethrow - debugging.
throw ex ;
}
catch (RuntimeException ex)
{
ex.printStackTrace(System.err) ;
throw ex ; }
}
private boolean isomorphic(DatasetGraph dsg1, DatasetGraph dsg2) {
return IsoMatcher.isomorphic(dsg1, dsg2) ;
}
// Triples test.
private void run3() {
Model model = ModelFactory.createDefaultModel() ;
try {
if ( baseIRI != null )
RDFDataMgr.read(model, input, baseIRI, lang) ;
else
RDFDataMgr.read(model, input, lang) ;
Lang outLang = RDFLanguages.filenameToLang(output, Lang.NQUADS) ;
Model results = ModelFactory.createDefaultModel() ;
try {
RDFDataMgr.read(results, output, outLang) ;
} catch (RiotException ex) {
fail("Failed to read results: "+ex.getMessage()) ;
}
boolean b = model.isIsomorphicWith(results) ;
if ( !b )
{
//model.isIsomorphicWith(results) ;
System.out.println("---- Parsed");
model.write(System.out, "TTL") ;
System.out.println("---- Expected");
results.write(System.out, "TTL") ;
System.out.println("--------");
}
assertTrue("Models not isomorphic", b) ;
} catch (RiotException ex)
{
// Catch and rethrow - debugging.
throw ex ;
}
catch (RuntimeException ex)
{
ex.printStackTrace(System.err) ;
throw ex ; }
}
}