package de.uniba.dsg.bpmnspector.schematron.analytic; import api.ValidationException; import api.ValidationResult; import de.uniba.dsg.bpmnspector.schematron.TestCase; import org.junit.Test; /** * Test class for testing Constraint EXT.059 * * @author Matthias Geiger * @version 1.0 * */ public class Ext059 extends TestCase { private static final String ERR_MSG_DEFAULT = "An Event Sub-Process MUST define at least one of the following EventDefinitions: " + "messageEventDefinition, errorEventDefinition, escalationEventDefinition, compensationEventDefinition, " + "conditionalEventDefinition, signalEventDefinition."; private static final String ERR_CANCEL = " A cancelEventDefinition is not allowed for Event Sub-Processes."; private static final String ERR_LINK = " A linkEventDefinition is not allowed for Event Sub-Processes."; private static final String ERR_TERMINATE = " A terminateEventDefinition is not allowed for Event Sub-Processes."; private static final String ERR_NONINTERRUPTING_COMPENSATE = " Moreover, a compensateEventDefinition is not allowed for Non-Interrupting StartEvents."; private static final String ERR_NONINTERRUPTING_ERROR = " Moreover, an errorEventDefinition is not allowed for Non-Interrupting StartEvents."; @Test public void testConstraintFailNoEventDef() throws ValidationException { ValidationResult result = verifyInvalidResult(createFile("EXT059_fail_no_eventDef.bpmn"), 1); assertViolation(result.getViolations().get(0), ERR_MSG_DEFAULT, "//bpmn:subProcess[@triggeredByEvent='true']/bpmn:startEvent[0]", 28); } @Test public void testConstraintFailIllegalCancelEventDef() throws ValidationException { ValidationResult result = verifyInvalidResult(createFile("EXT059_fail_illegal_cancelEventDef.bpmn"), 1); assertViolation(result.getViolations().get(0), ERR_MSG_DEFAULT+ERR_CANCEL, "//bpmn:subProcess[@triggeredByEvent='true']/bpmn:startEvent[0]", 28); } @Test public void testConstraintFailIllegalLinkEventDef() throws ValidationException { ValidationResult result = verifyInvalidResult(createFile("EXT059_fail_illegal_linkEventDef.bpmn"), 1); assertViolation(result.getViolations().get(0), ERR_MSG_DEFAULT+ERR_LINK, "//bpmn:subProcess[@triggeredByEvent='true']/bpmn:startEvent[0]", 28); } @Test public void testConstraintFailIllegalTerminateEventDef() throws ValidationException { ValidationResult result = verifyInvalidResult(createFile("EXT059_fail_illegal_terminateEventDef.bpmn"), 1); assertViolation(result.getViolations().get(0), ERR_MSG_DEFAULT+ERR_TERMINATE, "//bpmn:subProcess[@triggeredByEvent='true']/bpmn:startEvent[0]", 28); } @Test public void testConstraintFailNonInterruptingIllegalCompensateEventDef() throws ValidationException { ValidationResult result = verifyInvalidResult(createFile("EXT059_fail_nonInterrupting_illegal_compensateEventDef.bpmn"), 1); assertViolation(result.getViolations().get(0), ERR_MSG_DEFAULT+ERR_NONINTERRUPTING_COMPENSATE, "//bpmn:subProcess[@triggeredByEvent='true']/bpmn:startEvent[@isInterrupting='false'][0]", 28); } @Test public void testConstraintFailNonInterruptingIllegalErrorEventDef() throws ValidationException { ValidationResult result = verifyInvalidResult(createFile("EXT059_fail_nonInterrupting_illegal_errorEventDef.bpmn"), 1); assertViolation(result.getViolations().get(0), ERR_MSG_DEFAULT+ERR_NONINTERRUPTING_ERROR, "//bpmn:subProcess[@triggeredByEvent='true']/bpmn:startEvent[@isInterrupting='false'][0]", 28); } @Test public void testConstraintSuccessInterruptingErrorEventDef() throws ValidationException { verifyValidResult(createFile("EXT059_success_interrupting_errorEventDef.bpmn")); } @Test public void testConstraintSuccessInterruptingCompensateEventDef() throws ValidationException { verifyValidResult(createFile("EXT059_success_interrupting_compensateEventDef.bpmn")); } @Override protected String getExtNumber() { return "059"; } }