Browse Source

Test updates for FeatureCalls

benjamin.schwertfeger@gmail.com 13 years ago
parent
commit
79aa200a44

+ 15 - 11
test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/Assert.java

@@ -6,37 +6,32 @@ import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import java.sql.CallableStatement;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 
 import org.yakindu.sct.model.sexec.Call;
 import org.yakindu.sct.model.sexec.Execution;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
 import org.yakindu.sct.model.sexec.ExecutionRegion;
 import org.yakindu.sct.model.sexec.ExecutionState;
-import org.yakindu.sct.model.sexec.ExitState;
 import org.yakindu.sct.model.sexec.HistoryEntry;
-import org.yakindu.sct.model.sexec.Reaction;
 import org.yakindu.sct.model.sexec.SaveHistory;
 import org.yakindu.sct.model.sexec.Sequence;
 import org.yakindu.sct.model.sexec.StateCase;
 import org.yakindu.sct.model.sexec.StateSwitch;
 import org.yakindu.sct.model.sexec.Step;
-import org.yakindu.sct.model.sexec.Trace;
-import org.yakindu.sct.model.sexec.transformation.test.Assert.StepNode;
-import org.yakindu.sct.model.sgraph.State;
-import org.yakindu.sct.model.stext.stext.Assignment;
+import org.yakindu.sct.model.stext.stext.AssignmentExpression;
 import org.yakindu.sct.model.stext.stext.AssignmentOperator;
 import org.yakindu.sct.model.stext.stext.BoolLiteral;
 import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.FeatureCall;
 import org.yakindu.sct.model.stext.stext.IntLiteral;
 import org.yakindu.sct.model.stext.stext.Literal;
 import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
