package de.uniba.dsg.bpmnspector.schematron.descriptive; import api.ValidationResult; import api.ValidationException; import de.uniba.dsg.bpmnspector.schematron.TestCase; import org.junit.Test; /** * Test class for testing Constraint EXT.036 * * @author Philipp Neugebauer * @version 1.0 * */ public class Ext036 extends TestCase { private static final String ERRORMESSAGESOURCE = "For a Process: Of the types of FlowNode, only Activities, Gateways, and Events can be the source. However, Activities that are Event SubProcesses are not allowed to be a source"; private static final String ERRORMESSAGETARGET = "For a Process: Of the types of FlowNode, only Activities, Gateways, and Events can be the target. However, Activities that are Event SubProcesses are not allowed to be a target"; @Test public void testConstraintCallChoreographyFail() throws ValidationException { assertTests("fail_call_choreography.bpmn"); } @Test public void testConstraintChoreographyTaskFail() throws ValidationException { assertTests("fail_choreography_task.bpmn"); } @Test public void testConstraintSubChoreographyFail() throws ValidationException { assertTests("fail_sub_choreography.bpmn"); } private void assertTests(String fileName) throws ValidationException { ValidationResult result = verifyInvalidResult(createFile(fileName), 3); assertViolation(result.getViolations().get(0), ERRORMESSAGESOURCE, "//bpmn:*[./@id = //bpmn:sequenceFlow/@sourceRef and ancestor::bpmn:process][1]", 10); assertViolation(result.getViolations().get(1), ERRORMESSAGETARGET, "//bpmn:*[./@id = //bpmn:sequenceFlow/@targetRef and ancestor::bpmn:process][1]", 10); assertViolation(result.getViolations().get(2), "A Process must not contain Choreography Activities", "//bpmn:process[0]", 3); } @Override protected String getExtNumber() { return "036"; } }