package org.omg.bpmn.miwg.mvn; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.Collection; import java.util.LinkedList; import org.junit.Before; import org.junit.Test; import org.omg.bpmn.miwg.api.AnalysisJob; import org.omg.bpmn.miwg.api.AnalysisRun; import org.omg.bpmn.miwg.api.Variant; import org.omg.bpmn.miwg.api.input.ResourceAnalysisInput; import org.omg.bpmn.miwg.api.output.overview.OverviewWriter; import org.omg.bpmn.miwg.schema.SchemaAnalysisTool; import org.omg.bpmn.miwg.util.TestUtil; import org.omg.bpmn.miwg.xmlCompare.XmlCompareAnalysisTool; import org.omg.bpmn.miwg.xpath.XpathAnalysisTool; public class AnalysisFacadeTest { private static final String BPMN_RESOURCE = "/HTMLOutputTest/A.1.0-roundtrip.bpmn"; private static final String BPMN_RESOURCE_REFERENCE = "/HTMLOutputTest/A.1.0-roundtrip-minor-change.bpmn"; @Before public void cleanGeneratedHTMLFiles() { TestUtil.prepareHTMLReportFolder(TestUtil.REPORT_BASE_FOLDER_NAME); } @Test public void testMultipleResources() throws Exception { Collection<AnalysisJob> jobs = new LinkedList<AnalysisJob>(); jobs.add(new AnalysisJob("HTML Output Test 1", "A.1.0", Variant.Roundtrip, new ResourceAnalysisInput(getClass(), BPMN_RESOURCE), new ResourceAnalysisInput(getClass(), BPMN_RESOURCE_REFERENCE))); jobs.add(new AnalysisJob("HTML Output Test 2", "A.1.0", Variant.Roundtrip, new ResourceAnalysisInput(getClass(), BPMN_RESOURCE_REFERENCE), new ResourceAnalysisInput( getClass(), BPMN_RESOURCE_REFERENCE))); Collection<AnalysisRun> runs = AnalysisFacade.executeAnalysisJobs(jobs, TestUtil.REPORT_BASE_FOLDER_NAME); assertEquals(2, runs.size()); File overviewFile = OverviewWriter.getOverviewFileHtml(new File( TestUtil.REPORT_BASE_FOLDER_NAME)); assertTrue(overviewFile.exists()); assertTrue(overviewFile.length() > 0); } @Test public void testSingleResource() throws Exception { // Collect information about the analysis AnalysisJob job = new AnalysisJob("Yaoqiang BPMN Editor 3.0.1 Error", "A.1.0", Variant.Roundtrip, new ResourceAnalysisInput( getClass(), BPMN_RESOURCE), new ResourceAnalysisInput( getClass(), BPMN_RESOURCE_REFERENCE)); AnalysisRun run = AnalysisFacade.executeAnalysisJob(job); File xsdFile = new File(run.getResult(SchemaAnalysisTool.class) .getHTMLResultsLink(job)); File xpathFile = new File(run.getResult(XpathAnalysisTool.class) .getHTMLResultsLink(job)); File xmlCompareFile = new File(run.getResult( XmlCompareAnalysisTool.class).getHTMLResultsLink(job)); assertTrue(xsdFile.exists()); assertTrue(xpathFile.exists()); assertTrue(xmlCompareFile.exists()); assertTrue(xsdFile.length() > 0); assertTrue(xpathFile.length() > 0); assertTrue(xmlCompareFile.length() > 0); } @Test public void testMultipleFilesFromOneApplication() throws Exception { Collection<AnalysisJob> jobs = new LinkedList<AnalysisJob>(); jobs.add(new AnalysisJob("W4 BPMN+ Composer V.9.0", "A.1.0", Variant.Roundtrip, new ResourceAnalysisInput(getClass(), "/W4 BPMN+ Composer V.9.0/A.1.0-roundtrip.bpmn"), null)); jobs.add(new AnalysisJob("W4 BPMN+ Composer V.9.0", "A.2.0", Variant.Roundtrip, new ResourceAnalysisInput(getClass(), "/W4 BPMN+ Composer V.9.0/A.2.0-roundtrip.bpmn"), null)); AnalysisFacade.executeAnalysisJobs(jobs, null); } @Test public void testMultipleFilesFromTwoApplications() throws Exception { Collection<AnalysisJob> jobs = new LinkedList<AnalysisJob>(); jobs.add(new AnalysisJob("W4 BPMN+ Composer V.9.0", "A.1.0", Variant.Roundtrip, new ResourceAnalysisInput(getClass(), "/W4 BPMN+ Composer V.9.0/A.1.0-roundtrip.bpmn"), null)); jobs.add(new AnalysisJob("W4 BPMN+ Composer V.9.0", "A.2.0", Variant.Roundtrip, new ResourceAnalysisInput(getClass(), "/W4 BPMN+ Composer V.9.0/A.2.0-roundtrip.bpmn"), null)); jobs.add(new AnalysisJob("bpmn.io 0.5.0", "B.2.0", Variant.Roundtrip, new ResourceAnalysisInput(getClass(), "/bpmn.io 0.5.0/B.2.0-roundtrip.bpmn"), null)); AnalysisFacade.executeAnalysisJobs(jobs, null); } }