📄 wgtestsuite.java
字号:
/*
(c) Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 Hewlett-Packard Development Company, LP
[See end of file]
$Id: WGTestSuite.java,v 1.35 2007/01/02 11:49:14 andy_seaborne Exp $
*/
package com.hp.hpl.jena.rdf.arp.test;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.xml.sax.SAXException;
import com.hp.hpl.jena.iri.IRI;
import com.hp.hpl.jena.iri.IRIFactory;
import com.hp.hpl.jena.rdf.arp.ARPErrorNumbers;
import com.hp.hpl.jena.rdf.arp.JenaReader;
import com.hp.hpl.jena.rdf.arp.ParseException;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFErrorHandler;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.RDFWriter;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.rdf.model.impl.PropertyImpl;
import com.hp.hpl.jena.rdf.model.impl.ResourceImpl;
import com.hp.hpl.jena.reasoner.rulesys.RDFSRuleReasonerFactory;
import com.hp.hpl.jena.reasoner.test.WGReasonerTester;
import com.hp.hpl.jena.shared.BrokenException;
import com.hp.hpl.jena.shared.JenaException;
import com.hp.hpl.jena.shared.impl.JenaParameters;
import com.hp.hpl.jena.shared.wg.TestInputStreamFactory;
import com.hp.hpl.jena.vocabulary.OWLResults;
import com.hp.hpl.jena.vocabulary.RDF;
import com.hp.hpl.jena.vocabulary.RDFS;
import com.hp.hpl.jena.vocabulary.ReasonerVocabulary;
/**
*
* @author jjc
*/
class WGTestSuite extends TestSuite implements ARPErrorNumbers {
static private Resource jena2;
static private Model testResults;
static private void initResults() {
logging = true;
testResults = ModelFactory.createDefaultModel();
jena2 = testResults.createResource(BASE_RESULTS_URI + "#jena2");
jena2.addProperty(RDFS.comment,
testResults.createLiteral(
"<a xmlns=\"http://www.w3.org/1999/xhtml\" href=\"http://jena.sourceforce.net/\">Jena2</a> is a" +
" Semantic Web framework in Java" +
" available from <a xmlns=\"http://www.w3.org/1999/xhtml\" href=\"http://www.sourceforce.net/projects/jena\">" +
"sourceforge</a> CVS.",
true)
);
jena2.addProperty(RDFS.label, "Jena2");
testResults.setNsPrefix("results", OWLResults.NS);
}
static void logResult(Resource test, int type) {
// if (!logging) return;
// Resource rslt;
// switch (type) {
// case WGReasonerTester.NOT_APPLICABLE:
// return;
// case WGReasonerTester.FAIL:
// rslt = OWLResults.FailingRun;
// break;
// case WGReasonerTester.PASS:
// rslt = OWLResults.PassingRun;
// break;
// case WGReasonerTester.INCOMPLETE:
// rslt = OWLResults.IncompleteRun;
// break;
// default:
// throw new BrokenException("Unknown result type");
// }
// Resource result =
// testResults
// .createResource()
// .addProperty(RDF.type, OWLResults.TestRun)
// .addProperty(RDF.type, rslt)
// .addProperty(OWLResults.test, test )
// .addProperty(OWLResults.system, jena2);
}
private static boolean logging = false;
private static String BASE_RESULTS_URI = "http://jena.sourceforge.net/data/rdf-results.rdf";
static public boolean checkMessages = false;
static private boolean doSemanticTests() {
return ARPTests.internet;
}
static private boolean inDevelopment = false;
Model loadRDF(InFactoryX in, RDFErrorHandler eh, String base)
throws IOException {
Model model = ModelFactory.createDefaultModel();
JenaReader jr = new JenaReader();
if (eh != null)
jr.setErrorHandler(eh);
jr.setProperty("error-mode", "strict");
if ( base.indexOf("/xmlns/") != -1
|| base.indexOf("/comments/") != -1 )
jr.setProperty("embedding","true");
InputStream inx = in.open();
jr.read(model, inx, base);
inx.close();
return model;
}
static Model loadNT(InputStream in, String base) throws IOException {
Model model = ModelFactory.createDefaultModel();
model.read(in, base, "N-TRIPLE");
in.close();
return model;
}
static private class DummyTest extends TestCase {
DummyTest() {
super("save results");
}
public void runTest() throws IOException {
if (logging) {
RDFWriter w = testResults.getWriter("RDF/XML-ABBREV");
w.setProperty("xmlbase",BASE_RESULTS_URI );
OutputStream out;
try {
out = new FileOutputStream("/tmp/rdf-results.rdf");
}
catch (Exception e){
out = System.out;
}
w.write(testResults,out,BASE_RESULTS_URI);
out.close();
}
}
}
static String testNS =
"http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#";
static String jjcNS = "http://jcarroll.hpl.hp.com/testSchema#";
// static private String approved = "APPROVED";
static private Property status;
static private Property input;
static private Property output;
static private Property warning;
static private Property errorCodes;
static {
status = new PropertyImpl(testNS, "status");
input = new PropertyImpl(testNS, "inputDocument");
output = new PropertyImpl(testNS, "outputDocument");
warning = new PropertyImpl(testNS, "warning");
errorCodes = new PropertyImpl(jjcNS, "error");
}
static private Resource rdfxml =
new ResourceImpl(testNS, "RDF-XML-Document");
static private Resource ntriple = new ResourceImpl(testNS, "NT-Document");
// static private Resource falseDoc = new ResourceImpl(testNS, "False-Document");
private IRI testDir;
private Act noop = new Act() {
public void act(Resource r) {
}
};
private Act semTest = new Act() {
public void act(Resource r) {
if (doSemanticTests()){
// addTest(r, new ReasoningTest(r));
}
}
};
TestInputStreamFactory factory;
static private Collection misc =
Arrays.asList(
new String[] { "http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-uri-substructure/error001" });
private Map behaviours = new HashMap();
{
behaviours
.put(new ResourceImpl(testNS + "PositiveParserTest"), new Act() {
public void act(Resource r) {
// if (r.getProperty(status).getString().equals(approved))
// if (r.getURI().endsWith("rdfms-xmllang/test004"))
if (r.hasProperty(warning)) {
addTest(r, new WarningTest(r));
} else {
addTest(r, new PositiveTest(r));
}
}
});
behaviours
.put(new ResourceImpl(testNS + "NegativeParserTest"), new Act() {
public void act(Resource r) {
// if (r.getProperty(status).getString().equals(approved))
addTest(r, new NegativeTest(r));
}
});
behaviours.put(new ResourceImpl(testNS + "False-Document"), noop);
behaviours.put(new ResourceImpl(testNS + "RDF-XML-Document"), noop);
behaviours.put(new ResourceImpl(testNS + "NT-Document"), noop);
behaviours.put(
new ResourceImpl(testNS + "PositiveEntailmentTest"),
semTest);
behaviours.put(
new ResourceImpl(testNS + "NegativeEntailmentTest"),
semTest);
behaviours
.put(new ResourceImpl(testNS + "MiscellaneousTest"), new Act() {
public void act(Resource r) {
String uri = r.getURI();
if (!misc.contains(uri))
System.err.println(
"MiscellaneousTest: " + uri + " - ignored!");
}
});
}
private Model loadRDF(final TestInputStreamFactory fact,
final String file) {
Model m = null;
String base = fact.getBase().toString();
if (!base.endsWith("/"))
base = base + "/";
try {
InputStream in = fact.fullyOpen(file);
if (in == null )
return null;
in.close();
m = loadRDF(new InFactoryX(){
public InputStream open() throws IOException {
return fact.fullyOpen(file);
} }, null, base + file);
} catch (JenaException e) {
// System.out.println(e.getMessage());
throw e;
} catch (Exception e) {
// e.printStackTrace();
if (file.equals("Manifest.rdf")) {
System.err.println("Failed to open Manifest.rdf");
e.printStackTrace();
}
}
return m;
}
/** Creates new WGTestSuite
This is a private snapshot of the RDF Test Cases Working Draft's
data.
*/
String createMe;
WGTestSuite(TestInputStreamFactory fact, String name, boolean dynamic) {
super(name);
factory = fact;
testDir = fact.getBase();
if (dynamic)
try {
// String wgDir = ARPTests.wgTestDir.toString();
System.err.println(testDir+", "+fact.getMapBase());
wgReasoner = new WGReasonerTester("Manifest.rdf",
"testing/wg/");
// wgDir);
createMe =
"new "
+ this.getClass().getName()
+ "("
+ fact.getCreationJava()
+ ", \""
+ name
+ "\", false )";
Model m = loadRDF(fact, "Manifest.rdf");
// System.out.println("OK2");
Model extra = loadRDF(fact, "Manifest-extra.rdf");
// System.out.println("OK3");
Model wrong = loadRDF(fact, "Manifest-wrong.rdf");
// System.out.println("OK4");
if (extra != null)
m = m.add(extra);
if (wrong != null)
m = m.difference(wrong);
// if (m == null)
// System.out.println("uggh");
StmtIterator si =
m.listStatements( null, RDF.type, (RDFNode) null );
while (si.hasNext()) {
Statement st = si.nextStatement();
Act action = (Act) behaviours.get(st.getObject());
if (action == null) {
System.err.println(
"Unknown test class: "
+ ((Resource) st.getObject()).getURI());
} else {
action.act(st.getSubject());
}
}
if ( ARPTests.internet) {
initResults();
addTest(new DummyTest());
}
} catch (RuntimeException re) {
re.printStackTrace();
throw re;
} catch (Exception e) {
e.printStackTrace();
throw new JenaException( e );
}
}
// private ZipFile zip;
static TestSuite suite(IRI testDir, String d, String nm) {
return new WGTestSuite(
new TestInputStreamFactory(testDir, d),
nm,
true);
}
static TestSuite suite(IRI testDir, IRI d, String nm) {
return new WGTestSuite(
new TestInputStreamFactory(testDir, d),
nm,
true);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -