Parcourir la source

[YAKHMI-1086] Entry und Exit wird bei Selbsttransitionen in subregions nicht ausgeführt

added Statechart and Tests. Expecting to fail.
malknet42 il y a 11 ans
Parent
commit
158b973d9d
22 fichiers modifiés avec 722 ajouts et 35 suppressions
  1. 28 0
      test-plugins/org.yakindu.sct.generator.c.test/gtests/EntryExitSelfTransition/EntryExitSelfTransition.cc
  2. 8 0
      test-plugins/org.yakindu.sct.generator.c.test/gtests/EntryExitSelfTransition/EntryExitSelfTransition.sgen
  3. 8 0
      test-plugins/org.yakindu.sct.generator.c.test/model/test.sgen
  4. 6 6
      test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/AllTests.java
  5. 39 0
      test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/EntryExitSelfTransition.java
  6. 8 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/EntryExitSelfTransitionTest/EntryExitSelfTransition.sgen
  7. 25 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/EntryExitSelfTransitionTest/EntryExitSelfTransitionTest.cc
  8. 8 0
      test-plugins/org.yakindu.sct.generator.cpp.test/model/test.sgen
  9. 9 8
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/AllTestsTest.java
  10. 39 0
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/EntryExitSelfTransitionTest.java
  11. 12 0
      test-plugins/org.yakindu.sct.generator.java.test/model/model.sgen
  12. 9 3
      test-plugins/org.yakindu.sct.generator.java.test/model/test.sgen
  13. 201 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/entryexitselftransition/EntryExitSelfTransitionStatemachine.java
  14. 16 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/entryexitselftransition/IEntryExitSelfTransitionStatemachine.java
  15. 9 8
      test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/AllTestsTest.java
  16. 48 0
      test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/EntryExitSelfTransitionTest.java
  17. 9 1
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/model/test.sgen
  18. 9 8
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AllTestsTest.java
  19. 45 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/EntryExitSelfTransitionTest.java
  20. 168 0
      test-plugins/org.yakindu.sct.test.models/testmodels/SCTUnit/EntryExitSelfTransition.sct
  21. 3 1
      test-plugins/org.yakindu.sct.test.models/tests/AllTests.sctunit
  22. 15 0
      test-plugins/org.yakindu.sct.test.models/tests/EntryExitSelfTransition.sctunit

+ 28 - 0
test-plugins/org.yakindu.sct.generator.c.test/gtests/EntryExitSelfTransition/EntryExitSelfTransition.cc

@@ -0,0 +1,28 @@
+/**
+* Copyright (c) 2014 committers of YAKINDU and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*     committers of YAKINDU - initial API and implementation
+*/
+#include <string>
+#include "gtest/gtest.h"
+#include "EntryExitSelfTransition.h"
+
+
+EntryExitSelfTransition handle;
+
+TEST(StatemachineTest, EntryExitSelfTransitionTest) {
+	entryExitSelfTransition_init(&handle);
+	entryExitSelfTransition_enter(&handle);
+	entryExitSelfTransition_runCycle(&handle);
+	EXPECT_TRUE(entryExitSelfTransitionIface_get_x(&handle) == 1);
+	entryExitSelfTransitionIface_raise_e(&handle);
+	entryExitSelfTransition_runCycle(&handle);
+	EXPECT_TRUE(entryExitSelfTransitionIface_get_x(&handle) == 3);
+}
+
+		

+ 8 - 0
test-plugins/org.yakindu.sct.generator.c.test/gtests/EntryExitSelfTransition/EntryExitSelfTransition.sgen

@@ -0,0 +1,8 @@
+GeneratorModel for yakindu::c {
+	statechart EntryExitSelfTransition {
+		feature Outlet {
+			targetProject = "gtests"
+			targetFolder = "EntryExitSelfTransition"
+		}
+	}
+}

+ 8 - 0
test-plugins/org.yakindu.sct.generator.c.test/model/test.sgen

@@ -113,6 +113,14 @@ GeneratorModel for sctunit::c {
 		}			
 	}
 	
