package au.com.langdale.cimtoole.test; import java.io.PrintWriter; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import au.com.langdale.cimtoole.CIMToolPlugin; import au.com.langdale.cimtoole.project.SplitModelImporter; import au.com.langdale.kena.IO; import au.com.langdale.kena.OntModel; import com.hp.hpl.jena.vocabulary.RDFS; public class ValidationTest extends ProjectTest { private static final String SEP = "\t"; public final String LOG_NS = "http://langdale.com.au/2007/log#"; protected OntModel diagnostics; private static PrintWriter record; @Override protected void setUp() throws Exception { super.setUp(); setupSchema(); if(record == null) record = new PrintWriter(getSmallCasesFolder() + "TEST_RECORD.txt"); } @Override protected void tearDown() throws Exception { record.println(); record.flush(); } @Override protected void setupProfile(String name) throws CoreException { record.print("Profile: " + name + SEP); super.setupProfile(getSmallCasesFolder() + name); } protected void assertProblem(String subject, String message) { record.print("Expected result: " + message + " " + subject + SEP); assertTrue("no diagnostics found, expected: " + message, diagnostics.size() > 0); Deferred d = find( diagnostics, pattern(subject, LOG_NS + "hasProblem", ANY), pattern(ANY, RDFS.comment.getURI(), message)); assertFalse("incorrect diagnostics found, expected: " + message, d.getCount() == 0); assertFalse("duplicate diagnostic reports found", d.getCount() > 1); Deferred e = find( diagnostics, pattern(ANY, LOG_NS + "hasProblem", ANY)); assertTrue("spurious diagnostic reports found", d.getCount() == e.getCount()); } protected void assertNoProblems() { record.print("Expected result: no problems." + SEP); IO.print(diagnostics); assertTrue("no validation messages expected", diagnostics.size() == 0); } protected void readTestdata(String sample) throws CoreException { record.print("Model: " + sample + SEP); readBaseModel(sample); workspace.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor); IFile diagfile = getModelRelated("diagnostic"); assertTrue("diagnostics created", diagfile.exists() ); diagnostics = CIMToolPlugin.getCache().getOntologyWait(diagfile); } protected void readTestdata(String base, String diff) throws CoreException { record.print("Base model: " + base + SEP + "Incremental model: " + diff + SEP); readBaseModel(base); String pathname = getSmallCasesFolder() + diff; IWorkspaceRunnable op = new SplitModelImporter(increment, pathname, MODEL_NS, profile, model); op.run(monitor); assertTrue("incremental model created", increment.exists() ); workspace.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor); IFile diagfile = getIncrementRelated("diagnostic"); assertTrue("diagnostics created", diagfile.exists() ); diagnostics = CIMToolPlugin.getCache().getOntologyWait(diagfile); } private void readBaseModel(String sample) throws CoreException { String pathname = getSmallCasesFolder() + sample; IWorkspaceRunnable op = new SplitModelImporter(model, pathname, MODEL_NS, profile, null); op.run(monitor); assertTrue("model created", model.exists() ); } }