+import org.yakindu.sct.model.stext.stext.TypedElementReferenceExpression;
 
 public class Assert {
 
@@ -62,10 +57,19 @@ public class Assert {
 			AssignmentOperator operator, String value) {
 		assertTrue(step instanceof Execution);
 		Execution exec = (Execution) step;
-		assertTrue(exec.getStatement() instanceof Assignment);
-		Assignment assignment = (Assignment) exec.getStatement();
+		assertTrue(exec.getStatement() instanceof AssignmentExpression);
+		AssignmentExpression assignment = (AssignmentExpression) exec
+				.getStatement();
 		assertEquals(operator, assignment.getOperator());
-		assertEquals(variableName, assignment.getVarRef().getName());
+
+		Expression varRef = assignment.getVarRef();
+		if (varRef instanceof TypedElementReferenceExpression) {
+			TypedElementReferenceExpression elementRef = (TypedElementReferenceExpression) varRef;
+			assertEquals(variableName, elementRef.getReference().getName());
+		} else if (varRef instanceof FeatureCall) {
+			FeatureCall call = (FeatureCall) varRef;
+			assertEquals(variableName, call.getFeature().getName());
+		}
 		assertExpressionEquals(value, assignment.getExpression());
 	}
 

+ 52 - 29
test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/ModelSequencerStateReactionTest.java

@@ -4,7 +4,22 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
-import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.*;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.TYPE_INTEGER;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createEventDefinition;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createInterfaceScope;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createLocalReaction;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createOncycleEventSpec;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createReactionTrigger;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createRegion;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createRegularEventSpec;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createState;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createStatechart;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createTimeEventSpec;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createTimeTriggeredReaction;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createTransition;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createValue;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createVariableAssignment;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createVariableDefinition;
 
 import org.junit.Test;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
@@ -22,10 +37,9 @@ import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.model.sgraph.Statement;
 import org.yakindu.sct.model.sgraph.Transition;
-import org.yakindu.sct.model.stext.stext.Assignment;
+import org.yakindu.sct.model.stext.stext.AssignmentExpression;
 import org.yakindu.sct.model.stext.stext.AssignmentOperator;
 import org.yakindu.sct.model.stext.stext.BoolLiteral;
-import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.EventDefinition;
 import org.yakindu.sct.model.stext.stext.IntLiteral;
 import org.yakindu.sct.model.stext.stext.Literal;
@@ -40,6 +54,7 @@ import org.yakindu.sct.model.stext.stext.ReactionTrigger;
 import org.yakindu.sct.model.stext.stext.StextFactory;
 import org.yakindu.sct.model.stext.stext.TimeEventType;
 import org.yakindu.sct.model.stext.stext.TimeUnit;
+import org.yakindu.sct.model.stext.stext.TypedElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.VariableDefinition;
 
 public class ModelSequencerStateReactionTest extends ModelSequencerTest {
@@ -58,7 +73,7 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 
 		Statement s = behaviorMapping.buildCondition(tr1);
 
-		assertTrue(s instanceof ElementReferenceExpression);
+		assertClass(TypedElementReferenceExpression.class, s);
 	}
 
 	/**
@@ -82,8 +97,10 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 		Statement s = behaviorMapping.buildCondition(tr1);
 
 		assertTrue(s instanceof LogicalOrExpression);
-		assertTrue(((LogicalOrExpression) s).getLeftOperand() instanceof ElementReferenceExpression);
-		assertTrue(((LogicalOrExpression) s).getRightOperand() instanceof ElementReferenceExpression);
+		assertClass(TypedElementReferenceExpression.class,
+				((LogicalOrExpression) s).getLeftOperand());
+		assertClass(TypedElementReferenceExpression.class,
+				((LogicalOrExpression) s).getRightOperand());
 	}
 
 	/**
@@ -146,19 +163,23 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 		Reaction reaction = behaviorMapping.mapTransition(t);
 
 		assertTrue(reaction.getCheck().getCondition() instanceof LogicalOrExpression);
-		assertTrue(((LogicalOrExpression) reaction.getCheck().getCondition())
-				.getLeftOperand() instanceof ElementReferenceExpression);
-		assertTrue(((LogicalOrExpression) reaction.getCheck().getCondition())
-				.getRightOperand() instanceof ElementReferenceExpression);
-
-		assertEquals(e1.getName(),
-				((ElementReferenceExpression) ((LogicalOrExpression) reaction
+		assertClass(TypedElementReferenceExpression.class,
+				((LogicalOrExpression) reaction.getCheck().getCondition())
+						.getLeftOperand());
+		assertClass(TypedElementReferenceExpression.class,
+				((LogicalOrExpression) reaction.getCheck().getCondition())
+						.getRightOperand());
+
+		assertEquals(
+				e1.getName(),
+				((TypedElementReferenceExpression) ((LogicalOrExpression) reaction
 						.getCheck().getCondition()).getLeftOperand())
-						.getValue().getName());
-		assertEquals(e2.getName(),
-				((ElementReferenceExpression) ((LogicalOrExpression) reaction
+						.getReference().getName());
+		assertEquals(
+				e2.getName(),
+				((TypedElementReferenceExpression) ((LogicalOrExpression) reaction
 						.getCheck().getCondition()).getRightOperand())
-						.getValue().getName());
+						.getReference().getName());
 	}
 
 	@Test
@@ -190,14 +211,16 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 		PrimitiveValueExpression guardCheck = (PrimitiveValueExpression) and
 				.getRightOperand();
 
-		assertTrue(triggerCheck.getLeftOperand() instanceof ElementReferenceExpression);
-		assertTrue(triggerCheck.getRightOperand() instanceof ElementReferenceExpression);
+		assertClass(TypedElementReferenceExpression.class,
+				triggerCheck.getLeftOperand());
+		assertClass(TypedElementReferenceExpression.class,
+				triggerCheck.getRightOperand());
 		assertEquals(e1.getName(),
-				((ElementReferenceExpression) triggerCheck.getLeftOperand())
-						.getValue().getName());
+				((TypedElementReferenceExpression) triggerCheck
+						.getLeftOperand()).getReference().getName());
 		assertEquals(e2.getName(),
-				((ElementReferenceExpression) triggerCheck.getRightOperand())
-						.getValue().getName());
+				((TypedElementReferenceExpression) triggerCheck
+						.getRightOperand()).getReference().getName());
 
 		assertBoolLiteral(false, guardCheck.getValue());
 	}
@@ -241,7 +264,7 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 		ReactionTrigger tr1 = _createReactionTrigger(t);
 		_createTimeEventSpec(TimeEventType.AFTER, 1, TimeUnit.SECOND, tr1);
 
-		Assignment assign = _createVariableAssignment(v1,
+		AssignmentExpression assign = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42),
 				(ReactionEffect) t.getEffect());
 
@@ -260,9 +283,9 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 		If _if = (If) flow.getStates().get(0).getReactSequence().getSteps()
 				.get(0);
 
-		ElementReferenceExpression _ere = (ElementReferenceExpression) _if
+		TypedElementReferenceExpression _ere = (TypedElementReferenceExpression) _if
 				.getCheck().getCondition();
-		assertSame(te, _ere.getValue());
+		assertSame(te, _ere.getReference());
 
 		// assert the scheduling of the time event during state entry
 		assertNotNull(_s.getEntryAction());
@@ -303,7 +326,7 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 
 		LocalReaction timeTriggeredReaction = _createTimeTriggeredReaction(s,
 				TimeEventType.AFTER, 2, TimeUnit.MILLISECOND);
-		Assignment assign = _createVariableAssignment(v1,
+		AssignmentExpression assign = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42),
 				(ReactionEffect) timeTriggeredReaction.getEffect());
 
@@ -349,7 +372,7 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 
 		LocalReaction timeTriggeredReaction = _createLocalReaction(s,
 				StextFactory.eINSTANCE.createOnCycleEvent());
-		Assignment assign = _createVariableAssignment(v1,
+		AssignmentExpression assign = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42),
 				(ReactionEffect) timeTriggeredReaction.getEffect());
 
@@ -380,7 +403,7 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 
 		LocalReaction timeTriggeredReaction = _createLocalReaction(s,
 				StextFactory.eINSTANCE.createAlwaysEvent());
-		Assignment assign = _createVariableAssignment(v1,
+		AssignmentExpression assign = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42),
 				(ReactionEffect) timeTriggeredReaction.getEffect());
 

+ 79 - 49
test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/ModelSequencerStateTest.java

@@ -1,7 +1,31 @@
 package org.yakindu.sct.model.sexec.transformation.test;
 
-import static org.junit.Assert.*;
-import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.TYPE_INTEGER;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createEntry;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createEntryAction;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createEntryAssignment;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createEventDefinition;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createExitAction;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createExitAssignment;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createFinalState;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createInterfaceScope;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createLocalReaction;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createReactionEffect;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createRegion;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createRegularEventSpec;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createState;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createStatechart;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createTransition;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createValue;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createVariableAssignment;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createVariableDefinition;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.findState;
 
 import org.junit.Test;
 import org.yakindu.sct.model.sexec.Call;
@@ -26,9 +50,8 @@ import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.model.sgraph.Transition;
-import org.yakindu.sct.model.stext.stext.Assignment;
+import org.yakindu.sct.model.stext.stext.AssignmentExpression;
 import org.yakindu.sct.model.stext.stext.AssignmentOperator;
-import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.EventDefinition;
 import org.yakindu.sct.model.stext.stext.InterfaceScope;
 import org.yakindu.sct.model.stext.stext.LocalReaction;
@@ -39,6 +62,7 @@ import org.yakindu.sct.model.stext.stext.ReactionEffect;
 import org.yakindu.sct.model.stext.stext.ReactionTrigger;
 import org.yakindu.sct.model.stext.stext.RelationalOperator;
 import org.yakindu.sct.model.stext.stext.StextFactory;
+import org.yakindu.sct.model.stext.stext.TypedElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.VariableDefinition;
 
 public class ModelSequencerStateTest extends ModelSequencerTest {
@@ -165,7 +189,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		assertNotNull(_fs.getEnterSequence());
 
 		assertEquals(1, _fs.getEnterSequence().getSteps().size());
-		assertTrue(_fs.getEnterSequence().getSteps().get(0) instanceof EnterState);
+		assertClass(EnterState.class, _fs.getEnterSequence().getSteps().get(0));
 	}
 
 	/**
@@ -195,7 +219,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		assertCall(_s1.getEnterSequence(), 0, _s1.getEntryAction());
 
-		assertTrue(_s1.getEnterSequence().getSteps().get(1) instanceof EnterState);
+		assertClass(EnterState.class, _s1.getEnterSequence().getSteps().get(1));
 	}
 
 	/**
@@ -288,7 +312,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		assertNotNull(_s1.getExitSequence());
 		assertEquals(2, _s1.getExitSequence().getSteps().size());
 
-		assertTrue(_s1.getExitSequence().getSteps().get(0) instanceof ExitState);
+		assertClass(ExitState.class, _s1.getExitSequence().getSteps().get(0));
 
 		assertCall(_s1.getExitSequence(), 1, _s1.getExitAction());
 
@@ -314,7 +338,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		assertNotNull(_fs.getExitSequence());
 		assertEquals(1, _fs.getExitSequence().getSteps().size());
 
-		assertTrue(_fs.getExitSequence().getSteps().get(0) instanceof ExitState);
+		assertClass(ExitState.class, _fs.getExitSequence().getSteps().get(0));
 
 	}
 
@@ -525,7 +549,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER,
 				tsc.s_scope);
 		ReactionEffect effect = _createReactionEffect(tsc.t1);
-		Assignment assign = _createVariableAssignment(v1,
+		AssignmentExpression assign = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42), effect);
 
 		ExecutionFlow flow = sequencer.transform(tsc.sc);
@@ -546,10 +570,11 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		assertCall(seq, 0, s1.getExitSequence());
 
-		assertTrue(seq.getSteps().get(1) instanceof Sequence);
+		assertClass(Sequence.class, seq.getSteps().get(1));
 		Execution _exec = (Execution) ((Sequence) seq.getSteps().get(1))
 				.getSteps().get(0);
-		Assignment _assign = (Assignment) _exec.getStatement();
+		AssignmentExpression _assign = (AssignmentExpression) _exec
+				.getStatement();
 		assertNotSame(_assign, assign);
 		assertNotSame(_assign.getVarRef(), assign.getVarRef());
 		assertNotSame(_assign.getVarRef(), v1);
@@ -567,7 +592,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER,
 				tsc.s_scope);
 		LocalReaction exitAction = _createExitAction(tsc.s1);
-		Assignment assign = _createVariableAssignment(v1,
+		AssignmentExpression assign = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(21),
 				(ReactionEffect) exitAction.getEffect());
 
@@ -601,7 +626,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER,
 				tsc.s_scope);
 		LocalReaction entryAction = _createEntryAction(tsc.s2);
-		Assignment assign = _createVariableAssignment(v1,
+		AssignmentExpression assign = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(21),
 				(ReactionEffect) entryAction.getEffect());
 
@@ -642,7 +667,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		If _if = (If) s1.getReactSequence().getSteps().get(0);
 		assertNotNull(_if.getThenStep());
-		assertTrue(_if.getThenStep() instanceof Call);
+		assertClass(Call.class, _if.getThenStep());
 		assertNull(_if.getElseStep());
 
 		Call seq = (Call) _if.getThenStep();
@@ -661,9 +686,9 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		_if = (If) s3.getReactSequence().getSteps().get(0);
 		assertNotNull(_if.getThenStep());
-		assertTrue(_if.getThenStep() instanceof Call);
+		assertClass(Call.class, _if.getThenStep());
 		assertNotNull(_if.getElseStep());
-		assertTrue(_if.getElseStep() instanceof If);
+		assertClass(If.class, _if.getElseStep());
 
 	}
 
@@ -678,7 +703,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		LocalReaction lr1 = _createLocalReaction(tsc.s1, null);
 		_createRegularEventSpec(tsc.e1, (ReactionTrigger) lr1.getTrigger());
 		ReactionEffect lr1_eff = _createReactionEffect(lr1);
-		Assignment assign1 = _createVariableAssignment(v1,
+		AssignmentExpression assign1 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42), lr1_eff);
 
 		// the secont local reaction conforms to "e1 [x==42] / x=0;"
@@ -687,15 +712,15 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		LogicalRelationExpression lr2_equals = StextFactory.eINSTANCE
 				.createLogicalRelationExpression();
 		lr2_equals.setOperator(RelationalOperator.EQUALS);
-		ElementReferenceExpression lr2_varRef = StextFactory.eINSTANCE
-				.createElementReferenceExpression();
-		lr2_varRef.setValue(v1);
+		TypedElementReferenceExpression lr2_varRef = StextFactory.eINSTANCE
+				.createTypedElementReferenceExpression();
+		lr2_varRef.setReference(v1);
 		PrimitiveValueExpression lr2_value = _createValue(42);
 		lr2_equals.setLeftOperand(lr2_varRef);
 		lr2_equals.setRightOperand(lr2_value);
 		((ReactionTrigger) lr2.getTrigger()).setGuardExpression(lr2_equals);
 		ReactionEffect lr2_eff = _createReactionEffect(lr2);
-		Assignment assign2 = _createVariableAssignment(v1,
+		AssignmentExpression assign2 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(0), lr2_eff);
 
 		// the third local reaction conforms to: "[x==0] / x=1;"
@@ -703,15 +728,15 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		LogicalRelationExpression lr3_equals = StextFactory.eINSTANCE
 				.createLogicalRelationExpression();
 		lr3_equals.setOperator(RelationalOperator.EQUALS);
-		ElementReferenceExpression lr3_varRef = StextFactory.eINSTANCE
-				.createElementReferenceExpression();
-		lr3_varRef.setValue(v1);
+		TypedElementReferenceExpression lr3_varRef = StextFactory.eINSTANCE
+				.createTypedElementReferenceExpression();
+		lr3_varRef.setReference(v1);
 		PrimitiveValueExpression lr3_value = _createValue(0);
 		lr3_equals.setLeftOperand(lr3_varRef);
 		lr3_equals.setRightOperand(lr3_value);
 		((ReactionTrigger) lr3.getTrigger()).setGuardExpression(lr3_equals);
 		ReactionEffect lr3_eff = _createReactionEffect(lr3);
-		Assignment assign3 = _createVariableAssignment(v1,
+		AssignmentExpression assign3 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(1), lr3_eff);
 
 		ExecutionFlow flow = sequencer.transform(tsc.sc);
@@ -728,7 +753,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		If _if = (If) s1.getReactSequence().getSteps().get(0);
 		assertNotNull(_if.getThenStep());
-		assertTrue(_if.getThenStep() instanceof Call);
+		assertClass(Call.class, _if.getThenStep());
 		assertNotNull(_if.getElseStep());
 
 		Sequence _seq = (Sequence) _if.getElseStep();
@@ -736,7 +761,8 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		// check first local reaction
 		If _lr1 = (If) _seq.getSteps().get(0);
-		assertTrue(_lr1.getCheck().getCondition() instanceof ElementReferenceExpression);
+		assertClass(TypedElementReferenceExpression.class, _lr1.getCheck()
+				.getCondition());
 		assertSame(s1.getReactions().get(1).getCheck().getCondition(), _lr1
 				.getCheck().getCondition());
 		Call _lr1_eff_call = (Call) _lr1.getThenStep();
@@ -745,7 +771,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		// check second local reaction
 		If _lr2 = (If) _seq.getSteps().get(1);
-		assertTrue(_lr2.getCheck().getCondition() instanceof LogicalAndExpression);
+		assertClass(LogicalAndExpression.class, _lr2.getCheck().getCondition());
 		assertSame(s1.getReactions().get(2).getCheck().getCondition(), _lr2
 				.getCheck().getCondition());
 		Call _lr2_eff_call = (Call) _lr2.getThenStep();
@@ -754,7 +780,8 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		// check the third local reaction
 		If _lr3 = (If) _seq.getSteps().get(2);
-		assertTrue(_lr3.getCheck().getCondition() instanceof LogicalRelationExpression);
+		assertClass(LogicalRelationExpression.class, _lr3.getCheck()
+				.getCondition());
 		assertSame(s1.getReactions().get(3).getCheck().getCondition(), _lr3
 				.getCheck().getCondition());
 		Call _lr3_eff_call = (Call) _lr3.getThenStep();
@@ -778,7 +805,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		LocalReaction lr1 = _createLocalReaction(tsc.s1, null);
 		_createRegularEventSpec(tsc.e1, (ReactionTrigger) lr1.getTrigger());
 		ReactionEffect lr1_eff = _createReactionEffect(lr1);
-		Assignment assign1 = _createVariableAssignment(v1,
+		AssignmentExpression assign1 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42), lr1_eff);
 
 		// the secont local reaction conforms to "e1 [x==42] / x=0;"
@@ -787,15 +814,15 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		LogicalRelationExpression lr2_equals = StextFactory.eINSTANCE
 				.createLogicalRelationExpression();
 		lr2_equals.setOperator(RelationalOperator.EQUALS);
-		ElementReferenceExpression lr2_varRef = StextFactory.eINSTANCE
-				.createElementReferenceExpression();
-		lr2_varRef.setValue(v1);
+		TypedElementReferenceExpression lr2_varRef = StextFactory.eINSTANCE
+				.createTypedElementReferenceExpression();
+		lr2_varRef.setReference(v1);
 		PrimitiveValueExpression lr2_value = _createValue(42);
 		lr2_equals.setLeftOperand(lr2_varRef);
 		lr2_equals.setRightOperand(lr2_value);
 		((ReactionTrigger) lr2.getTrigger()).setGuardExpression(lr2_equals);
 		ReactionEffect lr2_eff = _createReactionEffect(lr2);
-		Assignment assign2 = _createVariableAssignment(v1,
+		AssignmentExpression assign2 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(0), lr2_eff);
 
 		// the third local reaction conforms to: "[x==0] / x=1;"
@@ -803,15 +830,15 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		LogicalRelationExpression lr3_equals = StextFactory.eINSTANCE
 				.createLogicalRelationExpression();
 		lr3_equals.setOperator(RelationalOperator.EQUALS);
-		ElementReferenceExpression lr3_varRef = StextFactory.eINSTANCE
-				.createElementReferenceExpression();
-		lr3_varRef.setValue(v1);
+		TypedElementReferenceExpression lr3_varRef = StextFactory.eINSTANCE
+				.createTypedElementReferenceExpression();
+		lr3_varRef.setReference(v1);
 		PrimitiveValueExpression lr3_value = _createValue(0);
 		lr3_equals.setLeftOperand(lr3_varRef);
 		lr3_equals.setRightOperand(lr3_value);
 		((ReactionTrigger) lr3.getTrigger()).setGuardExpression(lr3_equals);
 		ReactionEffect lr3_eff = _createReactionEffect(lr3);
-		Assignment assign3 = _createVariableAssignment(v1,
+		AssignmentExpression assign3 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(1), lr3_eff);
 
 		ExecutionFlow flow = sequencer.transform(tsc.sc);
@@ -829,7 +856,8 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		// check first local reaction
 		If _lr1 = (If) _seq.getSteps().get(0);
-		assertTrue(_lr1.getCheck().getCondition() instanceof ElementReferenceExpression);
+		assertClass(TypedElementReferenceExpression.class, _lr1.getCheck()
+				.getCondition());
 		assertSame(s1.getReactions().get(0).getCheck().getCondition(), _lr1
 				.getCheck().getCondition());
 		Call _lr1_eff_call = (Call) _lr1.getThenStep();
@@ -838,7 +866,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		// check second local reaction
 		If _lr2 = (If) _seq.getSteps().get(1);
-		assertTrue(_lr2.getCheck().getCondition() instanceof LogicalAndExpression);
+		assertClass(LogicalAndExpression.class, _lr2.getCheck().getCondition());
 		assertSame(s1.getReactions().get(1).getCheck().getCondition(), _lr2
 				.getCheck().getCondition());
 		Call _lr2_eff_call = (Call) _lr2.getThenStep();
@@ -847,7 +875,8 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 
 		// check the third local reaction
 		If _lr3 = (If) _seq.getSteps().get(2);
-		assertTrue(_lr3.getCheck().getCondition() instanceof LogicalRelationExpression);
+		assertClass(LogicalRelationExpression.class, _lr3.getCheck()
+				.getCondition());
 		assertSame(s1.getReactions().get(2).getCheck().getCondition(), _lr3
 				.getCheck().getCondition());
 		Call _lr3_eff_call = (Call) _lr3.getThenStep();
@@ -867,7 +896,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		// add a simple entry action: "entry / x=42;"
 		LocalReaction lr = _createEntryAction(tsc.s1);
 		ReactionEffect lr_eff = _createReactionEffect(lr);
-		Assignment assign1 = _createVariableAssignment(v1,
+		AssignmentExpression assign1 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42), lr_eff);
 
 		// TRANSFORM
@@ -892,7 +921,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		// add a simple entry action: "entry / x=42;"
 		LocalReaction lr = _createExitAction(tsc.s1);
 		ReactionEffect lr_eff = _createReactionEffect(lr);
-		Assignment assign1 = _createVariableAssignment(v1,
+		AssignmentExpression assign1 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42), lr_eff);
 
 		// TRANSFORM
@@ -921,7 +950,7 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		LocalReaction lr = _createEntryAction(tsc.s1);
 		_createRegularEventSpec(tsc.e1, (ReactionTrigger) lr.getTrigger());
 		ReactionEffect lr_eff = _createReactionEffect(lr);
-		Assignment assign1 = _createVariableAssignment(v1,
+		AssignmentExpression assign1 = _createVariableAssignment(v1,
 				AssignmentOperator.ASSIGN, _createValue(42), lr_eff);
 
 		// TRANSFORM
@@ -937,7 +966,8 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 		Sequence _seq = (Sequence) s1.getReactSequence().getSteps().get(0);
 
 		If _lr1 = (If) _seq.getSteps().get(0);
-		assertTrue(_lr1.getCheck().getCondition() instanceof ElementReferenceExpression);
+		assertClass(TypedElementReferenceExpression.class, _lr1.getCheck()
+				.getCondition());
 		assertSame(s1.getReactions().get(0).getCheck().getCondition(), _lr1
 				.getCheck().getCondition());
 		Call _lr1_eff_call = (Call) _lr1.getThenStep();
@@ -969,8 +999,8 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 					_createRegularEventSpec(e1,
 							(ReactionTrigger) lr1.getTrigger());
 					ReactionEffect lr1_eff = _createReactionEffect(lr1);
-					Assignment assign1 = _createVariableAssignment(v1,
-							AssignmentOperator.ASSIGN, _createValue(42),
+					AssignmentExpression assign1 = _createVariableAssignment(
+							v1, AssignmentOperator.ASSIGN, _createValue(42),
 							lr1_eff);
 
 					Region r_s1 = _createRegion("r", s1);
@@ -1072,8 +1102,8 @@ public class ModelSequencerStateTest extends ModelSequencerTest {
 					_createRegularEventSpec(e1,
 							(ReactionTrigger) lr1.getTrigger());
 					ReactionEffect lr1_eff = _createReactionEffect(lr1);
-					Assignment assign1 = _createVariableAssignment(v1,
-							AssignmentOperator.ASSIGN, _createValue(42),
+					AssignmentExpression assign1 = _createVariableAssignment(
+							v1, AssignmentOperator.ASSIGN, _createValue(42),
 							lr1_eff);
 
 					Region r_s1 = _createRegion("r", s1);

+ 24 - 11
test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/ModelSequencertDeclarationsTest.java

@@ -4,7 +4,20 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotSame;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
-import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.*;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.TYPE_INTEGER;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createEventDefinition;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createInterfaceScope;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createInternalScope;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createOperation;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createOperationCall;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createReactionEffect;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createReactionTrigger;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createRegion;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createRegularEventSpec;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createState;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createStatechart;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createTransition;
+import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil._createVariableDefinition;
 
 import org.junit.Test;
 import org.yakindu.sct.model.sexec.Call;
@@ -18,14 +31,14 @@ import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.model.sgraph.Transition;
-import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.EventDefinition;
+import org.yakindu.sct.model.stext.stext.FeatureCall;
 import org.yakindu.sct.model.stext.stext.InterfaceScope;
 import org.yakindu.sct.model.stext.stext.InternalScope;
-import org.yakindu.sct.model.stext.stext.Operation;
-import org.yakindu.sct.model.stext.stext.OperationCall;
+import org.yakindu.sct.model.stext.stext.OperationDefinition;
 import org.yakindu.sct.model.stext.stext.ReactionEffect;
 import org.yakindu.sct.model.stext.stext.ReactionTrigger;
+import org.yakindu.sct.model.stext.stext.TypedElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.VariableDefinition;
 
 public class ModelSequencertDeclarationsTest extends ModelSequencerTest {
@@ -104,9 +117,9 @@ public class ModelSequencertDeclarationsTest extends ModelSequencerTest {
 		If _if = (If) flow.getStates().get(0).getReactSequence().getSteps()
 				.get(0);
 
-		ElementReferenceExpression _ere = (ElementReferenceExpression) _if
+		TypedElementReferenceExpression _ere = (TypedElementReferenceExpression) _if
 				.getCheck().getCondition();
-		assertSame(_e1, _ere.getValue());
+		assertSame(_e1, _ere.getReference());
 	}
 
 	/**
@@ -117,19 +130,19 @@ public class ModelSequencertDeclarationsTest extends ModelSequencerTest {
 
 		Statechart sc = _createStatechart("test");
 		InterfaceScope s_scope = _createInterfaceScope("Interface", sc);
-		Operation _operation = _createOperation("value", s_scope);
+		OperationDefinition _operation = _createOperation("value", s_scope);
 		Region r = _createRegion("main", sc);
 		State s1 = _createState("S1", r);
 		State s2 = _createState("S2", r);
 		Transition t = _createTransition(s1, s2);
 		ReactionEffect tr1 = _createReactionEffect(t);
-		OperationCall _operationCall = _createOperationCall(_operation);
+		FeatureCall _operationCall = _createOperationCall(_operation);
 		tr1.getActions().add(_operationCall);
 
 		ExecutionFlow flow = sequencer.transform(sc);
 
-		Operation _o1 = (Operation) flow.getScopes().get(0).getDeclarations()
-				.get(0);
+		OperationDefinition _o1 = (OperationDefinition) flow.getScopes().get(0)
+				.getDeclarations().get(0);
 		assertNotSame(_operation, _o1);
 		assertEquals(_operation.getName(), _o1.getName());
 
@@ -140,6 +153,6 @@ public class ModelSequencertDeclarationsTest extends ModelSequencerTest {
 		Execution call = (Execution) assertedSequence(thenSequence).getSteps()
 				.get(0);
 		assertNotSame(_operationCall, call.getStatement());
-		assertSame(_o1, ((OperationCall) call.getStatement()).getOperation());
+		assertSame(_o1, ((FeatureCall) call.getStatement()).getFeature());
 	}
 }

+ 28 - 17
test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/SCTTestUtil.java

@@ -4,11 +4,9 @@ import java.util.Collection;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.xtext.EcoreUtil2;
+import org.yakindu.base.base.NamedElement;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypesFactory;
-import org.yakindu.sct.model.sexec.Execution;
-import org.yakindu.sct.model.sexec.Sequence;
-import org.yakindu.sct.model.sexec.SexecFactory;
 import org.yakindu.sct.model.sgraph.Entry;
 import org.yakindu.sct.model.sgraph.EntryKind;
 import org.yakindu.sct.model.sgraph.FinalState;
@@ -22,19 +20,19 @@ import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Vertex;
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
-import org.yakindu.sct.model.stext.stext.Assignment;
+import org.yakindu.sct.model.stext.stext.AssignmentExpression;
 import org.yakindu.sct.model.stext.stext.AssignmentOperator;
 import org.yakindu.sct.model.stext.stext.BoolLiteral;
 import org.yakindu.sct.model.stext.stext.EventDefinition;
 import org.yakindu.sct.model.stext.stext.EventSpec;
 import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.FeatureCall;
 import org.yakindu.sct.model.stext.stext.IntLiteral;
 import org.yakindu.sct.model.stext.stext.InterfaceScope;
 import org.yakindu.sct.model.stext.stext.InternalScope;
 import org.yakindu.sct.model.stext.stext.LocalReaction;
 import org.yakindu.sct.model.stext.stext.OnCycleEvent;
-import org.yakindu.sct.model.stext.stext.Operation;
-import org.yakindu.sct.model.stext.stext.OperationCall;
+import org.yakindu.sct.model.stext.stext.OperationDefinition;
 import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
 import org.yakindu.sct.model.stext.stext.ReactionEffect;
 import org.yakindu.sct.model.stext.stext.ReactionTrigger;
@@ -43,7 +41,7 @@ import org.yakindu.sct.model.stext.stext.StextFactory;
 import org.yakindu.sct.model.stext.stext.TimeEventSpec;
 import org.yakindu.sct.model.stext.stext.TimeEventType;
 import org.yakindu.sct.model.stext.stext.TimeUnit;
-import org.yakindu.sct.model.stext.stext.TransitionReaction;
+import org.yakindu.sct.model.stext.stext.TypedElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.VariableDefinition;
 
 import com.google.common.base.Predicate;
@@ -62,8 +60,9 @@ public class SCTTestUtil {
 		return e;
 	}
 
-	public static Operation _createOperation(String name, Scope scope) {
-		Operation e = StextFactory.eINSTANCE.createOperation();
+	public static OperationDefinition _createOperation(String name, Scope scope) {
+		OperationDefinition e = StextFactory.eINSTANCE
+				.createOperationDefinition();
 		e.setName(name);
 		if (scope != null)
 			scope.getDeclarations().add(e);
@@ -100,12 +99,20 @@ public class SCTTestUtil {
 			ReactionTrigger rt) {
 		RegularEventSpec e1Spec = StextFactory.eINSTANCE
 				.createRegularEventSpec();
-		e1Spec.setEvent(e1);
+		e1Spec.setEvent(createTypedElementReferenceExpression(e1));
 		if (rt != null)
 			rt.getTriggers().add(e1Spec);
 		return e1Spec;
 	}
 
+	public static TypedElementReferenceExpression createTypedElementReferenceExpression(
+			NamedElement target) {
+		TypedElementReferenceExpression referenceExpression = StextFactory.eINSTANCE
+				.createTypedElementReferenceExpression();
+		referenceExpression.setReference(target);
+		return referenceExpression;
+	}
+
 	public static OnCycleEvent _createOncycleEventSpec(ReactionTrigger rt) {
 		OnCycleEvent oce = StextFactory.eINSTANCE.createOnCycleEvent();
 		if (rt != null)
@@ -280,10 +287,12 @@ public class SCTTestUtil {
 				_createValue(value), (ReactionEffect) entryAction.getEffect());
 	}
 
-	public static Assignment _createVariableAssignment(VariableDefinition v,
-			AssignmentOperator op, Expression expression, ReactionEffect e) {
-		Assignment assignment = StextFactory.eINSTANCE.createAssignment();
-		assignment.setVarRef(v);
+	public static AssignmentExpression _createVariableAssignment(
+			VariableDefinition v, AssignmentOperator op, Expression expression,
+			ReactionEffect e) {
+		AssignmentExpression assignment = StextFactory.eINSTANCE
+				.createAssignmentExpression();
+		assignment.setVarRef(createTypedElementReferenceExpression(v));
 		assignment.setOperator(op);
 		assignment.setExpression(expression);
 		if (e != null)
@@ -291,9 +300,11 @@ public class SCTTestUtil {
 		return assignment;
 	}
 
-	public static OperationCall _createOperationCall(Operation o) {
-		OperationCall oc = StextFactory.eINSTANCE.createOperationCall();
-		oc.setOperation(o);
+	public static FeatureCall _createOperationCall(OperationDefinition o) {
+		// TODO add owner as TypedElementExpression
+		FeatureCall oc = StextFactory.eINSTANCE.createFeatureCall();
+		oc.setFeature(o);
+		oc.setOperationCall(true);
 		return oc;
 	}