Browse Source

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

added Statechart and Tests. Expecting to fail.
malknet42 11 years ago
parent
commit
158b973d9d
22 changed files with 722 additions and 35 deletions
  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
+		 
+	} 
+}
+