package org.openprovenance.prov.rdf; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import junit.framework.TestCase; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.openprovenance.prov.model.Document; import org.openprovenance.prov.model.DocumentEquality; import org.openprovenance.prov.xml.ProvFactory; import org.openrdf.rio.RDFFormat; import org.openrdf.rio.Rio; @RunWith(value = Parameterized.class) public class RoundTripFromRdfTest extends TestCase { final ProvFactory pFactory=new org.openprovenance.prov.xml.ProvFactory(); final Ontology onto=new Ontology(pFactory); private String file; private String folder; private static String[] folders = { "issues", "examples" }; private static List<String> skip = Arrays .asList(new String[] { "prov-o-property-hadUsage-FAIL.ttl", "prov-o-property-hadGeneration-FAIL.ttl" }); public RoundTripFromRdfTest(String folder, String file) { this.file = file; this.folder = folder; } @Test public void testSaveAndReload() throws Exception { loadFromRdfSaveAndReload(this.folder + "/" + this.file, true); } @Parameters(name = "{index}: {0} {1}") public static Collection<Object[]> data() { Collection<Object[]> data = new ArrayList<Object[]>(); for (String folder : folders) { File current = new File("src/test/resources/" + folder); File[] allFiles = current.listFiles(); for (File file : allFiles) { if (!skip.contains(file.getName())) { data.add(new Object[] { folder, file.getName() }); } } } return data; } protected void loadFromRdfSaveAndReload(String file, Boolean compare) throws Exception { System.out.println("-------------- File: " + file); Utility u = new Utility(pFactory,onto); DocumentEquality de = new DocumentEquality(true,null); Document doc1 = u.parseRDF("src/test/resources/" + file); file = file.replace('/', '_'); RDFFormat format = Rio.getParserFormatForFileName(file, RDFFormat.TURTLE); u.dumpRDF(doc1, format, "target/" + file); Document doc2 = u.parseRDF("target/" + file); boolean result = de.check(doc1, doc2); // TODO: we want // assertTrue(result); if (!result && compare) { System.out.println(doc1); System.out.println("------------------"); System.out.println(doc2); } if (compare) { assertTrue(result); } if (!result) System.out.println("result is " + result); } }