📄 wgtestsuite.java
字号:
} else if (inDevelopment) {
System.err.println(
"<rdf:Description rdf:about='"
+ testID.getURI()
+ "'>\n"
+ "<jjc:error rdf:resource='"
+ jjcNS
+ ParseException.errorCodeName(id)
+ "'/>\n</rdf:Description>");
}
}
}
class Test2 extends TestCase implements RDFErrorHandler {
//Resource testID;
Test2(String r) {
super(
WGTestSuite.this.testDir.relativize(r,
IRI.CHILD).toString());
// testID = r;
}
Model read(String file, boolean type) throws IOException {
if (!type) {
return loadNT(factory.open(file),file);
}
final String uri = file;
return loadRDF(
new InFactoryX(){
public InputStream open() throws IOException {
return factory.open(uri);
}
}
, this, uri);
}
public void warning(Exception e) {
error(0, e);
}
public void error(Exception e) {
error(1, e);
}
public void fatalError(Exception e) {
error(2, e);
}
private void error(int level, Exception e) {
// println(e.getMessage());
if (e instanceof ParseException) {
int eCode = ((ParseException) e).getErrorNumber();
if (eCode == ERR_SYNTAX_ERROR) {
String msg = e.getMessage();
if (msg.indexOf("Unusual") != -1
|| msg.indexOf("Internal") != -1) {
System.err.println(getName());
System.err.println(msg);
fail(msg);
}
/*
if (checkMessages) {
System.err.println(testID.getURI());
System.err.println(msg);
}
*/
}
onError(level, eCode);
} /*else if (e instanceof SAXParseException) {
onError(level, ARPErrorNumbers.WARN_BAD_XML);
} */
else if (e instanceof SAXException) {
fail("Not expecting a SAXException: " + e.getMessage());
} else {
fail("Not expecting an Exception: " + e.getMessage());
}
}
private void println(String m) {
System.err.println(m);
}
void onError(int level, int num) {
String msg =
"Parser reports unexpected "
+ errorLevelName[level]
+ ": "
+ ParseException.errorCodeName(num);
println(msg);
fail(msg);
}
}
class PositiveTest2 extends NegativeTest2 {
String out;
boolean outtype;
PositiveTest2(
String uri,
String in,
boolean intype,
String out,
boolean outtype) {
this(uri, in, intype, out, outtype, new int[] {
});
}
PositiveTest2(
String uri,
String in,
boolean intype,
String out,
boolean outtype,
int errs[]) {
super(uri, in, intype, errs);
expectedLevel = -1;
this.out = out;
this.outtype = outtype;
}
protected void runTest() {
try {
Model m2 = read(out, outtype);
super.runTest();
if (!m1.isIsomorphicWith(m2)) {
// save(output);
System.err.println("=====");
m1.write(System.err,"N-TRIPLE");
System.err.println("=====");
m2.write(System.err,"N-TRIPLE");
System.err.println("=====");
fail("Models were not equal.");
}
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
fail(e.getMessage());
}
}
void initExpected() {
expected = new HashSet();
}
}
class WarningTest2 extends PositiveTest2 {
WarningTest2(
String uri,
String in,
boolean intype,
String out,
boolean outtype,
int errs[]) {
super(uri, in, intype, out, outtype, errs);
expectedLevel = 0;
}
}
class NegativeTest2 extends Test2 {
Model m1;
Set expected;
int expectedLevel = 1;
String in;
boolean intype;
private Set found = new HashSet();
private int errorCnt[] = new int[] { 0, 0, 0 };
NegativeTest2(String uri, String in, boolean intype, int errs[]) {
super(uri);
this.in = in;
this.intype = intype;
initExpected(errs);
}
/*
void save(Property p) {
if (factory.savable()) {
String uri = testID.getProperty(p).getResource().getURI();
int suffix = uri.lastIndexOf('.');
String saveUri = uri.substring(0, suffix) + ".ntx";
// System.out.println("Saving to " + saveUri);
try {
OutputStream w = factory.openOutput(saveUri);
m1.write(w, "N-TRIPLE");
w.close();
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
}
*/
void initExpected(int errs[]) {
if ( errs == null )
return;
if (errs.length != 0)
expected = new HashSet();
for (int i = 0; i < errs.length; i++) {
expected.add(new Integer(errs[i]));
}
}
protected void runTest() {
try {
m1 = read(in, intype);
/*
if (expectedLevel == 1
&& expected == null
&& errorCnt[2] == 0
&& errorCnt[1] == 0)
save(input);
*/
} catch (JenaException re) {
// System.out.println(re.toString());
if (re.getCause() instanceof SAXException) {
// ignore.
} else {
fail(re.getMessage());
}
} catch (IOException ioe) {
fail(ioe.getMessage());
}
// TODO: not for 2.3. Tidy up this code a bit, I don't understand it.
HashSet ex2 = expected==null?null:new HashSet(expected);
if (expected==null)
for (int j = 2; j >= 0; j--)
if (j != expectedLevel) {
if (errorCnt[j] != 0)
ex2 = new HashSet();
}
if (ex2 != null && !ex2.equals(found)) {
Set dup = new HashSet();
dup.addAll(found);
dup.removeAll(ex2);
ex2.removeAll(found);
if (expected != null)
expected.removeAll(found);
Iterator it = ex2.iterator();
while (it.hasNext()) {
int eCode = ((Integer) it.next()).intValue();
String msg =
"Expected error "
+ ParseException.errorCodeName(eCode)
+ ", was not detected.";
if (errorCnt[2] == 0) {
fail(msg);
} else {
System.err.println("Test: " + getName());
System.err.println(msg);
}
}
it = dup.iterator();
while (it.hasNext())
fail(
"Detected error "
+ ParseException.errorCodeName(
((Integer) it.next()).intValue())
+ ", was not expected.");
}
for (int j = 2; j >= 0; j--)
if (j == expectedLevel) {
if (errorCnt[j] == 0 && (j != 1 || errorCnt[2] == 0))
fail(
"No "
+ errorLevelName[expectedLevel]
+ " in input file of class "
+ getClass().getName());
} else if (expected == null) {
if (errorCnt[j] != 0)
fail(
"Inappropriate "
+ errorLevelName[j]
+ " in input file of class "
+ getClass().getName());
}
}
void onError(int level, int id) {
Integer err = new Integer(id);
found.add(err);
errorCnt[level]++;
if (expected != null) {
if (!expected.contains(err))
super.onError(level, id);
}
/*else if ( inDevelopment ) {
System.err.println(
"<rdf:Description rdf:about='"
+ testID.getURI()
+ "'>\n"
+ "<jjc:error rdf:resource='"
+ jjcNS
+ JenaReader.errorCodeName(id)
+ "'/>\n</rdf:Description>");
}
*/
}
}
TestCase createPositiveTest(
String uri,
String in,
boolean intype,
String out,
boolean outtype) {
return new PositiveTest2(uri, in, intype, out, outtype);
}
TestCase createWarningTest(
String uri,
String in,
boolean intype,
String out,
boolean outtype,
int e[]) {
return new WarningTest2(uri, in, intype, out, outtype, e);
}
TestCase createNegativeTest(
String uri,
String in,
boolean intype,
int e[]) {
return new NegativeTest2(uri, in, intype, e);
}
}
/*
* (c) Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 Hewlett-Packard Development Company, LP
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
* WGTestSuite.java
*
* Created on November 28, 2001, 10:00 AM
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -