Explorar o código

adding new Tests in new folder

malknet42@gmail.com %!s(int64=12) %!d(string=hai) anos
pai
achega
421f05843a
Modificáronse 37 ficheiros con 2602 adicións e 0 borrados
  1. 34 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AllTestsTest.java
  2. 55 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AlwaysOncycleTest.java
  3. 71 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AssignmentAsExpressionTest.java
  4. 54 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/BitExpressionsTest.java
  5. 53 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/BooleanExpressionsTest.java
  6. 48 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/CKeywordsTest.java
  7. 100 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ChoiceTest.java
  8. 42 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/DeclarationsTest.java
  9. 60 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/DeepHistoryTest.java
  10. 62 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/EnterStateTest.java
  11. 53 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ExitOnSelfTransitionTest.java
  12. 69 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ExitStateTest.java
  13. 45 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/FeatureCallsTest.java
  14. 57 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/GuardTest.java
  15. 80 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/GuardedEntryTest.java
  16. 58 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/GuardedExitTest.java
  17. 79 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/HistoryWithoutInitialStepTest.java
  18. 46 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/InEventLifeCycleTest.java
  19. 64 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/IntegerExpressionsTest.java
  20. 58 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/InternalEventLifeCycleTest.java
  21. 50 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/NamedInterfaceAccessTest.java
  22. 68 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/OutEventLifeCycleTest.java
  23. 44 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ParenthesisTest.java
  24. 55 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/PriorityValuesTest.java
  25. 49 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/RaiseEventTest.java
  26. 504 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/STextKeywordsInStatesAndRegionsTest.java
  27. 51 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SameNameDifferentRegionTest.java
  28. 72 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ShallowHistoryTest.java
  29. 47 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SimpleEventTest.java
  30. 49 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SimpleHierachyTest.java
  31. 49 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/StateIsActiveTest.java
  32. 53 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/StatechartLocalReactionsTest.java
  33. 53 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/StringExpressionsTest.java
  34. 61 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SyncForkTest.java
  35. 118 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SyncJoinTest.java
  36. 45 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/TransitionWithoutConditionTest.java
  37. 46 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ValuedEventsTest.java

+ 34 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AllTestsTest.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2013 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.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({AlwaysOncycleTest.class, AssignmentAsExpressionTest.class,
+		BitExpressionsTest.class, BooleanExpressionsTest.class,
+		ChoiceTest.class, CKeywordsTest.class, DeclarationsTest.class,
+		DeepHistoryTest.class, EnterStateTest.class,
+		ExitOnSelfTransitionTest.class, ExitStateTest.class, GuardTest.class,
+		GuardedEntryTest.class, GuardedExitTest.class,
+		HistoryWithoutInitialStepTest.class, InEventLifeCycleTest.class,
+		IntegerExpressionsTest.class, InternalEventLifeCycleTest.class,
+		NamedInterfaceAccessTest.class, OutEventLifeCycleTest.class,
+		ParenthesisTest.class, PriorityValuesTest.class, RaiseEventTest.class,
+		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
+		SimpleHierachyTest.class, StateIsActiveTest.class,
+		StatechartLocalReactionsTest.class, StringExpressionsTest.class,
+		SyncForkTest.class, SyncJoinTest.class, SimpleEventTest.class,
+		STextKeywordsInStatesAndRegionsTest.class})
+public class AllTestsTest {
+}

+ 55 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AlwaysOncycleTest.java

@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2013 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 AlwaysOncycle
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class AlwaysOncycleTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("AlwaysOncycle.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void alwaysOncycleTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("StateA"));
+		while (getInteger("value") < 5) {
+			interpreter.runCycle();
+			assertTrue(isActive("StateA"));
+		}
+		interpreter.runCycle();
+		assertTrue(isActive("StateB"));
+		while (getInteger("value") < 5) {
+			interpreter.runCycle();
+			assertTrue(isActive("StateB"));
+		}
+		interpreter.runCycle();
+		assertTrue(isActive("StateA"));
+	}
+}

+ 71 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AssignmentAsExpressionTest.java

