use of org.yakindu.base.expressions.expressions.PrimitiveValueExpression in project statecharts by Yakindu.
the class StextTestFactory method _createValue.
public static PrimitiveValueExpression _createValue(int i) {
PrimitiveValueExpression assignment = ExpressionsFactory.eINSTANCE.createPrimitiveValueExpression();
IntLiteral intLit = ExpressionsFactory.eINSTANCE.createIntLiteral();
intLit.setValue(i);
assignment.setValue(intLit);
return assignment;
}
use of org.yakindu.base.expressions.expressions.PrimitiveValueExpression in project statecharts by Yakindu.
the class Assert method assertExpressionEquals.
public static void assertExpressionEquals(String expected, Expression current) {
String currentValue = null;
if (current instanceof PrimitiveValueExpression) {
Literal literal = ((PrimitiveValueExpression) current).getValue();
if (literal instanceof BoolLiteral) {
currentValue = Boolean.toString(((BoolLiteral) literal).isValue());
} else if (literal instanceof IntLiteral) {
currentValue = Long.toString(((IntLiteral) literal).getValue());
} else if (literal instanceof DoubleLiteral) {
currentValue = Double.toString(((DoubleLiteral) literal).getValue());
} else if (literal instanceof FloatLiteral) {
currentValue = Double.toString(((FloatLiteral) literal).getValue());
} else if (literal instanceof StringLiteral) {
currentValue = (((StringLiteral) literal).getValue());
}
}
assertEquals(expected, currentValue);
}
use of org.yakindu.base.expressions.expressions.PrimitiveValueExpression in project statecharts by Yakindu.
the class FeatureParameterValueImpl method setValue.
protected void setValue(Literal literal) {
PrimitiveValueExpression expression = ExpressionsFactory.eINSTANCE.createPrimitiveValueExpression();
expression.setValue(literal);
setExpression(expression);
}
use of org.yakindu.base.expressions.expressions.PrimitiveValueExpression in project statecharts by Yakindu.
the class ModelSequencerStateTest method testStateCycle_WithLocalReactionsOnly.
/**
* The cycle sequence of a state that only consists of local reactions
* includes sequential processing of the local reactions.
*/
@SuppressWarnings("unused")
@Test
public void testStateCycle_WithLocalReactionsOnly() {
MinimalTSC tsc = new MinimalTSC();
VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER, tsc.s_scope);
// the first local reaction conforms to "e1 / x=42;"
LocalReaction lr1 = _createLocalReaction(tsc.s1, null);
_createRegularEventSpec(tsc.e1, (ReactionTrigger) lr1.getTrigger());
ReactionEffect lr1_eff = _createReactionEffect(lr1);
AssignmentExpression assign1 = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(42), lr1_eff);
// the secont local reaction conforms to "e1 [x==42] / x=0;"
LocalReaction lr2 = _createLocalReaction(tsc.s1, null);
_createRegularEventSpec(tsc.e1, (ReactionTrigger) lr2.getTrigger());
LogicalRelationExpression lr2_equals = ExpressionsFactory.eINSTANCE.createLogicalRelationExpression();
lr2_equals.setOperator(RelationalOperator.EQUALS);
ElementReferenceExpression lr2_varRef = ExpressionsFactory.eINSTANCE.createElementReferenceExpression();
lr2_varRef.setReference(v1);
PrimitiveValueExpression lr2_value = _createValue(42);
lr2_equals.setLeftOperand(lr2_varRef);
lr2_equals.setRightOperand(lr2_value);
((ReactionTrigger) lr2.getTrigger()).setGuard(createGuardExpression(lr2_equals));
ReactionEffect lr2_eff = _createReactionEffect(lr2);
AssignmentExpression assign2 = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(0), lr2_eff);
// the third local reaction conforms to: "[x==0] / x=1;"
LocalReaction lr3 = _createLocalReaction(tsc.s1, null);
LogicalRelationExpression lr3_equals = ExpressionsFactory.eINSTANCE.createLogicalRelationExpression();
lr3_equals.setOperator(RelationalOperator.EQUALS);
ElementReferenceExpression lr3_varRef = ExpressionsFactory.eINSTANCE.createElementReferenceExpression();
lr3_varRef.setReference(v1);
PrimitiveValueExpression lr3_value = _createValue(0);
lr3_equals.setLeftOperand(lr3_varRef);
lr3_equals.setRightOperand(lr3_value);
((ReactionTrigger) lr3.getTrigger()).setGuard(createGuardExpression(lr3_equals));
ReactionEffect lr3_eff = _createReactionEffect(lr3);
AssignmentExpression assign3 = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(1), lr3_eff);
ExecutionFlow flow = sequencer.transform(tsc.sc);
// test state with one outgoing transition
ExecutionState s1 = flow.getStates().get(0);
assertEquals(tsc.s1.getName(), s1.getSimpleName());
assertEquals(3, s1.getReactions().size());
assertNotNull(s1.getReactSequence());
Step step = s1.getReactSequence().getSteps().get(0);
Sequence _seq = assertedSequence(assertedSequence(assertedSequence(assertedSequence(assertedSequence(step).getSteps().get(0)).getSteps().get(0)).getSteps().get(0)).getSteps().get(0));
assertEquals(3, _seq.getSteps().size());
// check first local reaction
If _lr1 = (If) _seq.getSteps().get(0);
assertClass(ElementReferenceExpression.class, _lr1.getCheck().getCondition());
assertSame(s1.getReactions().get(0).getCheck().getCondition(), _lr1.getCheck().getCondition());
Call _lr1_eff_call = (Call) _lr1.getThenStep();
assertSame(s1.getReactions().get(0).getEffect(), _lr1_eff_call.getStep());
// check second local reaction
If _lr2 = (If) _seq.getSteps().get(1);
assertClass(LogicalAndExpression.class, _lr2.getCheck().getCondition());
assertSame(s1.getReactions().get(1).getCheck().getCondition(), _lr2.getCheck().getCondition());
Call _lr2_eff_call = (Call) _lr2.getThenStep();
assertSame(s1.getReactions().get(1).getEffect(), _lr2_eff_call.getStep());
// check the third local reaction
If _lr3 = (If) _seq.getSteps().get(2);
assertClass(LogicalRelationExpression.class, _lr3.getCheck().getCondition());
assertSame(s1.getReactions().get(2).getCheck().getCondition(), _lr3.getCheck().getCondition());
Call _lr3_eff_call = (Call) _lr3.getThenStep();
assertSame(s1.getReactions().get(2).getEffect(), _lr3_eff_call.getStep());
}
use of org.yakindu.base.expressions.expressions.PrimitiveValueExpression in project statecharts by Yakindu.
the class ModelSequencerStateTest method testStateCycle_WithLocalReactions.
@SuppressWarnings("unused")
@Test
public void testStateCycle_WithLocalReactions() {
SimpleFlatTSC tsc = new SimpleFlatTSC();
VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER, tsc.s_scope);
// the first local reaction conforms to "e1 / x=42;"
LocalReaction lr1 = _createLocalReaction(tsc.s1, null);
_createRegularEventSpec(tsc.e1, (ReactionTrigger) lr1.getTrigger());
ReactionEffect lr1_eff = _createReactionEffect(lr1);
AssignmentExpression assign1 = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(42), lr1_eff);
// the secont local reaction conforms to "e1 [x==42] / x=0;"
LocalReaction lr2 = _createLocalReaction(tsc.s1, null);
_createRegularEventSpec(tsc.e1, (ReactionTrigger) lr2.getTrigger());
LogicalRelationExpression lr2_equals = ExpressionsFactory.eINSTANCE.createLogicalRelationExpression();
lr2_equals.setOperator(RelationalOperator.EQUALS);
ElementReferenceExpression lr2_varRef = ExpressionsFactory.eINSTANCE.createElementReferenceExpression();
lr2_varRef.setReference(v1);
PrimitiveValueExpression lr2_value = _createValue(42);
lr2_equals.setLeftOperand(lr2_varRef);
lr2_equals.setRightOperand(lr2_value);
((ReactionTrigger) lr2.getTrigger()).setGuard(createGuardExpression(lr2_equals));
ReactionEffect lr2_eff = _createReactionEffect(lr2);
AssignmentExpression assign2 = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(0), lr2_eff);
// the third local reaction conforms to: "[x==0] / x=1;"
LocalReaction lr3 = _createLocalReaction(tsc.s1, null);
LogicalRelationExpression lr3_equals = ExpressionsFactory.eINSTANCE.createLogicalRelationExpression();
lr3_equals.setOperator(RelationalOperator.EQUALS);
ElementReferenceExpression lr3_varRef = ExpressionsFactory.eINSTANCE.createElementReferenceExpression();
lr3_varRef.setReference(v1);
PrimitiveValueExpression lr3_value = _createValue(0);
lr3_equals.setLeftOperand(lr3_varRef);
lr3_equals.setRightOperand(lr3_value);
((ReactionTrigger) lr3.getTrigger()).setGuard(createGuardExpression(lr3_equals));
ReactionEffect lr3_eff = _createReactionEffect(lr3);
AssignmentExpression assign3 = _createVariableAssignment(v1, AssignmentOperator.ASSIGN, _createValue(1), lr3_eff);
ExecutionFlow flow = sequencer.transform(tsc.sc);
// test state with one outgoing transition
ExecutionState s1 = flow.getStates().get(0);
ExecutionState s2 = flow.getStates().get(1);
assertEquals(tsc.s1.getName(), s1.getSimpleName());
assertEquals(tsc.s2.getName(), s2.getSimpleName());
assertEquals(4, s1.getReactions().size());
assertNotNull(s1.getReactSequence());
Step step = s1.getReactSequence().getSteps().get(0);
If _if = (If) assertedSequence(assertedSequence(assertedSequence(step).getSteps().get(0)).getSteps().get(0)).getSteps().get(0);
assertNotNull(_if.getThenStep());
assertClass(Call.class, _if.getThenStep());
assertNotNull(_if.getElseStep());
Sequence _seq = assertedSequence(assertedSequence(_if.getElseStep()).getSteps().get(0));
assertEquals(3, _seq.getSteps().size());
// check first local reaction
If _lr1 = (If) _seq.getSteps().get(0);
assertClass(ElementReferenceExpression.class, _lr1.getCheck().getCondition());
assertSame(s1.getReactions().get(0).getCheck().getCondition(), _lr1.getCheck().getCondition());
Call _lr1_eff_call = (Call) _lr1.getThenStep();
assertSame(s1.getReactions().get(0).getEffect(), _lr1_eff_call.getStep());
// check second local reaction
If _lr2 = (If) _seq.getSteps().get(1);
assertClass(LogicalAndExpression.class, _lr2.getCheck().getCondition());
assertSame(s1.getReactions().get(1).getCheck().getCondition(), _lr2.getCheck().getCondition());
Call _lr2_eff_call = (Call) _lr2.getThenStep();
assertSame(s1.getReactions().get(1).getEffect(), _lr2_eff_call.getStep());
// check the third local reaction
If _lr3 = (If) _seq.getSteps().get(2);
assertClass(LogicalRelationExpression.class, _lr3.getCheck().getCondition());
assertSame(s1.getReactions().get(2).getCheck().getCondition(), _lr3.getCheck().getCondition());
Call _lr3_eff_call = (Call) _lr3.getThenStep();
assertSame(s1.getReactions().get(2).getEffect(), _lr3_eff_call.getStep());
}
Aggregations