+	test EntryExitSelfTransition{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.c.test" 
+			targetFolder = "test-gen"			
+		}			
+	}	
+	
 	test ExitOnSelfTransition{
 		
 		feature Outlet{ 

+ 6 - 6
test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/AllTests.java

@@ -18,12 +18,12 @@ import org.junit.runners.Suite.SuiteClasses;
 		BitExpressions.class, BooleanExpressions.class, Choice.class,
 		CKeywords.class, ConditionalExpression.class, Declarations.class,
 		DeepEntry.class, DeepHistory.class, DynamicChoice.class,
-		EnterState.class, EntryChoice.class, ExitOnSelfTransition.class,
-		ExitState.class, FeatureCalls.class, Guard.class, GuardedEntry.class,
-		GuardedExit.class, HistoryWithoutInitialStep.class,
-		InEventLifeCycle.class, IntegerExpressions.class,
-		InternalEventLifeCycle.class, LocalReactions.class,
-		LogicalAndTests.class, LogicalOrTests.class,
+		EnterState.class, EntryChoice.class, EntryExitSelfTransition.class,
+		ExitOnSelfTransition.class, ExitState.class, FeatureCalls.class,
+		Guard.class, GuardedEntry.class, GuardedExit.class,
+		HistoryWithoutInitialStep.class, InEventLifeCycle.class,
+		IntegerExpressions.class, InternalEventLifeCycle.class,
+		LocalReactions.class, LogicalAndTests.class, LogicalOrTests.class,
 		NamedInterfaceAccess.class, OutEventLifeCycle.class, Parenthesis.class,
 		PriorityValues.class, RaiseEvent.class, SameNameDifferentRegion.class,
 		ShallowHistory.class, SimpleEvent.class,

+ 39 - 0
test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/EntryExitSelfTransition.java

@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2014 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
+package org.yakindu.sct.generator.c.test;
+
+import java.util.Collection;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.generator.c.gtest.GTest;
+import org.yakindu.sct.generator.c.gtest.GTestRunner;
+import org.yakindu.sct.generator.c.gtest.GTestHelper;
+
+@GTest(sourceFile = "gtests/EntryExitSelfTransition/EntryExitSelfTransition.cc", program = "gtests/EntryExitSelfTransition/EntryExitSelfTransition", model = "testmodels/SCTUnit/EntryExitSelfTransition.sct")
+@RunWith(GTestRunner.class)
+public class EntryExitSelfTransition {
+
+	protected final GTestHelper helper = new GTestHelper(this) {
+
+		@Override
+		protected void getSourceFiles(Collection<String> files) {
+			super.getSourceFiles(files);
+			files.add(getFileName(getTestProgram()) + ".c");
+		}
+	};
+
+	@Before
+	public void setUp() {
+		helper.generate();
+		helper.compile();
+	}
+}

+ 8 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/EntryExitSelfTransitionTest/EntryExitSelfTransition.sgen

@@ -0,0 +1,8 @@
+GeneratorModel for yakindu::cpp {
+	statechart EntryExitSelfTransition {
+		feature Outlet {
+			targetProject = "gtests"
+			targetFolder = "EntryExitSelfTransitionTest"
+		}
+	}
+}

+ 25 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/EntryExitSelfTransitionTest/EntryExitSelfTransitionTest.cc

@@ -0,0 +1,25 @@
+/**
+* Copyright (c) 2014 committers of YAKINDU and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*     committers of YAKINDU - initial API and implementation
+*/
+#include <string>
+#include "gtest/gtest.h"
+#include "EntryExitSelfTransition.h"
+
+TEST(StatemachineTest, EntryExitSelfTransitionTest) {
+	EntryExitSelfTransition* statechart = new EntryExitSelfTransition();
+	statechart->init();
+	statechart->enter();
+	statechart->runCycle();
+	EXPECT_TRUE(statechart->getSCInterface()->get_x()== 1);
+	statechart->raise_e();
+	statechart->runCycle();
+	EXPECT_TRUE(statechart->getSCInterface()->get_x()== 3);
+	delete statechart;
+}

+ 8 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/model/test.sgen

@@ -104,7 +104,15 @@ GeneratorModel for sctunit::cpp {
 			targetFolder = "test-gen"			
 		}			
 	}
+	
+	test EntryExitSelfTransition{
 		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.cpp.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+
 	test EnterState{
 		
 		feature Outlet{ 

+ 9 - 8
test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/AllTestsTest.java

@@ -19,14 +19,15 @@ import org.junit.runners.Suite.SuiteClasses;
 		ChoiceTest.class, CKeywordsTest.class, ConditionalExpressionTest.class,
 		DeclarationsTest.class, DeepEntryTest.class, DeepHistoryTest.class,
 		DynamicChoiceTest.class, EnterStateTest.class, EntryChoiceTest.class,
-		ExitOnSelfTransitionTest.class, ExitStateTest.class,
-		FeatureCallsTest.class, GuardTest.class, GuardedEntryTest.class,
-		GuardedExitTest.class, HistoryWithoutInitialStepTest.class,
-		InEventLifeCycleTest.class, IntegerExpressionsTest.class,
-		InternalEventLifeCycleTest.class, LocalReactionsTest.class,
-		LogicalAndTestsTest.class, LogicalOrTestsTest.class,
-		NamedInterfaceAccessTest.class, OutEventLifeCycleTest.class,
-		ParenthesisTest.class, PriorityValuesTest.class, RaiseEventTest.class,
+		EntryExitSelfTransitionTest.class, ExitOnSelfTransitionTest.class,
+		ExitStateTest.class, FeatureCallsTest.class, GuardTest.class,
+		GuardedEntryTest.class, GuardedExitTest.class,
+		HistoryWithoutInitialStepTest.class, InEventLifeCycleTest.class,
+		IntegerExpressionsTest.class, InternalEventLifeCycleTest.class,
+		LocalReactionsTest.class, LogicalAndTestsTest.class,
+		LogicalOrTestsTest.class, NamedInterfaceAccessTest.class,
+		OutEventLifeCycleTest.class, ParenthesisTest.class,
+		PriorityValuesTest.class, RaiseEventTest.class,
 		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
 		SimpleEventTest.class, StatechartLocalReactionsTest.class,
 		SimpleHierachyTest.class, StateIsActiveTest.class,

+ 39 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/EntryExitSelfTransitionTest.java

@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2014 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
+package org.yakindu.sct.generator.cpp.test;
+
+import java.util.Collection;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.generator.c.gtest.GTest;
+import org.yakindu.sct.generator.c.gtest.GTestRunner;
+import org.yakindu.sct.generator.c.gtest.GTestHelper;
+
+@GTest(sourceFile = "gtests/EntryExitSelfTransitionTest/EntryExitSelfTransitionTest.cc", program = "gtests/EntryExitSelfTransitionTest/EntryExitSelfTransition", model = "testmodels/SCTUnit/EntryExitSelfTransition.sct")
+@RunWith(GTestRunner.class)
+public class EntryExitSelfTransitionTest {
+
+	protected final GTestHelper helper = new GTestHelper(this) {
+
+		@Override
+		protected void getSourceFiles(Collection<String> files) {
+			super.getSourceFiles(files);
+			files.add(getFileName(getTestProgram()) + ".cpp");
+		}
+	};
+
+	@Before
+	public void setUp() {
+		helper.generate();
+		helper.compile();
+	}
+}

+ 12 - 0
test-plugins/org.yakindu.sct.generator.java.test/model/model.sgen

@@ -156,6 +156,18 @@ GeneratorModel for yakindu::java {
 		}
 	}
 		
+	statechart EntryExitSelfTransition {
+		feature Outlet {
+			targetProject = "org.yakindu.sct.generator.java.test"
+			targetFolder = "src-gen"
+		}
+
+		feature GeneralFeatures {
+			TimerService = true
+			RuntimeService = true
+		}
+	}
+			
 	statechart ExitOnSelfTransition {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"

+ 9 - 3
test-plugins/org.yakindu.sct.generator.java.test/model/test.sgen

@@ -95,9 +95,7 @@ GeneratorModel for sctunit::java {
 			targetFolder = "test-gen"			
 		}			
 	}
-	
-	
-	
+		
 	test EnterState{
 		
 		feature Outlet{ 
@@ -114,6 +112,14 @@ GeneratorModel for sctunit::java {
 		}			
 	}
 	
+	test EntryExitSelfTransition{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.java.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
 	test ExitOnSelfTransition{
 		
 		feature Outlet{ 

+ 201 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/entryexitselftransition/EntryExitSelfTransitionStatemachine.java

@@ -0,0 +1,201 @@
+package org.yakindu.scr.entryexitselftransition;
+
+public class EntryExitSelfTransitionStatemachine
+		implements
+			IEntryExitSelfTransitionStatemachine {
+
+	private final class SCInterfaceImpl implements SCInterface {
+
+		private boolean e;
+
+		public void raiseE() {
+			e = true;
+		}
+
+		private boolean e1;
+
+		public void raiseE1() {
+			e1 = true;
+		}
+
+		private long x;
+
+		public long getX() {
+			return x;
+		}
+
+		public void setX(long value) {
+			this.x = value;
+		}
+
+		public void clearEvents() {
+			e = false;
+			e1 = false;
+		}
+
+	}
+
+	private SCInterfaceImpl sCInterface;
+
+	public enum State {
+		main_region_A, main_region_A__region0_B, main_region_A__region0_C, $NullState$
+	};
+
+	private final State[] stateVector = new State[1];
+
+	private int nextStateIndex;
+
+	public EntryExitSelfTransitionStatemachine() {
+
+		sCInterface = new SCInterfaceImpl();
+	}
+
+	public void init() {
+		for (int i = 0; i < 1; i++) {
+			stateVector[i] = State.$NullState$;
+		}
+
+		clearEvents();
+		clearOutEvents();
+
+		sCInterface.x = 0;
+	}
+
+	public void enter() {
+		entryAction();
+
+		sCInterface.x += 1;
+
+		nextStateIndex = 0;
+		stateVector[0] = State.main_region_A__region0_B;
+	}
+
+	public void exit() {
+		switch (stateVector[0]) {
+			case main_region_A__region0_B :
+				nextStateIndex = 0;
+				stateVector[0] = State.$NullState$;
+
+				sCInterface.x += 1;
+				break;
+
+			case main_region_A__region0_C :
+				nextStateIndex = 0;
+				stateVector[0] = State.$NullState$;
+
+				sCInterface.x += 1;
+				break;
+
+			default :
+				break;
+		}
+
+		exitAction();
+	}
+
+	/**
+	 * This method resets the incoming events (time events included).
+	 */
+	protected void clearEvents() {
+		sCInterface.clearEvents();
+
+	}
+
+	/**
+	 * This method resets the outgoing events.
+	 */
+	protected void clearOutEvents() {
+	}
+
+	/**
+	 * Returns true if the given state is currently active otherwise false.
+	 */
+	public boolean isStateActive(State state) {
+		switch (state) {
+			case main_region_A :
+				return stateVector[0].ordinal() >= State.main_region_A
+						.ordinal()
+						&& stateVector[0].ordinal() <= State.main_region_A__region0_C
+								.ordinal();
+			case main_region_A__region0_B :
+				return stateVector[0] == State.main_region_A__region0_B;
+			case main_region_A__region0_C :
+				return stateVector[0] == State.main_region_A__region0_C;
+			default :
+				return false;
+		}
+	}
+
+	public SCInterface getSCInterface() {
+		return sCInterface;
+	}
+
+	public void raiseE() {
+		sCInterface.raiseE();
+	}
+	public void raiseE1() {
+		sCInterface.raiseE1();
+	}
+
+	public long getX() {
+		return sCInterface.getX();
+	}
+
+	public void setX(long value) {
+		sCInterface.setX(value);
+	}
+
+	/* Entry action for statechart 'EntryExitSelfTransition'. */
+	private void entryAction() {
+	}
+
+	/* Exit action for state 'EntryExitSelfTransition'. */
+	private void exitAction() {
+	}
+
+	/* The reactions of state B. */
+	private void reactMain_region_A_region0_B() {
+		if (sCInterface.e) {
+			nextStateIndex = 0;
+			stateVector[0] = State.main_region_A__region0_C;
+		} else {
+			if (sCInterface.e1) {
+				nextStateIndex = 0;
+				stateVector[0] = State.$NullState$;
+
+				nextStateIndex = 0;
+				stateVector[0] = State.main_region_A__region0_C;
+			}
+		}
+	}
+
+	/* The reactions of state C. */
+	private void reactMain_region_A_region0_C() {
+		if (sCInterface.e) {
+			nextStateIndex = 0;
+			stateVector[0] = State.main_region_A__region0_C;
+		} else {
+		}
+	}
+
+	public void runCycle() {
+
+		clearOutEvents();
+
+		for (nextStateIndex = 0; nextStateIndex < stateVector.length; nextStateIndex++) {
+
+			switch (stateVector[nextStateIndex]) {
+				case main_region_A__region0_B :
+					reactMain_region_A_region0_B();
+					break;
+				case main_region_A__region0_C :
+					reactMain_region_A_region0_C();
+					break;
+				default :
+					// $NullState$
+			}
+		}
+
+		clearEvents();
+	}
+}

+ 16 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/entryexitselftransition/IEntryExitSelfTransitionStatemachine.java

@@ -0,0 +1,16 @@
+package org.yakindu.scr.entryexitselftransition;
+import org.yakindu.scr.IStatemachine;
+
+public interface IEntryExitSelfTransitionStatemachine extends IStatemachine {
+
+	public interface SCInterface {
+		public void raiseE();
+		public void raiseE1();
+		public long getX();
+		public void setX(long value);
+
+	}
+
+	public SCInterface getSCInterface();
+
+}

+ 9 - 8
test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/AllTestsTest.java

@@ -19,14 +19,15 @@ import org.junit.runners.Suite.SuiteClasses;
 		ChoiceTest.class, CKeywordsTest.class, ConditionalExpressionTest.class,
 		DeclarationsTest.class, DeepEntryTest.class, DeepHistoryTest.class,
 		DynamicChoiceTest.class, EnterStateTest.class, EntryChoiceTest.class,
-		ExitOnSelfTransitionTest.class, ExitStateTest.class,
-		FeatureCallsTest.class, GuardTest.class, GuardedEntryTest.class,
-		GuardedExitTest.class, HistoryWithoutInitialStepTest.class,
-		InEventLifeCycleTest.class, IntegerExpressionsTest.class,
-		InternalEventLifeCycleTest.class, LocalReactionsTest.class,
-		LogicalAndTestsTest.class, LogicalOrTestsTest.class,
-		NamedInterfaceAccessTest.class, OutEventLifeCycleTest.class,
-		ParenthesisTest.class, PriorityValuesTest.class, RaiseEventTest.class,
+		EntryExitSelfTransitionTest.class, ExitOnSelfTransitionTest.class,
+		ExitStateTest.class, FeatureCallsTest.class, GuardTest.class,
+		GuardedEntryTest.class, GuardedExitTest.class,
+		HistoryWithoutInitialStepTest.class, InEventLifeCycleTest.class,
+		IntegerExpressionsTest.class, InternalEventLifeCycleTest.class,
+		LocalReactionsTest.class, LogicalAndTestsTest.class,
+		LogicalOrTestsTest.class, NamedInterfaceAccessTest.class,
+		OutEventLifeCycleTest.class, ParenthesisTest.class,
+		PriorityValuesTest.class, RaiseEventTest.class,
 		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
 		SimpleEventTest.class, StatechartLocalReactionsTest.class,
 		SimpleHierachyTest.class, StateIsActiveTest.class,

+ 48 - 0
test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/EntryExitSelfTransitionTest.java

@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2014 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
+
+package org.yakindu.sct.generator.java.test;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.yakindu.scr.entryexitselftransition.EntryExitSelfTransitionStatemachine;
+import org.yakindu.scr.entryexitselftransition.EntryExitSelfTransitionStatemachine.State;
+/**
+ *  Unit TestCase for EntryExitSelfTransition
+ */
+@SuppressWarnings("all")
+public class EntryExitSelfTransitionTest {
+
+	private EntryExitSelfTransitionStatemachine statemachine;
+
+	@Before
+	public void setUp() {
+		statemachine = new EntryExitSelfTransitionStatemachine();
+		statemachine.init();
+	}
+
+	@After
+	public void tearDown() {
+		statemachine = null;
+	}
+
+	@Test
+	public void testEntryExitSelfTransitionTest() {
+		statemachine.enter();
+		statemachine.runCycle();
+		assertTrue(statemachine.getX() == 1);
+		statemachine.raiseE();
+		statemachine.runCycle();
+		assertTrue(statemachine.getX() == 3);
+	}
+}

+ 9 - 1
test-plugins/org.yakindu.sct.simulation.core.sexec.test/model/test.sgen

@@ -114,6 +114,14 @@ GeneratorModel for sctunit::interpreter {
 		}			
 	}
 	
+	test EntryExitSelfTransition{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.simulation.core.sexec.test" 
+			targetFolder = "test-gen"			
+		}			
+	}	
+	
 	test ExitOnSelfTransition{
 		
 		feature Outlet{ 
@@ -121,7 +129,7 @@ GeneratorModel for sctunit::interpreter {
 			targetFolder = "test-gen"			
 		}			
 	}
-	
+		
 	test ExitState{
 		
 		feature Outlet{ 

+ 9 - 8
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AllTestsTest.java

@@ -20,14 +20,15 @@ import org.junit.runners.Suite.SuiteClasses;
 		ChoiceTest.class, CKeywordsTest.class, ConditionalExpressionTest.class,
 		DeclarationsTest.class, DeepEntryTest.class, DeepHistoryTest.class,
 		DynamicChoiceTest.class, EnterStateTest.class, EntryChoiceTest.class,
-		ExitOnSelfTransitionTest.class, ExitStateTest.class,
-		FeatureCallsTest.class, GuardTest.class, GuardedEntryTest.class,
-		GuardedExitTest.class, HistoryWithoutInitialStepTest.class,
-		InEventLifeCycleTest.class, IntegerExpressionsTest.class,
-		InternalEventLifeCycleTest.class, LocalReactionsTest.class,
-		LogicalAndTestsTest.class, LogicalOrTestsTest.class,
-		NamedInterfaceAccessTest.class, OutEventLifeCycleTest.class,
-		ParenthesisTest.class, PriorityValuesTest.class, RaiseEventTest.class,
+		EntryExitSelfTransitionTest.class, ExitOnSelfTransitionTest.class,
+		ExitStateTest.class, FeatureCallsTest.class, GuardTest.class,
+		GuardedEntryTest.class, GuardedExitTest.class,
+		HistoryWithoutInitialStepTest.class, InEventLifeCycleTest.class,
+		IntegerExpressionsTest.class, InternalEventLifeCycleTest.class,
+		LocalReactionsTest.class, LogicalAndTestsTest.class,
+		LogicalOrTestsTest.class, NamedInterfaceAccessTest.class,
+		OutEventLifeCycleTest.class, ParenthesisTest.class,
+		PriorityValuesTest.class, RaiseEventTest.class,
 		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
 		SimpleEventTest.class, StatechartLocalReactionsTest.class,
 		SimpleHierachyTest.class, StateIsActiveTest.class,

+ 45 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/EntryExitSelfTransitionTest.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2014 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
+package org.yakindu.sct.simulation.core.sexec.test;
+import org.eclipse.xtext.junit4.InjectWith;
+import org.eclipse.xtext.junit4.XtextRunner;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.model.sexec.ExecutionFlow;
+import org.yakindu.sct.model.sexec.interpreter.test.util.AbstractExecutionFlowTest;
+import org.yakindu.sct.model.sexec.interpreter.test.util.SExecInjectionProvider;
+import org.yakindu.sct.test.models.SCTUnitTestModels;
+import com.google.inject.Inject;
+import static org.junit.Assert.assertTrue;
+/**
+ *  Unit TestCase for EntryExitSelfTransition
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class EntryExitSelfTransitionTest extends AbstractExecutionFlowTest {
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("EntryExitSelfTransition.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void EntryExitSelfTransitionTest() throws Exception {
+		interpreter.enter();
+		interpreter.runCycle();
+		assertTrue(getInteger("x") == 1);
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(getInteger("x") == 3);
+	}
+}

+ 168 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/SCTUnit/EntryExitSelfTransition.sct

@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sgraph="http://www.yakindu.org/sct/sgraph/2.0.0">
+  <sgraph:Statechart xmi:id="__qCSANm5EeO6ourglUReaw" specification="interface:&#xD;&#xA;var x : integer = 0&#xD;&#xA;in event e&#xD;&#xA;in event e1" name="EntryExitSelfTransition">
+    <regions xmi:id="__qx44tm5EeO6ourglUReaw" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="__rEz1tm5EeO6ourglUReaw">
+        <outgoingTransitions xmi:id="_pfzIIOS0EeOdzbrfuHG8_g" specification="" target="_zK3JoNm7EeO6ourglUReaw"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_zK3JoNm7EeO6ourglUReaw" specification="entry / x+=1&#xD;&#xA;exit / x +=1" name="A" incomingTransitions="_pfzIIOS0EeOdzbrfuHG8_g">
+        <outgoingTransitions xmi:id="_C-IyINndEeOSfZcJ4WRbWw" specification="e" target="_lZzaQNnLEeO6ourglUReaw"/>
+        <regions xmi:id="_bpPwQPR7EeKYZsO6tCRi-g" name="">
+          <vertices xsi:type="sgraph:State" xmi:id="_IZk7wPSOEeKTtv0EBPAdFQ" specification="" name="B" incomingTransitions="_L2MJgOS1EeOdzbrfuHG8_g">
+            <outgoingTransitions xmi:id="_V5WQgOS1EeOdzbrfuHG8_g" specification="e1" target="_lZzaQNnLEeO6ourglUReaw"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_lZzaQNnLEeO6ourglUReaw" specification="" name="C" incomingTransitions="_C-IyINndEeOSfZcJ4WRbWw _V5WQgOS1EeOdzbrfuHG8_g"/>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_LdQsIOS1EeOdzbrfuHG8_g">
+            <outgoingTransitions xmi:id="_L2MJgOS1EeOdzbrfuHG8_g" specification="" target="_IZk7wPSOEeKTtv0EBPAdFQ"/>
+          </vertices>
+        </regions>
+      </vertices>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="__qx44Nm5EeO6ourglUReaw" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="__qCSANm5EeO6ourglUReaw" measurementUnit="Pixel">
+    <children xmi:id="__qx449m5EeO6ourglUReaw" type="Region" element="__qx44tm5EeO6ourglUReaw">
+      <children xsi:type="notation:DecorationNode" xmi:id="__rEz0Nm5EeO6ourglUReaw" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="__rEz0dm5EeO6ourglUReaw"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="__rEz0tm5EeO6ourglUReaw"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="__rEz09m5EeO6ourglUReaw" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="__rEz19m5EeO6ourglUReaw" type="Entry" element="__rEz1tm5EeO6ourglUReaw">
+          <children xmi:id="__rEz2tm5EeO6ourglUReaw" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="__rOk0Nm5EeO6ourglUReaw" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="__rOk0dm5EeO6ourglUReaw"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="__rOk0tm5EeO6ourglUReaw"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="__rEz29m5EeO6ourglUReaw" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="__rEz3Nm5EeO6ourglUReaw"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="__rEz2Nm5EeO6ourglUReaw" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="__rOk09m5EeO6ourglUReaw" x="92" y="38" width="15" height="15"/>
+        </children>
+        <children xmi:id="_zK3Jo9m7EeO6ourglUReaw" type="State" element="_zK3JoNm7EeO6ourglUReaw">
+          <children xsi:type="notation:DecorationNode" xmi:id="_zK3Jp9m7EeO6ourglUReaw" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_zK3JqNm7EeO6ourglUReaw"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_zK3Jqdm7EeO6ourglUReaw"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_zK3Jqtm7EeO6ourglUReaw" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_zK3Jq9m7EeO6ourglUReaw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zK3JrNm7EeO6ourglUReaw"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_zK3Jrdm7EeO6ourglUReaw" type="StateFigureCompartment">
+            <children xmi:id="_bpTaoPR7EeKYZsO6tCRi-g" type="Region" element="_bpPwQPR7EeKYZsO6tCRi-g">
+              <children xsi:type="notation:DecorationNode" xmi:id="_bpirMPR7EeKYZsO6tCRi-g" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_bpirMfR7EeKYZsO6tCRi-g"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_bpirMvR7EeKYZsO6tCRi-g"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_bpjSQPR7EeKYZsO6tCRi-g" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_IZnYAPSOEeKTtv0EBPAdFQ" type="State" element="_IZk7wPSOEeKTtv0EBPAdFQ">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_IZomIPSOEeKTtv0EBPAdFQ" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_IZomIfSOEeKTtv0EBPAdFQ"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_IZomIvSOEeKTtv0EBPAdFQ"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_IZomI_SOEeKTtv0EBPAdFQ" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_IZpNMPSOEeKTtv0EBPAdFQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IZpNMfSOEeKTtv0EBPAdFQ"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_IZp0QPSOEeKTtv0EBPAdFQ" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_IZnYAfSOEeKTtv0EBPAdFQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_IZnYAvSOEeKTtv0EBPAdFQ"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_IZp0QfSOEeKTtv0EBPAdFQ" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IZnYA_SOEeKTtv0EBPAdFQ" x="53" y="9"/>
+                </children>
+                <children xmi:id="_lZzaQtnLEeO6ourglUReaw" type="State" element="_lZzaQNnLEeO6ourglUReaw">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_lZzaRtnLEeO6ourglUReaw" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_lZzaR9nLEeO6ourglUReaw"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_lZzaSNnLEeO6ourglUReaw"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_lZzaSdnLEeO6ourglUReaw" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_lZzaStnLEeO6ourglUReaw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_lZzaS9nLEeO6ourglUReaw"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_lZzaTNnLEeO6ourglUReaw" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_lZzaQ9nLEeO6ourglUReaw" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_lZzaRNnLEeO6ourglUReaw"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_lZzaTdnLEeO6ourglUReaw" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_lZzaRdnLEeO6ourglUReaw" x="53" y="128"/>
+                </children>
+                <children xmi:id="_LdUWgOS1EeOdzbrfuHG8_g" type="Entry" element="_LdQsIOS1EeOdzbrfuHG8_g">
+                  <children xmi:id="_LdWLsOS1EeOdzbrfuHG8_g" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_LdWywOS1EeOdzbrfuHG8_g" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_LdWyweS1EeOdzbrfuHG8_g"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_LdWywuS1EeOdzbrfuHG8_g"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_LdWLseS1EeOdzbrfuHG8_g" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_LdWLsuS1EeOdzbrfuHG8_g"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_LdUWgeS1EeOdzbrfuHG8_g" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_LdUWguS1EeOdzbrfuHG8_g" x="13" y="25"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_bpjSQfR7EeKYZsO6tCRi-g"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_bpTaofR7EeKYZsO6tCRi-g" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_bpj5UPR7EeKYZsO6tCRi-g" x="90" y="10" width="178" height="159"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_zK3JpNm7EeO6ourglUReaw" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_zK3Jpdm7EeO6ourglUReaw"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_zK3Jrtm7EeO6ourglUReaw" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zK3Jptm7EeO6ourglUReaw" x="137" y="92" width="178" height="304"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="__rEz1Nm5EeO6ourglUReaw"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="__qx45Nm5EeO6ourglUReaw" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="__rEz1dm5EeO6ourglUReaw" x="-419" y="-25" width="440" height="461"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="__rXux9m5EeO6ourglUReaw" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="__rXuydm5EeO6ourglUReaw" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="__rXuytm5EeO6ourglUReaw"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="__rXuy9m5EeO6ourglUReaw"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="__rXuzNm5EeO6ourglUReaw" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="__rXuzdm5EeO6ourglUReaw"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="__rXuztm5EeO6ourglUReaw" x="-630" y="-25" width="191" height="461"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="__qx44dm5EeO6ourglUReaw"/>
+    <edges xmi:id="_C-KnUNndEeOSfZcJ4WRbWw" type="Transition" element="_C-IyINndEeOSfZcJ4WRbWw" source="_zK3Jo9m7EeO6ourglUReaw" target="_lZzaQtnLEeO6ourglUReaw">
+      <children xsi:type="notation:DecorationNode" xmi:id="_C-L1cNndEeOSfZcJ4WRbWw" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_C-L1cdndEeOSfZcJ4WRbWw"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_C-L1ctndEeOSfZcJ4WRbWw" x="-1" y="9"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_C-KnUdndEeOSfZcJ4WRbWw" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_C-LOYNndEeOSfZcJ4WRbWw" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_C-KnUtndEeOSfZcJ4WRbWw" points="[5, -10, 5, -10]$[5, -10, 5, -10]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_C-NqoNndEeOSfZcJ4WRbWw" id="(0.013071895424836602,0.8032786885245902)"/>
+    </edges>
+    <edges xmi:id="_pf3ZkOS0EeOdzbrfuHG8_g" type="Transition" element="_pfzIIOS0EeOdzbrfuHG8_g" source="__rEz19m5EeO6ourglUReaw" target="_zK3Jo9m7EeO6ourglUReaw">
+      <children xsi:type="notation:DecorationNode" xmi:id="_pf5OwOS0EeOdzbrfuHG8_g" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_pf5OweS0EeOdzbrfuHG8_g"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_pf510OS0EeOdzbrfuHG8_g" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_pf3ZkeS0EeOdzbrfuHG8_g" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_pf4AoOS0EeOdzbrfuHG8_g" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_pf3ZkuS0EeOdzbrfuHG8_g" points="[3, 7, -40, -93]$[44, 93, 1, -7]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_pf9gMOS0EeOdzbrfuHG8_g" id="(0.07338129496402877,0.021333333333333333)"/>
+    </edges>
+    <edges xmi:id="_L2N-sOS1EeOdzbrfuHG8_g" type="Transition" element="_L2MJgOS1EeOdzbrfuHG8_g" source="_LdUWgOS1EeOdzbrfuHG8_g" target="_IZnYAPSOEeKTtv0EBPAdFQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_L2OlwOS1EeOdzbrfuHG8_g" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_L2OlweS1EeOdzbrfuHG8_g"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_L2OlwuS1EeOdzbrfuHG8_g" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_L2N-seS1EeOdzbrfuHG8_g" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_L2N-s-S1EeOdzbrfuHG8_g" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_L2N-suS1EeOdzbrfuHG8_g" points="[7, 0, -80, 1]$[105, -4, 18, -3]"/>
+    </edges>
+    <edges xmi:id="_V5YFsOS1EeOdzbrfuHG8_g" type="Transition" element="_V5WQgOS1EeOdzbrfuHG8_g" source="_IZnYAPSOEeKTtv0EBPAdFQ" target="_lZzaQtnLEeO6ourglUReaw">
+      <children xsi:type="notation:DecorationNode" xmi:id="_V5YswOS1EeOdzbrfuHG8_g" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_V5YsweS1EeOdzbrfuHG8_g"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_V5YswuS1EeOdzbrfuHG8_g" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_V5YFseS1EeOdzbrfuHG8_g" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_V5YFs-S1EeOdzbrfuHG8_g" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_V5YFsuS1EeOdzbrfuHG8_g" points="[4, 24, 4, -116]$[4, 116, 4, -24]"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

+ 3 - 1
test-plugins/org.yakindu.sct.test.models/tests/AllTests.sctunit

@@ -11,7 +11,8 @@ testsuite AllTests {
 	DeepHistory,
 	DynamicChoice,
 	EnterState,
-	EntryChoice, 
+	EntryChoice,
+	EntryExitSelfTransition, 
 	ExitOnSelfTransition, 
 	ExitState,
 	FeatureCalls,
@@ -22,6 +23,7 @@ testsuite AllTests {
 	InEventLifeCycle, 
 	IntegerExpressions, 
 	InternalEventLifeCycle,
+	LocalReactions,
 	LogicalAndTests, 
 	LogicalOrTests,
 	NamedInterfaceAccess,

+ 15 - 0
test-plugins/org.yakindu.sct.test.models/tests/EntryExitSelfTransition.sctunit

@@ -0,0 +1,15 @@
+
+testgroup EntryExitSelfTransition for statechart EntryExitSelfTransition{
+	test EntryExitSelfTransitionTest { 
+		enter
+		
+		cycle
+		assert x == 1 
+		
+		raise e
+		cycle
+		assert x == 3
+		 
+	} 
+}
+