package org.openprovenance.prov.template;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.openprovenance.prov.model.Document;
import org.openprovenance.prov.model.Namespace;
import org.openprovenance.prov.model.ProvFactory;
import org.openprovenance.prov.model.QualifiedName;
import org.openprovenance.prov.model.TypedValue;
import org.openprovenance.prov.notation.Utility;
import org.openprovenance.prov.template.BindingsJson.BindingsBean;
import static org.openprovenance.prov.template.ExpandUtil.VAR_NS;
import static org.openprovenance.prov.template.ExpandUtil.TMPL_NS;
import junit.framework.TestCase;
public class BindingTest extends TestCase {
static final String EX_NS = "http://example.org/";
public BindingTest(String testName) {
super(testName);
}
ProvFactory pf=new org.openprovenance.prov.xml.ProvFactory();
QualifiedName var_a=pf.newQualifiedName(VAR_NS, "a", "var");
QualifiedName var_b=pf.newQualifiedName(VAR_NS, "b", "var");
QualifiedName var_c=pf.newQualifiedName(VAR_NS, "c", "var");
QualifiedName var_d=pf.newQualifiedName(VAR_NS, "d", "var");
public void testBindings1() {
Bindings bindings1=new Bindings(pf);
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av1", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av2", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av3", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv1", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv2", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv1", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv2", "ex"));
Groupings grp1=new Groupings();
grp1.addVariable(var_a);
grp1.addVariable(var_b);
grp1.addVariable(var_c);
System.out.println(grp1);
}
public void testBindings20() {
Bindings bindings1=new Bindings(pf);
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av1", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av2", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av3", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv1", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv2", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv1", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv2", "ex"));
List<TypedValue> ll=new LinkedList<TypedValue>();
ll.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "ignore", "app"), "Luc@example", pf.getName().XSD_STRING));
ll.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "ignore", "app"), "lm@soton", pf.getName().XSD_STRING));
bindings1.addAttribute(var_d, ll);
}
public void testBindings21() throws IOException, Throwable {
Bindings bindings1=new Bindings(pf);
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av1", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av2", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av3", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv1", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv2", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv1", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv2", "ex"));
List<TypedValue> ll1=new LinkedList<TypedValue>();
ll1.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "2dvalue_0_0", "app"), "Luc@example", pf.getName().XSD_STRING));
List<TypedValue> ll2=new LinkedList<TypedValue>();
ll2.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "2dvalue_1_0", "app"), "lm@soton", pf.getName().XSD_STRING));
bindings1.addAttribute(var_d, ll1);
bindings1.addAttribute(var_d, ll2);
String filename = "target/b21.provn";
bindingsTest(bindings1, filename);
bindings1.addVariableBindingsAsAttributeBindings();
bindings1.exportToJson("target/b21.json");
}
public void bindingsTest(Bindings bindings1, String filename) throws IOException, Throwable {
Document doc1=bindings1.toDocument();
Namespace.withThreadNamespace(doc1.getNamespace());
new Utility().writeDocument(doc1, filename, pf);
Bindings bindings2=Bindings.fromDocument(new Utility().readDocument(filename, pf),pf);
assertEquals(bindings1, bindings2);
}
public void testBindings21_v2() throws IOException, Throwable {
Bindings bindings1=new Bindings(pf);
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av1", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av2", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av3", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv1", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv2", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv1", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv2", "ex"));
List<TypedValue> ll1=new LinkedList<TypedValue>();
ll1.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "2dvalue_0_0", "app"), "Luc@example", pf.getName().XSD_STRING));
List<TypedValue> ll2=new LinkedList<TypedValue>();
ll2.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "2dvalue_1_0", "app"), "lm@soton", pf.getName().XSD_STRING));
bindings1.addAttribute(var_d, ll1);
bindings1.addAttribute(var_d, ll2);
String filename = "target/b21_v2.provn";
bindingsTest_v2(bindings1, filename);
}
public void bindingsTest_v2(Bindings bindings1, String filename) throws IOException, Throwable {
Document doc1=bindings1.toDocument_v2();
Namespace.withThreadNamespace(doc1.getNamespace());
new Utility().writeDocument(doc1, filename, pf);
Bindings bindings2=Bindings.fromDocument_v2(new Utility().readDocument(filename, pf),pf);
System.out.println("bindings2 --> " + bindings2);
System.out.println("bindings1 --> " + bindings1);
bindings1.addVariableBindingsAsAttributeBindings();
System.out.println("bindings1 --> " + bindings1);
assertEquals(bindings1, bindings2);
}
public void bindingsTest_v3(Bindings bindings_v1, String filename_root) throws IOException, Throwable {
Document doc1=bindings_v1.toDocument_v2();
Namespace.withThreadNamespace(doc1.getNamespace());
new Utility().writeDocument(doc1, filename_root+"_1.provn", pf);
bindings_v1.addVariableBindingsAsAttributeBindings();
Document doc_v2=bindings_v1.toDocument_v2();
BindingsBean bb=BindingsJson.toBean(bindings_v1);
BindingsJson.exportBean(filename_root+"_1.json",bb,true);
BindingsBean bb2=BindingsJson.importBean(new File(filename_root+"_1.json"));
Bindings bindings_v2=BindingsJson.fromBean(bb2,pf);
System.out.println("bindings1 --> " + bindings_v1);
System.out.println("bindings2 --> " + bindings_v2);
assertEquals(bindings_v1, bindings_v2);
}
public void testBindings21_v3() throws IOException, Throwable {
Bindings bindings1=new Bindings(pf);
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av1", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av2", "ex"));
bindings1.addVariable(var_a,
pf.newQualifiedName(EX_NS, "av3", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv1", "ex"));
bindings1.addVariable(var_b,
pf.newQualifiedName(EX_NS, "bv2", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv1", "ex"));
bindings1.addVariable(var_c,
pf.newQualifiedName(EX_NS, "cv2", "ex"));
List<TypedValue> ll1=new LinkedList<TypedValue>();
ll1.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "2dvalue_0_0", "app"), "Luc@example", pf.getName().XSD_STRING));
List<TypedValue> ll2=new LinkedList<TypedValue>();
ll2.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "2dvalue_1_0", "app"), "lm@soton", pf.getName().XSD_STRING));
ll2.add(pf.newAttribute(pf.newQualifiedName(TMPL_NS, "2dvalue_1_1", "app"), "jon@soton", pf.getName().XSD_STRING));
bindings1.addAttribute(var_d, ll1);
bindings1.addAttribute(var_d, ll2);
String filename = "target/b21_v3";
bindingsTest_v3(bindings1, filename);
}
}