use of org.yakindu.sct.model.sgraph.State in project statecharts by Yakindu.
the class STextJavaValidatorTest method checkUnboundEntryPoints.
@Test
public void checkUnboundEntryPoints() {
statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnboundDefaultEntryPoints.sct");
Iterator<EObject> iter = statechart.eAllContents();
// create and add triggers to all transitions to prevent to trigger
// additional warnings
// (see Check in SGrapJavaValidator transitionsWithNoGuard)
Trigger trigger = StextFactoryImpl.init().createDefaultTrigger();
while (iter.hasNext()) {
EObject element = iter.next();
if (element instanceof Transition) {
((Transition) element).setTrigger(trigger);
validator.validate(element, diagnostics, new HashMap<>());
}
if (element instanceof State) {
validator.validate(element, diagnostics, new HashMap<>());
}
}
assertIssueCount(diagnostics, 4);
assertError(diagnostics, TRANSITION_UNBOUND_DEFAULT_ENTRY_POINT);
assertError(diagnostics, REGION_UNBOUND_DEFAULT_ENTRY_POINT);
resetDiagnostics();
statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnboundEntryPoints02.sct");
iter = statechart.eAllContents();
while (iter.hasNext()) {
EObject element = iter.next();
if (element instanceof Transition) {
((Transition) element).setTrigger(trigger);
validator.validate(element, diagnostics, new HashMap<>());
}
if (element instanceof State) {
validator.validate(element, diagnostics, new HashMap<>());
}
}
assertIssueCount(diagnostics, 4);
}
use of org.yakindu.sct.model.sgraph.State in project statecharts by Yakindu.
the class SGraphJavaValidationTest method vertexNotReachable_AcceptThroughSubchoice.
/**
* A transition to a sub choice is considered implies reachability.
*/
@Test
public void vertexNotReachable_AcceptThroughSubchoice() {
prepareStateTest();
State stateA = factory.createState();
Region subRegion = factory.createRegion();
state.getRegions().add(subRegion);
State stateC = factory.createState();
subRegion.getVertices().add(stateC);
Choice choice = factory.createChoice();
subRegion.getVertices().add(choice);
Transition t1 = factory.createTransition();
t1.setSource(stateA);
t1.setTarget(choice);
Transition t2 = factory.createTransition();
t2.setSource(choice);
t2.setTarget(stateC);
validate(state);
assertNoIssues(diagnostics);
}
use of org.yakindu.sct.model.sgraph.State in project statecharts by Yakindu.
the class SGraphJavaValidationTest method synchronizationOutgoingTransitionCount.
@Test
public void synchronizationOutgoingTransitionCount() {
statechart = loadStatechart("SyncOutgoingTransition.sct");
State state = firstNamed(EcoreUtil2.eAllOfType(statechart, State.class), "StateB");
Synchronization sync = (Synchronization) state.getOutgoingTransitions().get(0).getTarget();
assertFalse(validator.validate(sync, diagnostics, new HashMap<Object, Object>()));
assertIssueCount(diagnostics, 1);
assertError(diagnostics, ISSUE_SYNCHRONIZATION_TRANSITION_OUTGOING);
}
use of org.yakindu.sct.model.sgraph.State in project statecharts by Yakindu.
the class SGraphJavaValidationTest method cleanExit.
/**
* Tests a scenario where no issues for an exit nodes exists.
*/
@Test
public void cleanExit() {
prepareStateTest();
Region subRegion = factory.createRegion();
state.getRegions().add(subRegion);
Exit exit = factory.createExit();
subRegion.getVertices().add(exit);
State s = factory.createState();
subRegion.getVertices().add(s);
Transition t = factory.createTransition();
t.setTarget(exit);
t.setSource(s);
assertTrue(validate(exit));
assertNoIssues(diagnostics);
}
use of org.yakindu.sct.model.sgraph.State in project statecharts by Yakindu.
the class SGraphJavaValidationTest method orthogonalTransition.
@Test
public void orthogonalTransition() {
statechart = loadStatechart("OrthogonalTransition.sct");
State state = firstNamed(EcoreUtil2.eAllOfType(statechart, State.class), "B2");
Transition trans = state.getOutgoingTransitions().get(0);
assertTrue(validator.validate(trans, diagnostics, new HashMap<Object, Object>()));
assertNoIssues(diagnostics);
}
Aggregations