use of org.yakindu.sct.model.sgraph.Scope in project statecharts by Yakindu.
the class STextExpressionParser method createInterfaceScope.
public Scope createInterfaceScope(String contextScope) {
ParserRule parserRule = XtextFactory.eINSTANCE.createParserRule();
parserRule.setName(InterfaceScope.class.getSimpleName());
IParseResult result = parser.parse(parserRule, new StringReader(contextScope));
return (Scope) result.getRootASTElement();
}
use of org.yakindu.sct.model.sgraph.Scope in project statecharts by Yakindu.
the class STextExpressionParser method createInternalScope.
public Scope createInternalScope(String contextScope) {
ParserRule parserRule = XtextFactory.eINSTANCE.createParserRule();
parserRule.setName(InternalScope.class.getSimpleName());
IParseResult result = parser.parse(parserRule, new StringReader(contextScope));
return (Scope) result.getRootASTElement();
}
use of org.yakindu.sct.model.sgraph.Scope in project statecharts by Yakindu.
the class StateImpl method getLocalReactions.
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
public EList<Reaction> getLocalReactions() {
EList<Reaction> result = new BasicInternalEList<Reaction>(Reaction.class);
EList<Scope> scopes = getScopes();
for (Scope scope : scopes) {
result.addAll(scope.getReactions());
}
return result;
}
use of org.yakindu.sct.model.sgraph.Scope in project statecharts by Yakindu.
the class ModelSequencerStateReactionTest method testAlwaysLocalReaction.
/**
* Local reactions must be created for behavior with 'always' trigger
*/
@SuppressWarnings("unused")
@Test
public void testAlwaysLocalReaction() {
Statechart sc = _createStatechart("test");
Scope scope = _createInterfaceScope("interface", sc);
VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER, scope);
Region r = _createRegion("main", sc);
State s = _createState("s", r);
LocalReaction timeTriggeredReaction = _createLocalReaction(s, StextFactory.eINSTANCE.createAlwaysEvent());
AssignmentExpression assign = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(42), (ReactionEffect) timeTriggeredReaction.getEffect());
ExecutionFlow flow = sequencer.transform(sc);
ExecutionState _s = flow.getStates().get(0);
// assert that a local reaction is created
Reaction reaction = _s.getReactions().get(0);
PrimitiveValueExpression pve = (PrimitiveValueExpression) reaction.getCheck().getCondition();
assertBoolLiteral(true, pve.getValue());
}
use of org.yakindu.sct.model.sgraph.Scope in project statecharts by Yakindu.
the class ModelSequencerStateReactionTest method testEntryActionWithGuard.
/**
* If a entry trigger is combined with a guard condition then the entry
* action is executed conditionally with this trigger.
*/
@Test
public void testEntryActionWithGuard() {
Statechart sc = _createStatechart("test");
Scope scope = _createInterfaceScope("interface", sc);
VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER, scope);
Region r = _createRegion("main", sc);
Entry e = _createEntry(EntryKind.INITIAL, null, r);
State s1 = _createState("s1", r);
State s2 = _createState("s2", r);
_createTransition(e, s1);
_createTransition(s1, s2);
LocalReaction entryAction = _createEntryAction(s2);
_createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(42), (ReactionEffect) entryAction.getEffect());
((ReactionTrigger) entryAction.getTrigger()).setGuard(createGuardExpression(_createValue(true)));
ExecutionFlow flow = sequencer.transform(sc);
ExecutionState _s1 = flow.getStates().get(0);
ExecutionState _s2 = flow.getStates().get(1);
assertEquals(s1.getName(), _s1.getSimpleName());
assertEquals(s2.getName(), _s2.getSimpleName());
Sequence _entrySeq = (Sequence) _s2.getEntryAction();
assertClass(If.class, _entrySeq.getSteps().get(0));
assertClass(PrimitiveValueExpression.class, ((If) _entrySeq.getSteps().get(0)).getCheck().getCondition());
assertAssignment(((Sequence) ((If) _entrySeq.getSteps().get(0)).getThenStep()).getSteps().get(0), "v1", AssignmentOperator.ASSIGN, "42");
}
Aggregations