@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2013 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 AssignmentAsExpression
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class AssignmentAsExpressionTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("AssignmentAsExpression.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void simpleAssignment() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("Add"));
+		assertTrue(getInteger("b") == 5);
+		assertTrue(getInteger("a") == 9);
+		interpreter.runCycle();
+		assertTrue(isActive("Subtract"));
+		assertTrue(getInteger("d") == 6);
+		interpreter.runCycle();
+		assertTrue(isActive("Multiply"));
+		assertTrue(getInteger("e") == 15);
+		interpreter.runCycle();
+		assertTrue(isActive("Divide"));
+		assertTrue(getInteger("g") == 1);
+		interpreter.runCycle();
+		assertTrue(isActive("Modulo"));
+		assertTrue(getInteger("i") == 1);
+		interpreter.runCycle();
+		assertTrue(isActive("Shift"));
+		assertTrue(getInteger("j") == 16);
+		assertTrue(getInteger("k") == 4);
+		interpreter.runCycle();
+		assertTrue(isActive("boolean And"));
+		assertTrue(getInteger("l") == 1);
+		interpreter.runCycle();
+		assertTrue(isActive("boolean Or"));
+		assertTrue(getInteger("p") == 15);
+		interpreter.runCycle();
+		assertTrue(isActive("boolean Xor"));
+		assertTrue(getInteger("u") == 12);
+		interpreter.exit();
+	}
+}

+ 54 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/BitExpressionsTest.java

@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2013 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 BitExpressions
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class BitExpressionsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("BitExpressions.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void BitExpressions() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("StateA"));
+		assertTrue(getInteger("myBit1") == 5);
+		assertTrue(getInteger("myBit2") == 7);
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("StateB"));
+		assertTrue(getInteger("leftBitshift") == 10);
+		assertTrue(getInteger("rightBitshift") == 2);
+		assertTrue(getInteger("complementBitshift") == -6);
+		assertTrue(getInteger("bitwiseAnd") == 5);
+		assertTrue(getInteger("bitwiseOr") == 7);
+		assertTrue(getInteger("bitwiseXor") == 2);
+	}
+}

+ 53 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/BooleanExpressionsTest.java

@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2013 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 BooleanExpressions
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class BooleanExpressionsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("BooleanExpressions.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void booleanExpressions() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("StateA"));
+		assertTrue(getBoolean("myBool1") == true);
+		assertTrue(getBoolean("myBool2") == false);
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("StateB"));
+		assertTrue(getBoolean("and") == false);
+		assertTrue(getBoolean("or") == true);
+		assertTrue(getBoolean("not") == false);
+		assertTrue(getBoolean("equal") == false);
+		assertTrue(getBoolean("notequal") == true);
+	}
+}

+ 48 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/CKeywordsTest.java

@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2013 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 CKeywords
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class CKeywordsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("CKeywords.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void CKeywordsTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("char"));
+		raiseEvent("auto");
+		interpreter.runCycle();
+		assertTrue(isActive("const"));
+		assertTrue(isActive("case"));
+		assertTrue(isActive("asm"));
+	}
+}

+ 100 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ChoiceTest.java

