package org.openprovenance.prov.notation;
import java.io.IOException;
import java.util.Arrays;
import org.openprovenance.prov.model.Document;
import org.openprovenance.prov.model.Entity;
import org.openprovenance.prov.model.Namespace;
import org.openprovenance.prov.model.Statement;
import org.openprovenance.prov.xml.UncheckedTestException;
public class ExtensionRoundTripFromJavaTest extends
org.openprovenance.prov.xml.ExtensionRoundTripFromJavaTest {
final Utility u = new Utility();
public ExtensionRoundTripFromJavaTest(String name) {
super(name);
}
public String extension() {
return ".provn";
}
public boolean checkTest(String name) {
// TODO: prov-n does not support hadMember with multiple entities
return !(name.contains("qualified") || name.contains("member2") || name.contains("member3")
|| name.contains("Membership3") || name.contains("Membership4"));
}
@Override
public Document readDocument(String file1) {
try {
//return (Document) u.convertASNToJavaBean(file1,pFactory);
return null;
} catch (Throwable e) {
throw new UncheckedTestException(e);
}
}
@Override
public void writeDocument(Document doc, String file) {
Namespace.withThreadNamespace(doc.getNamespace());
String s = u.convertBeanToASN(doc,pFactory);
u.writeTextToFile(s, file);
}
@Override
public boolean checkSchema(String name) {
return false;
}
public void NOmakeDocAndTest(Statement[] statements, String file,
Statement[] opt, boolean check) {
Document doc = pFactory.newDocument();
for (int i = 0; i < statements.length; i++) {
doc.getStatementOrBundle().add(statements[i]);
}
updateNamespaces(doc);
check = check && checkTest(file);
String file1 = (opt == null) ? file : file + "-S";
file1 = file1 + extension();
String s = u.convertBeanToASN(doc,pFactory);
u.writeTextToFile(s, file1);
Document doc2;
try {
doc2 = (Document) u.convertASNToJavaBean(file1,pFactory);
compareDocuments(doc, doc2, check && checkTest(file1));
if (opt != null) {
doc.getStatementOrBundle().addAll(Arrays.asList(opt));
String file2 = file + "-M";
file2 = file2 + extension();
String s2 = u.convertBeanToASN(doc,pFactory);
u.writeTextToFile(s2, file2);
Document doc3 = (Document) u.convertASNToJavaBean(file2,pFactory);
compareDocuments(doc, doc3, check && checkTest(file2));
}
return;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
assertTrue(false);
}
}