use of org.yakindu.sct.model.stext.stext.LocalReaction in project statecharts by Yakindu.
the class ModelSequencerStateReactionTest method testSingleLocalTimeTrigger.
/**
*/
@SuppressWarnings("unused")
@Test
public void testSingleLocalTimeTrigger() {
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 = _createTimeTriggeredReaction(s, TimeEventType.AFTER, _createValue(2), TimeUnit.MILLISECOND);
AssignmentExpression assign = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(42), (ReactionEffect) timeTriggeredReaction.getEffect());
ExecutionFlow flow = sequencer.transform(sc);
Scope timerScope = flow.getScopes().get(1);
assertTrue(timerScope.getDeclarations().get(0) instanceof TimeEvent);
TimeEvent te = (TimeEvent) timerScope.getDeclarations().get(0);
// assert that the reaction check checks the time event
ExecutionState _s = flow.getStates().get(0);
// assert the scheduling of the time event during state entry
assertNotNull(_s.getEntryAction());
Sequence entryAction = (Sequence) _s.getEntryAction();
ScheduleTimeEvent ste = (ScheduleTimeEvent) entryAction.getSteps().get(0);
assertSame(te, ste.getTimeEvent());
PrimitiveValueExpression value = (PrimitiveValueExpression) ste.getTimeValue();
assertIntLiteral(2, value.getValue());
assertNotNull(_s.getExitAction());
Sequence exitAction = (Sequence) _s.getExitAction();
UnscheduleTimeEvent ute = (UnscheduleTimeEvent) exitAction.getSteps().get(0);
assertSame(te, ute.getTimeEvent());
}
use of org.yakindu.sct.model.stext.stext.LocalReaction in project statecharts by Yakindu.
the class StatechartEnterExistActionTest method testSCLocalReaction.
/**
* The transition sequence must contain all exit actions for parent states
* that will be left by a transition.
*/
@SuppressWarnings("unused")
@Test
public void testSCLocalReaction() {
Statechart sc = _createStatechart("sc");
{
VariableDefinition v = _createVariableDefinition("v", TYPE_INTEGER, getOrCreateInternalScope(sc));
LocalReaction entryAction = _createEntryAction(sc);
ReactionEffect effect = _createReactionEffect(entryAction);
_createVariableAssignment(v, AssignmentOperator.ADD_ASSIGN, _createValue(1), effect);
LocalReaction exitAction = _createExitAction(sc);
effect = _createReactionEffect(exitAction);
_createVariableAssignment(v, AssignmentOperator.ADD_ASSIGN, _createValue(1), effect);
Region r = _createRegion("r", sc);
{
Entry e = _createEntry(EntryKind.INITIAL, null, r);
State s1 = _createState("s1", r);
Transition t = _createTransition(e, s1);
}
}
ExecutionFlow flow = sequencer.transform(sc);
ExecutionRegion region = flow.getRegions().get(0);
assertEquals(0, flow.getReactions().size());
assertedOrder(flow.getEnterSequences().get(0), null, Lists.newArrayList(new StepLeaf(flow.getEntryAction()), new StepLeaf(region.getEnterSequences().get(0))));
assertedOrder(flow.getExitSequence(), null, Lists.newArrayList(new StepLeaf(region.getExitSequence()), new StepLeaf(flow.getExitAction())));
}
use of org.yakindu.sct.model.stext.stext.LocalReaction in project statecharts by Yakindu.
the class StextTestFactory method _createLocalReaction.
public static LocalReaction _createLocalReaction(State parent, EventSpec triggerEvent) {
LocalReaction reaction = _createLocalReaction(triggerEvent);
Scope scope = getOrCreateSimpleScope(parent);
scope.getReactions().add(reaction);
return reaction;
}
use of org.yakindu.sct.model.stext.stext.LocalReaction in project statecharts by Yakindu.
the class StextTestFactory method _createLocalReaction.
public static LocalReaction _createLocalReaction(EventSpec triggerEvent) {
LocalReaction reaction = StextFactory.eINSTANCE.createLocalReaction();
ReactionTrigger trigger = StextFactory.eINSTANCE.createReactionTrigger();
_createReactionEffect(reaction);
if (triggerEvent != null)
trigger.getTriggers().add(triggerEvent);
reaction.setTrigger(trigger);
return reaction;
}
use of org.yakindu.sct.model.stext.stext.LocalReaction in project statecharts by Yakindu.
the class StextTestFactory method _createEntryAssignment.
public static void _createEntryAssignment(VariableDefinition v1, State s1, int value) {
LocalReaction entryAction = _createEntryAction(s1);
_createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(value), (ReactionEffect) entryAction.getEffect());
}
Aggregations