@@ -0,0 +1,100 @@
+/**
+ * Copyright (c) 2013 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 Choice
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class ChoiceTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models.loadExecutionFlowFromResource("Choice.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void elseChoiceUsingNonDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("c", true);
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+	}
+	@Test
+	public void elseChoiceUsingDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("c", false);
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+	}
+	@Test
+	public void defaultChoiceUsingNonDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("c", true);
+		raiseEvent("g");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+	}
+	@Test
+	public void defaultChoiceUsingDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("c", false);
+		raiseEvent("g");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+	}
+	@Test
+	public void uncheckedChoiceUsingNonDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("c", true);
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+	}
+	@Test
+	public void uncheckedChoiceUsingDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("c", false);
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+	}
+	@Test
+	public void alwaysTrueTransitionInChoice() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("c", true);
+		raiseEvent("h");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+	}
+}

+ 42 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/DeclarationsTest.java

@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2013 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 Declarations
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class DeclarationsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("Declarations.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void declarationsTest() throws Exception {
+		interpreter.enter();
+	}
+}

+ 60 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/DeepHistoryTest.java

@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2013 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 DeepHistory
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class DeepHistoryTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("DeepHistory.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void deepHistoryTest() throws Exception {
+		interpreter.enter();
+		raiseEvent("event1");
+		interpreter.runCycle();
+		raiseEvent("event3");
+		interpreter.runCycle();
+		raiseEvent("event5");
+		interpreter.runCycle();
+		raiseEvent("event7");
+		interpreter.runCycle();
+		assertTrue(!isActive("State1"));
+		assertTrue(isActive("State9"));
+		raiseEvent("event2");
+		interpreter.runCycle();
+		assertTrue(isActive("State1"));
+		assertTrue(!isActive("State9"));
+		raiseEvent("event1");
+		interpreter.runCycle();
+		assertTrue(!isActive("State1"));
+		assertTrue(isActive("State9"));
+	}
+}

+ 62 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/EnterStateTest.java

@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2013 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 EnterState
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class EnterStateTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("EnterState.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void defaultEntry() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("E"));
+	}
+	@Test
+	public void namedEntryThroughNamedTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("F"));
+	}
+	@Test
+	public void namedEntryThroughDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("g");
+		interpreter.runCycle();
+		assertTrue(isActive("E"));
+	}
+}

+ 53 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ExitOnSelfTransitionTest.java

@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2013 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 ExitOnSelfTransition
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class ExitOnSelfTransitionTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("ExitOnSelfTransition.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void ExitOnSelfTransitionTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		assertTrue(getInteger("entryCount") == 1);
+		assertTrue(getInteger("exitCount") == 0);
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(getInteger("entryCount") == 2);
+		assertTrue(getInteger("exitCount") == 1);
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(getInteger("entryCount") == 2);
+		assertTrue(getInteger("exitCount") == 2);
+	}
+}

+ 69 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ExitStateTest.java

@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2013 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 ExitState
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class ExitStateTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("ExitState.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void defaultExit() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("E"));
+	}
+	@Test
+	public void namedExitThroughNamedTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("F"));
+	}
+	@Test
+	public void namedExitThroughDefaultTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("g");
+		interpreter.runCycle();
+		assertTrue(isActive("E"));
+	}
+	@Test
+	public void remainInA() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+	}
+}

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

@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2013 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 FeatureCalls
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class FeatureCallsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("FeatureCalls.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void FeatureCalls() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+	}
+}

+ 57 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/GuardTest.java

@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2013 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 Guard
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class GuardTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models.loadExecutionFlowFromResource("Guard.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void guardTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("Event1");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		raiseEvent("Event2");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		raiseEvent("Return");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		raiseEvent("Event1");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		raiseEvent("Return");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+	}
+}

+ 80 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/GuardedEntryTest.java

@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2013 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 GuardedEntry
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class GuardedEntryTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("GuardedEntry.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void EntryNotTakenOnStatechartEnter() throws Exception {
+		assertTrue(getBoolean("guard") == false);
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		assertTrue(getBoolean("done") == false);
+	}
+	@Test
+	public void EntryTakenOnStatechartEnter() throws Exception {
+		setBoolean("guard", true);
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		assertTrue(getBoolean("done") == true);
+	}
+	@Test
+	public void EntryTakenInTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		setBoolean("guard", true);
+		setBoolean("done", false);
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(getBoolean("done"));
+	}
+	@Test
+	public void EntryNotTakenInTransition() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		setBoolean("guard", false);
+		setBoolean("done", false);
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(!getBoolean("done"));
+	}
+}

+ 58 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/GuardedExitTest.java

@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2013 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 GuardedExit
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class GuardedExitTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("GuardedExit.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void ExitTaken() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		assertTrue(!getBoolean("guard"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		assertTrue(!getBoolean("done"));
+	}
+	@Test
+	public void ExitNotTaken() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		setBoolean("guard", true);
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		assertTrue(getBoolean("done"));
+	}
+}

+ 79 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/HistoryWithoutInitialStepTest.java

@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2013 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 HistoryWithoutInitialStep
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class HistoryWithoutInitialStepTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("HistoryWithoutInitialStep.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void enterThroughInitialEntry() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("D"));
+	}
+	@Test
+	public void enterCThroughHistory() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+	}
+	@Test
+	public void enterDThroughHistory() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("D"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("D"));
+	}
+}

+ 46 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/InEventLifeCycleTest.java

@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2013 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 InEventLifeCycle
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class InEventLifeCycleTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("InEventLifeCycle.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void eventLifeCycle() throws Exception {
+		interpreter.enter();
+		raiseEvent("e");
+		assertTrue(getInteger("i") == 0);
+		interpreter.runCycle();
+		assertTrue(getInteger("i") == 1);
+	}
+}

+ 64 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/IntegerExpressionsTest.java

@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2013 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 IntegerExpressions
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class IntegerExpressionsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("IntegerExpressions.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void integerExpressions() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("StateA"));
+		assertTrue(getInteger("myInt1") == 10);
+		assertTrue(getInteger("myInt2") == 5);
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(getBoolean("less") == false);
+		assertTrue(getBoolean("greater") == true);
+		assertTrue(getBoolean("equalOrLess") == false);
+		assertTrue(getBoolean("equalOrGreater") == true);
+		assertTrue(getBoolean("equal") == false);
+		assertTrue(getBoolean("notEqual") == true);
+		assertTrue(getInteger("plus") == 15);
+		assertTrue(getInteger("minus") == 5);
+		assertTrue(getInteger("multiply") == 50);
+		assertTrue(getInteger("division") == 2);
+		assertTrue(getInteger("modulo") == 0);
+		assertTrue(getInteger("negat") == -10);
+		assertTrue(getInteger("multiAssign") == 20);
+		assertTrue(getInteger("divAssign") == 2);
+		assertTrue(getInteger("plusAssign") == 12);
+		assertTrue(getInteger("minusAssign") == -8);
+		assertTrue(getInteger("moduloAssign") == 0);
+	}
+}

+ 58 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/InternalEventLifeCycleTest.java

@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2013 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 InternalEventLifeCycle
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class InternalEventLifeCycleTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("InternalEventLifeCycle.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void InternalEventLifeCycleTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		assertTrue(isActive("C"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(isActive("D"));
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(isActive("D"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(isActive("C"));
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(isActive("C"));
+	}
+}

+ 50 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/NamedInterfaceAccessTest.java

@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2013 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 NamedInterfaceAccess
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class NamedInterfaceAccessTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("NamedInterfaceAccess.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void SafeOpenSuccess() throws Exception {
+		interpreter.enter();
+		interpreter.runCycle();
+		raiseEvent("User.numberPressed", 3);
+		interpreter.runCycle();
+		raiseEvent("User.numberPressed", 7);
+		interpreter.runCycle();
+		raiseEvent("User.numberPressed", 5);
+		interpreter.runCycle();
+		assertTrue(isRaised("Safe.open"));
+	}
+}

+ 68 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/OutEventLifeCycleTest.java

@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2013 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 OutEventLifeCycle
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class OutEventLifeCycleTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("OutEventLifeCycle.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void availableAfterCycle() throws Exception {
+		interpreter.enter();
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isRaised("f"));
+	}
+	@Test
+	public void availableWithinCycle() throws Exception {
+		interpreter.enter();
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(getBoolean("f_available_in_cycle"));
+	}
+	@Test
+	public void unvailableWithin2ndCycle() throws Exception {
+		interpreter.enter();
+		raiseEvent("e");
+		interpreter.runCycle();
+		interpreter.runCycle();
+		assertTrue(!getBoolean("f_available_in_next_cycle"));
+	}
+	@Test
+	public void unvailableAfter2ndCycle() throws Exception {
+		interpreter.enter();
+		raiseEvent("e");
+		interpreter.runCycle();
+		interpreter.runCycle();
+		assertTrue(!isRaised("f"));
+	}
+}

+ 44 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ParenthesisTest.java

@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2013 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 Parenthesis
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class ParenthesisTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("Parenthesis.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void simple() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		assertTrue(getInteger("erg") == 8);
+	}
+}

+ 55 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/PriorityValuesTest.java

@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2013 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 PriorityValues
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class PriorityValuesTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("PriorityValues.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void transitionPriority() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("event1");
+		interpreter.runCycle();
+		assertTrue(isActive("C"));
+	}
+	@Test
+	public void regionPriority() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("event2");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		assertTrue(!isActive("E"));
+	}
+}

+ 49 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/RaiseEventTest.java

@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2013 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 RaiseEvent
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class RaiseEventTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("RaiseEvent.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void raiseEvent() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("SateA"));
+		assertTrue(isActive("StateA"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		interpreter.runCycle();
+		assertTrue(isActive("StateB"));
+		assertTrue(isActive("StateB"));
+	}
+}

+ 504 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/STextKeywordsInStatesAndRegionsTest.java

@@ -0,0 +1,504 @@
+/**
+ * Copyright (c) 2013 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 STextKeywordsInStatesAndRegions
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class STextKeywordsInStatesAndRegionsTest
+		extends
+			AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("STextKeywordsInStatesAndRegions.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void activeCheckWithSTextNamedStates() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("raise"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("active"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("interface"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("event"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("in"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("var"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("external"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("default"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("entry"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("always"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("raise"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		raiseEvent("e2");
+		interpreter.runCycle();
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+		assertTrue(isActive("namespace"));
+		assertTrue(isActive("internal"));
+		assertTrue(isActive("local"));
+		assertTrue(isActive("out"));
+		assertTrue(isActive("readonly"));
+		assertTrue(isActive("operation"));
+		assertTrue(isActive("else"));
+		assertTrue(isActive("exit"));
+		assertTrue(isActive("oncycle"));
+		assertTrue(isActive("valueof"));
+	}
+}

+ 51 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SameNameDifferentRegionTest.java

@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2013 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 SameNameDifferentRegion
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class SameNameDifferentRegionTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("SameNameDifferentRegion.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void sameNameDifferenRegionTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("StateA"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("StateB"));
+		assertTrue(isActive("StateA"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("StateB"));
+		assertTrue(isActive("StateB"));
+	}
+}

+ 72 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ShallowHistoryTest.java

@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2013 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 ShallowHistory
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class ShallowHistoryTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("ShallowHistory.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void shallowHistoryTest() throws Exception {
+		interpreter.enter();
+		raiseEvent("event1");
+		interpreter.runCycle();
+		raiseEvent("event3");
+		interpreter.runCycle();
+		raiseEvent("event5");
+		interpreter.runCycle();
+		raiseEvent("event7");
+		interpreter.runCycle();
+		assertTrue(!isActive("State1"));
+		assertTrue(isActive("State9"));
+		raiseEvent("event6");
+		interpreter.runCycle();
+		assertTrue(!isActive("State9"));
+		assertTrue(isActive("State6"));
+		raiseEvent("event5");
+		interpreter.runCycle();
+		assertTrue(!isActive("State8"));
+		assertTrue(isActive("State9"));
+		raiseEvent("event2");
+		interpreter.runCycle();
+		assertTrue(!isActive("State9"));
+		assertTrue(isActive("State1"));
+		raiseEvent("event1");
+		interpreter.runCycle();
+		assertTrue(isActive("State6"));
+		assertTrue(!isActive("State1"));
+		raiseEvent("event5");
+		interpreter.runCycle();
+		assertTrue(!isActive("State6"));
+		assertTrue(isActive("State9"));
+	}
+}

+ 47 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SimpleEventTest.java

@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2013 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 SimpleEvent
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class SimpleEventTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("SimpleEvent.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void simpleEventTest() throws Exception {
+		interpreter.enter();
+		assertTrue("Expected A to be active", isActive("A"));
+		assertTrue(5 == 5);
+		raiseEvent("Event1");
+		interpreter.runCycle();
+		assertTrue("Expected B to be active", isActive("B"));
+	}
+}

+ 49 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SimpleHierachyTest.java

@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2013 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 SimpleHierachy
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class SimpleHierachyTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("SimpleHierachy.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void simpleHierachyTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("Event1");
+		raiseEvent("Event1");
+		raiseEvent("Event1");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		assertTrue(isActive("B1"));
+	}
+}

+ 49 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/StateIsActiveTest.java

@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2013 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 StateIsActive
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class StateIsActiveTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("StateIsActive.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void stateIsActive() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("R1A"));
+		assertTrue(isActive("R2A"));
+		raiseEvent("Event1");
+		interpreter.runCycle();
+		interpreter.runCycle();
+		assertTrue(isActive("R1B"));
+		assertTrue(isActive("R2B"));
+	}
+}

+ 53 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/StatechartLocalReactionsTest.java

@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2013 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 StatechartLocalReactions
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class StatechartLocalReactionsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("StatechartLocalReactions.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void statechartLocalReactionsTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("S1"));
+		assertTrue(isActive("a"));
+		while (getInteger("myInt") < 10) {
+			assertTrue(isActive("a"));
+			if (getInteger("myInt") % 2 == 0) {
+				assertTrue(isActive("S1"));;
+			} else {
+				assertTrue(isActive("S2"));;
+			}
+			interpreter.runCycle();
+		}
+	}
+}

+ 53 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/StringExpressionsTest.java

@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2013 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 StringExpressions
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class StringExpressionsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("StringExpressions.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void StringExpressionsTest() throws Exception {
+		assertTrue(getString("quotedString").equals("\"x\""));
+		interpreter.enter();
+		assertTrue(isActive("StateA"));
+		assertTrue(getString("myString").equals("hello"));
+		assertTrue(getString("myString2").equals("world"));
+		assertTrue(getString("quotedString").equals("'y'"));
+		raiseEvent("e1");
+		interpreter.runCycle();
+		assertTrue(isActive("StateB"));
+		assertTrue(getBoolean("equals") == false);
+		assertTrue(getBoolean("notEqual") == true);
+		assertTrue(getString("quotedString").equals("\"z\""));
+	}
+}

+ 61 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SyncForkTest.java

@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2013 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 SyncFork
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class SyncForkTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("SyncFork.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void syncForkTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D1"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D2"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D1"));
+	}
+}

+ 118 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/SyncJoinTest.java

@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2013 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 SyncJoin
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class SyncJoinTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("SyncJoin.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void syncJoin_C2_Waits() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("B"));
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D1"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D1"));
+		raiseEvent("jc");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D1"));
+		raiseEvent("jd");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D1"));
+		raiseEvent("jc");
+		raiseEvent("jd");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D1"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D2"));
+		raiseEvent("jc");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D2"));
+		raiseEvent("jd");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D2"));
+		raiseEvent("jc");
+		raiseEvent("jd");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+	}
+	@Test
+	public void syncJoin_D2_Waits() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("B"));
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D1"));
+		raiseEvent("f");
+		interpreter.runCycle();
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D2"));
+		raiseEvent("jc");
+		interpreter.runCycle();
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D2"));
+		raiseEvent("jd");
+		interpreter.runCycle();
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D2"));
+		raiseEvent("jc");
+		raiseEvent("jd");
+		interpreter.runCycle();
+		assertTrue(isActive("C1"));
+		assertTrue(isActive("D2"));
+		raiseEvent("e");
+		interpreter.runCycle();
+		assertTrue(isActive("C2"));
+		assertTrue(isActive("D2"));
+	}
+	@Test
+	public void doubleEntryActionBug() throws Exception {
+		interpreter.enter();
+		raiseEvent("e");
+		raiseEvent("f");
+		interpreter.runCycle();
+		raiseEvent("jc");
+		raiseEvent("jd");
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(getInteger("x") == 1);
+	}
+}

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

@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2013 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 TransitionWithoutCondition
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class TransitionWithoutConditionTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("TransitionWithoutCondition.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void TransitionWithoutConditionTest() throws Exception {
+		interpreter.enter();
+		assertTrue(isActive("A"));
+		interpreter.runCycle();
+		assertTrue(isActive("B"));
+	}
+}

+ 46 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ValuedEventsTest.java

@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2013 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 ValuedEvents
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class ValuedEventsTest extends AbstractExecutionFlowTest {
+	@Inject
+	private SCTUnitTestModels models;
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models
+				.loadExecutionFlowFromResource("ValuedEvents.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void valuedEventsTest() throws Exception {
+		interpreter.enter();
+		interpreter.runCycle();
+		assertTrue(isActive("A"));
+		assertTrue(isActive("C"));
+		assertTrue(getInteger("myVar") == 42);
+	}
+}