Просмотр исходного кода

Share project "org.yakindu.sct.simulation.core.sexec.test" into "https://svn.codespot.com/a/eclipselabs.org/yakindu"

Andreas Mülder 12 лет назад
Родитель
Сommit
e91d370ae6
51 измененных файлов с 5036 добавлено и 0 удалено
  1. 8 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/.classpath
  2. 45 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/.project
  3. 4 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.core.resources.prefs
  4. 2 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.core.runtime.prefs
  5. 8 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.jdt.core.prefs
  6. 8 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.xtend.core.Xtend.prefs
  7. 21 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/META-INF/MANIFEST.MF
  8. 5 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/build.properties
  9. 301 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/model/test.sgen
  10. 45 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/pom.xml
  11. 1203 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/CoreFunctionTest.java
  12. 559 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/STextInterpreterTest.java
  13. 123 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/util/AbstractExecutionFlowTest.java
  14. 32 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/util/SExecInjectionProvider.java
  15. 34 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/AllTestsTest.java
  16. 57 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/AlwaysOncycleTest.java
  17. 73 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/AssignmentAsExpressionTest.java
  18. 56 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/BitExpressionsTest.java
  19. 55 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/BooleanExpressionsTest.java
  20. 50 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/CKeywordsTest.java
  21. 102 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ChoiceTest.java
  22. 42 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/DeclarationsTest.java
  23. 62 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/DeepHistoryTest.java
  24. 64 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/EnterStateTest.java
  25. 55 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ExitOnSelfTransitionTest.java
  26. 71 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ExitStateTest.java
  27. 47 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/FeatureCallsTest.java
  28. 59 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/GuardTest.java
  29. 82 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/GuardedEntryTest.java
  30. 60 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/GuardedExitTest.java
  31. 81 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/HistoryWithoutInitialStepTest.java
  32. 48 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/InEventLifeCycleTest.java
  33. 66 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/IntegerExpressionsTest.java
  34. 60 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/InternalEventLifeCycleTest.java
  35. 52 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/NamedInterfaceAccessTest.java
  36. 70 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/OutEventLifeCycleTest.java
  37. 46 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ParenthesisTest.java
  38. 57 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/PriorityValuesTest.java
  39. 51 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/RaiseEventTest.java
  40. 506 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/STextKeywordsInStatesAndRegionsTest.java
  41. 53 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SameNameDifferentRegionTest.java
  42. 74 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ShallowHistoryTest.java
  43. 49 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SimpleEventTest.java
  44. 51 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SimpleHierachyTest.java
  45. 51 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/StateIsActiveTest.java
  46. 55 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/StatechartLocalReactionsTest.java
  47. 55 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/StringExpressionsTest.java
  48. 63 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SyncForkTest.java
  49. 120 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SyncJoinTest.java
  50. 47 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/TransitionWithoutConditionTest.java
  51. 48 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ValuedEventsTest.java

+ 8 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/.classpath

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="test-gen"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 45 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/.project

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.sct.model.sexec.interpreter.test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+	<filteredResources>
+		<filter>
+			<id>1375978402544</id>
+			<name></name>
+			<type>10</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-name-matches-false-false-target</arguments>
+			</matcher>
+		</filter>
+	</filteredResources>
+</projectDescription>

+ 4 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+encoding//testmodels/SimpleEvent.sct=UTF-8
+encoding//testmodels/ValuedEvents.sct=UTF-8
+encoding/<project>=UTF-8

+ 2 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.core.runtime.prefs

@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n

+ 8 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,8 @@
+#Mon Dec 05 10:59:47 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

+ 8 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/.settings/org.eclipse.xtend.core.Xtend.prefs

@@ -0,0 +1,8 @@
+autobuilding=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.cleanDirectory=false
+outlet.DEFAULT_OUTPUT.cleanupDerived=true
+outlet.DEFAULT_OUTPUT.createDirectory=true
+outlet.DEFAULT_OUTPUT.derived=false
+outlet.DEFAULT_OUTPUT.override=true

+ 21 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/META-INF/MANIFEST.MF

@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Interpreter Test Plugin
+Bundle-SymbolicName: org.yakindu.sct.simulation.core.sexec.test
+Bundle-Version: 2.1.2.qualifier
+Bundle-Vendor: yakindu.org
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.xtext;bundle-version="2.0.0",
+ org.junit;bundle-version="4.8.2",
+ org.yakindu.sct.model.sexec;bundle-version="1.0.0",
+ org.yakindu.sct.simulation.core;bundle-version="1.0.0",
+ org.yakindu.sct.model.stext;bundle-version="1.0.0",
+ org.yakindu.sct.model.stext.resource;bundle-version="1.0.0",
+ de.itemis.xtext.utils.gmf;bundle-version="1.0.0",
+ org.eclipse.gmf.runtime.emf.core;bundle-version="1.4.1",
+ org.eclipse.xtext.junit4;bundle-version="2.0.1",
+ org.yakindu.sct.model.stext.test;bundle-version="1.0.0",
+ org.yakindu.sct.test.models;bundle-version="1.0.0",
+ org.yakindu.sct.simulation.core.sexec;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy

+ 5 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/build.properties

@@ -0,0 +1,5 @@
+source.. = src/,\
+           test-gen/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\

+ 301 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/model/test.sgen

@@ -0,0 +1,301 @@
+GeneratorModel for sctunit::interpreter {
+
+	test AllTests {
+	
+		feature Outlet {
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test"
+			targetFolder = "test-gen"
+		}
+	}	
+	
+	test AlwaysOncycle{ 
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test AssignmentAsExpression{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test BitExpressions{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test BooleanExpressions{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test Choice{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test CKeywords{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test Declarations{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test DeepHistory{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test EnterState{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test ExitOnSelfTransition{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test ExitState{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test FeatureCalls{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test Guard{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test GuardedEntry{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test GuardedExit{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test HistoryWithoutInitialStep{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test InEventLifeCycle{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test IntegerExpressions{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}	
+	
+	test InternalEventLifeCycle{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+		
+	test NamedInterfaceAccess{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+
+	test OutEventLifeCycle{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}	
+	
+	test Parenthesis{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+		
+	test PriorityValues{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}	
+	
+	test RaiseEvent{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+		
+	test SameNameDifferentRegion{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}	
+	
+	
+	test ShallowHistory{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test SimpleEvent{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test SimpleHierachy{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test StatechartLocalReactions{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test StateIsActive{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test STextKeywordsInStatesAndRegions{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test StringExpressions{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test SyncFork{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test SyncJoin{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+	test TransitionWithoutCondition{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
+
+	test ValuedEvents{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.model.sexec.interpreter.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+		
+}

+ 45 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/pom.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.yakindu.sct</groupId>
+		<artifactId>org.yakindu.sct.releng</artifactId>
+		<version>2.1.2-SNAPSHOT</version>
+		<relativePath>../org.yakindu.sct.releng/pom.xml</relativePath>
+	</parent>
+	<artifactId>org.yakindu.sct.simulation.core.sexec.test</artifactId>
+	<groupId>org.yakindu.sct.plugins</groupId>
+	<packaging>eclipse-test-plugin</packaging>
+	
+
+	
+	<properties>
+		<testFailureIgnore>false</testFailureIgnore>
+	</properties>
+	
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+
+					<excludes>
+						<exclude>**/util/TestModels.class</exclude>
+						<!-- It's toooo slow in the interpreter -->
+						<exclude>**/PerformanceTestTest.class</exclude>
+					</excludes>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+					<testFailureIgnore>${testFailureIgnore}</testFailureIgnore>
+					<argLine>${test.vmargs}</argLine>
+				</configuration>
+			</plugin>
+			
+		</plugins>
+	</build>
+</project>

Разница между файлами не показана из-за своего большого размера
+ 1203 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/CoreFunctionTest.java


+ 559 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/STextInterpreterTest.java

@@ -0,0 +1,559 @@
+/**
+ * Copyright (c) 2010 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.model.sexec.interpreter.test;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.xtext.junit4.InjectWith;
+import org.eclipse.xtext.junit4.XtextRunner;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.yakindu.base.types.ITypeSystem.InferredType;
+import org.yakindu.sct.model.sgraph.Scope;
+import org.yakindu.sct.model.sgraph.Statement;
+import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.test.util.AbstractSTextTest;
+import org.yakindu.sct.model.stext.test.util.STextInjectorProvider;
+import org.yakindu.sct.model.stext.types.ISTextTypeSystem;
+import org.yakindu.sct.simulation.core.sexec.interpreter.IStatementInterpreter;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
+import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl;
+import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl;
+
+import com.google.inject.Inject;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@RunWith(XtextRunner.class)
+@InjectWith(STextInjectorProvider.class)
+public class STextInterpreterTest extends AbstractSTextTest {
+
+	@Inject
+	private ExecutionContext context;
+	@Inject
+	private IStatementInterpreter interpreter;
+	@Inject
+	private ISTextTypeSystem typeSystem;
+
+	@Test
+	public void testIntVariableAssignment() {
+		executeWithDefaultScope("intVar = 42");
+		assertEquals(42, getIntValue());
+	}
+
+	@Test
+	public void testHexVariableAssignment() {
+		executeWithDefaultScope("intVar = 0xFF");
+		assertEquals(0xFF, getIntValue());
+	}
+
+	@Test
+	public void testBoolTrueVariableAssignment() {
+		executeWithDefaultScope("boolVar = true");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testBoolFalseVariableAssignment() {
+		executeWithDefaultScope("boolVar = false");
+		assertEquals(false, getContext().getVariable("boolVar").getValue());
+	}
+
+	@Test
+	public void testFloatVariableAssignment() {
+		executeWithDefaultScope("realVar = 42.0");
+		assertEquals(42.0f, getContext().getVariable("realVar").getValue());
+	}
+
+	@Test
+	public void testStringVariableAssignment() {
+		executeWithDefaultScope("stringVar = 'fortytwo'");
+		assertEquals("fortytwo", getStringValue());
+	}
+
+	@Test
+	public void testConditionalTrue() {
+		executeWithDefaultScope("intVar = true ? 42 : 1");
+		assertEquals(42, getIntValue());
+	}
+
+	@Test
+	public void testConditionalFalse() {
+		executeWithDefaultScope("intVar = false ? 42 : 1");
+		assertEquals(1, getIntValue());
+	}
+
+	@Test
+	public void testNestedExpression() {
+		executeWithDefaultScope("intVar = (1 + 1) * 2");
+		assertEquals(4, getIntValue());
+	}
+
+	@Test
+	public void testBooleanOr() {
+		executeWithDefaultScope("boolVar = true || false");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testBooleanAnd() {
+		executeWithDefaultScope("boolVar = true && false");
+		assertEquals(false, getContext().getVariable("boolVar").getValue());
+	}
+
+	@Test
+	public void testBitwiseXor() {
+		executeWithDefaultScope("intVar = 0xF0F0 ^ 0xFF00");
+		assertEquals(0x0FF0, getContext().getVariable("intVar").getValue());
+
+	}
+
+	@Test
+	public void testBitwiseOr() {
+		executeWithDefaultScope("intVar = 0xF0F0 | 0xFFFF");
+		assertEquals(0xFFFF, getContext().getVariable("intVar").getValue());
+	}
+
+	@Test
+	public void testBitwiseAnd() {
+		executeWithDefaultScope("intVar = 0xF0F0 & 0xFFFF");
+		assertEquals(0x0F0F0, getContext().getVariable("intVar").getValue());
+	}
+
+	@Test
+	public void testBoolEqual() {
+		executeWithDefaultScope("boolVar = false == false");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testIntEqual() {
+		executeWithDefaultScope("boolVar = 1 == 1");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testFloatEqual() {
+		executeWithDefaultScope("boolVar = 1.0f == 1.0f");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testStringEqual() {
+		executeWithDefaultScope("boolVar = 'string' == 'string'");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testBoolNotEqual() {
+		executeWithDefaultScope("boolVar = true != false");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testIntNotEqual() {
+		executeWithDefaultScope("boolVar = 1 != 2");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testFloatNotEqual() {
+		executeWithDefaultScope("boolVar = 1.0f != 2.0f");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testStringNotEqual() {
+		executeWithDefaultScope("boolVar = 'string' != 'string2'");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testIntGreaterEqual() {
+		executeWithDefaultScope("boolVar = 2 >= 1");
+		assertEquals(true, getBoolValue());
+
+	}
+
+	@Test
+	public void testFloatGreaterEqual() {
+		executeWithDefaultScope("boolVar = 2.0f >= 2.0f");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testIntSmallerEqual() {
+		executeWithDefaultScope("boolVar = 1 <= 2");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testFloatSmallerEqual() {
+		executeWithDefaultScope("boolVar = 2.0f <= 2.0f");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testIntGreater() {
+		executeWithDefaultScope("boolVar = 2 > 1");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testFloatGreater() {
+		executeWithDefaultScope("boolVar = 2.1f > 2.0f");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testIntSmaller() {
+		executeWithDefaultScope("boolVar = 1 < 2");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testFloatSmaller() {
+		executeWithDefaultScope("boolVar = 2.0f < 2.1f");
+		assertEquals(true, getBoolValue());
+	}
+
+	@Test
+	public void testIntPositive() {
+		executeWithDefaultScope("intVar = + 1");
+		assertEquals(1, getIntValue());
+		executeWithDefaultScope("intVar = +2");
+		assertEquals(2, getIntValue());
+	}
+
+	@Test
+	public void testFloatPositive() {
+		executeWithDefaultScope("realVar = +1.0");
+		assertEquals(1.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntNegative() {
+		executeWithDefaultScope("intVar = - 1");
+		assertEquals(-1, getIntValue());
+		executeWithDefaultScope("intVar = -2");
+		assertEquals(-2, getIntValue());
+
+	}
+
+	// @Test
+	// public void testIntNegativeVar() {
+	// RTVariable a = new RTVariable("a");
+	// scope.addVariable(a);
+	// scope.setVariableValue(a, 42);
+	// executeWithDefaultScope("a = -a;");
+	// stmt.execute(scope);
+	//
+	// assertEquals(-42, scope.getValue("a"));
+	// }
+
+	@Test
+	public void testFloatNegative() {
+		executeWithDefaultScope("realVar = -1.0f");
+		assertEquals(-1.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntPlus() {
+		executeWithDefaultScope("intVar = 42 + 1");
+		assertEquals(43, getIntValue());
+	}
+
+	@Test
+	public void testFloatPlus() {
+		executeWithDefaultScope("realVar = 42.0 + 1.0");
+		assertEquals(43.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntMinus() {
+		executeWithDefaultScope("intVar = 42 - 1");
+		assertEquals(41, getIntValue());
+	}
+
+	@Test
+	public void testFloatMinus() {
+		executeWithDefaultScope("realVar = 42.0f - 1.0f");
+		assertEquals(41.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntMultiply() {
+		executeWithDefaultScope("intVar = 42 * 2");
+		assertEquals(84, getIntValue());
+	}
+
+	@Test
+	public void testFloatMultiply() {
+		executeWithDefaultScope("realVar = 42.0f * 2.0f");
+		assertEquals(84.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntDivide() {
+		executeWithDefaultScope("intVar = 42 / 2");
+		assertEquals(21, getIntValue());
+	}
+
+	@Test
+	public void testFloatDivide() {
+		executeWithDefaultScope("realVar = 42.0f / 2.0f");
+		assertEquals(21.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntModulo() {
+		executeWithDefaultScope("intVar = 42 % 2");
+		assertEquals(0, getIntValue());
+	}
+
+	@Test
+	public void testFloatModulo() {
+		executeWithDefaultScope("realVar = 42.0f % 2.0f");
+		assertEquals(0.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntLeft() {
+		executeWithDefaultScope("intVar = 42 << 2");
+		assertEquals(168, getIntValue());
+	}
+
+	@Test
+	public void testIntRight() {
+		executeWithDefaultScope("intVar = 42 >> 2");
+		assertEquals(10, getIntValue());
+	}
+
+	@Test
+	public void testIntAnd() {
+		executeWithDefaultScope("intVar= 9 & 12");
+		assertEquals(8, getIntValue());
+	}
+
+	@Test
+	public void testIntXor() {
+		executeWithDefaultScope("intVar= 9 ^ 12");
+		assertEquals(5, getIntValue());
+	}
+
+	@Test
+	public void testIntOr() {
+		executeWithDefaultScope("intVar= 9 | 12");
+		assertEquals(13, getIntValue());
+	}
+
+	@Test
+	public void testIntBitComplement() {
+		executeWithDefaultScope("intVar= ~9");
+		assertEquals(-10, getIntValue());
+	}
+
+	@Test
+	public void testNot() {
+		executeWithDefaultScope("boolVar = ! true");
+		assertEquals(false, getBoolValue());
+	}
+
+	@Test
+	public void testPrirority() {
+		executeWithDefaultScope("intVar = 1 + 2 * 3");
+		assertEquals(7, getIntValue());
+	}
+
+	@Test
+	public void testNested() {
+		executeWithDefaultScope("intVar = (1 + 2) * 3");
+		assertEquals(9, getIntValue());
+	}
+
+	@Test
+	public void testIntPlusAssign() {
+		executeWithDefaultScope("intVar=42");
+		executeWithDefaultScope("intVar+=42");
+		assertEquals(84, getIntValue());
+	}
+
+	@Test
+	public void testFloatPlusAssign() {
+		executeWithDefaultScope("realVar = 42.0");
+		executeWithDefaultScope("realVar+=42.0");
+		assertEquals(84.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntMinusAssign() {
+		executeWithDefaultScope("intVar=42");
+		executeWithDefaultScope("intVar-=10");
+		assertEquals(32, getIntValue());
+	}
+
+	@Test
+	public void testFloatMinusAssign() {
+		executeWithDefaultScope("realVar=42.0f");
+		executeWithDefaultScope("realVar-=10.0");
+		assertEquals(32.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntMultAssign() {
+		executeWithDefaultScope("intVar=42");
+		executeWithDefaultScope("intVar*=1");
+		assertEquals(42, getIntValue());
+	}
+
+	@Test
+	public void testFloatMultAssign() {
+		executeWithDefaultScope("realVar=42.0f");
+		executeWithDefaultScope("realVar*=1.0");
+		assertEquals(42.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntDivAssign() {
+		executeWithDefaultScope("intVar=42");
+		executeWithDefaultScope("intVar/=1");
+		assertEquals(42, getIntValue());
+	}
+
+	@Test
+	public void testFloatDivAssign() {
+		executeWithDefaultScope("realVar=42.0f");
+		executeWithDefaultScope("realVar/=1.0f");
+		assertEquals(42.0f, getFloatValue());
+	}
+
+	@Test
+	public void testIntModAssign() {
+		executeWithDefaultScope("intVar=42");
+		executeWithDefaultScope("intVar%=1");
+		assertEquals(0, getIntValue());
+	}
+
+	@Test
+	public void testFloatModAssign() {
+		executeWithDefaultScope("realVar=42.0f");
+		executeWithDefaultScope("realVar%=1.0f");
+		assertEquals(0.0f, getFloatValue());
+	}
+
+	@Test
+	public void testPlainTrue() {
+		assertEquals(true, executeExpression("", "true"));
+	}
+
+	@Test
+	public void testPlainFalse() {
+		assertEquals(false, executeExpression("", "false"));
+	}
+
+	// Convenience...
+
+	@Before
+	public void setup() {
+		initContext();
+	}
+
+	private void initContext() {
+		// "event abc operation foo() var intVar : integer var boolVar : boolean
+		// var realVar : real
+		ExecutionVariable intVar = new ExecutionVariableImpl();
+		intVar.setName("intVar");
+		intVar.setFqName("intVar");
+		intVar.setType(new InferredType(typeSystem.getIntegerType()));
+		intVar.setValue(0);
+		context.getSlots().add(intVar);
+		
+		ExecutionVariable boolVar = new ExecutionVariableImpl();
+		boolVar.setName("boolVar");
+		boolVar.setFqName("boolVar");
+		boolVar.setType(new InferredType(typeSystem.getBooleanType()));
+		boolVar.setValue(false);
+		context.getSlots().add(boolVar);
+		
+		ExecutionVariable realVar = new ExecutionVariableImpl();
+		realVar.setName("realVar");
+		realVar.setFqName("realVar");
+		realVar.setType(new InferredType(typeSystem.getRealType()));
+		realVar.setValue(0.0f);
+		context.getSlots().add(realVar);
+		
+		ExecutionVariable stringVar = new ExecutionVariableImpl();
+		stringVar.setName("stringVar");
+		stringVar.setFqName("stringVar");
+		stringVar.setType(new InferredType(typeSystem.getStringType()));
+		stringVar.setValue("");
+		context.getSlots().add(stringVar);
+		
+		ExecutionEvent event = new ExecutionEventImpl();
+		event.setName("abc");
+		event.setFqName("abc");
+		event.setType(new InferredType(typeSystem.getIntegerType()));
+		context.getSlots().add(event);
+	}
+
+	protected Object getBoolValue() {
+		return context.getVariable("boolVar").getValue();
+	}
+
+	protected Object getIntValue() {
+		return context.getVariable("intVar").getValue();
+	}
+
+	protected Object getFloatValue() {
+		return context.getVariable("realVar").getValue();
+	}
+
+	protected Object getStringValue() {
+		return context.getVariable("stringVar").getValue();
+	}
+
+	protected Object executeWithDefaultScope(String expression) {
+		Scope defaultScope = internalScope();
+		Expression statement = (Expression) parseExpression(expression,
+				defaultScope, Expression.class.getSimpleName());
+		return interpreter.evaluateStatement(statement, context);
+	}
+
+	protected Object execute(String scope, String expression) {
+		Scope defaultScope = createInternalScope(scope);
+		Expression statement = (Expression) parseExpression(expression,
+				defaultScope, Expression.class.getSimpleName());
+		return interpreter.evaluateStatement(statement, context);
+	}
+
+	protected Object executeExpression(String scope, String expression) {
+		Scope defaultScope = createInternalScope(scope);
+		Statement statement = (Statement) parseExpression(expression,
+				defaultScope, Expression.class.getSimpleName());
+		return interpreter.evaluateStatement(statement, context);
+	}
+
+	public ExecutionContext getContext() {
+		return context;
+	}
+
+	@After
+	public void tearDown() {
+		context = null;
+	}
+}

+ 123 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/util/AbstractExecutionFlowTest.java

@@ -0,0 +1,123 @@
+/**
+ * Copyright (c) 2012 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.model.sexec.interpreter.test.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.List;
+
+import org.yakindu.sct.model.sexec.ExecutionFlow;
+import org.yakindu.sct.model.sgraph.RegularState;
+import org.yakindu.sct.simulation.core.sexec.container.IExecutionContextInitializer;
+import org.yakindu.sct.simulation.core.sexec.interpreter.IExecutionFlowInterpreter;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
+import org.yakindu.sct.test.models.SCTUnitTestModels;
+
+import com.google.inject.Inject;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public abstract class AbstractExecutionFlowTest {
+	@Inject
+	protected IExecutionFlowInterpreter interpreter;
+	@Inject
+	protected SCTUnitTestModels models;
+	@Inject
+	protected ExecutionContext context;
+	@Inject
+	protected IExecutionContextInitializer initializer;
+
+	protected ExecutionContext context() {
+		return context;
+	}
+
+	protected void initInterpreter(ExecutionFlow flow) {
+		initializer.initialize(context, flow);
+		interpreter.initialize(flow, context);
+	}
+
+	protected int getInteger(String varName) {
+		ExecutionVariable variable = context().getVariable(varName);
+		return (Integer) variable.getValue();
+	}
+
+	protected boolean getBoolean(String varName) {
+		ExecutionVariable variable = context().getVariable(varName);
+		return (Boolean) variable.getValue();
+	}
+
+	protected Float getReal(String varName) {
+		ExecutionVariable variable = context().getVariable(varName);
+		return (Float) variable.getValue();
+	}
+
+	protected String getString(String varName) {
+		ExecutionVariable variable = context().getVariable(varName);
+		return (String) variable.getValue();
+	}
+
+	protected int setInteger(String varName, int v) {
+		context().getVariable(varName).setValue((Integer) v);
+		return v;
+	}
+
+	protected boolean setBoolean(String varName, boolean v) {
+		context().getVariable(varName).setValue((Boolean) v);
+		return v;
+	}
+
+	protected double setReal(String varName, double v) {
+		context().getVariable(varName).setValue((Double) v);
+		return v;
+	}
+
+	protected String setString(String varName, String v) {
+		context().getVariable(varName).setValue((String) v);
+		return v;
+	}
+
+	// -> Assertion methods...
+	protected void assertVarValue(String variableName, Object value) {
+		ExecutionVariable variable = context().getVariable(variableName);
+		assertNotNull("Variable '" + variableName + "' is not defined", variable);
+		assertEquals(value, variable.getValue());
+	}
+
+	protected boolean isActive(String stateName) {
+		List<RegularState> allActiveStates = context().getAllActiveStates();
+		for (RegularState regularState : allActiveStates) {
+			if (regularState.getName().equals(stateName)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	protected void raiseEvent(String eventName) {
+		context().getEvent(eventName).setRaised(true);
+	}
+
+	protected void raiseEvent(String eventName, Object value) {
+		context().getEvent(eventName).setValue(value);
+		context().getEvent(eventName).setRaised(true);
+		
+	}
+
+	protected boolean isRaised(String eventName) {
+		return context().getEvent(eventName).isRaised();
+	}
+
+}

+ 32 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/util/SExecInjectionProvider.java

@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2012 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.model.sexec.interpreter.test.util;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.yakindu.sct.model.sexec.transformation.SequencerModule;
+import org.yakindu.sct.simulation.core.sexec.SimulationModule;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.util.Modules;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class SExecInjectionProvider implements IInjectorProvider {
+
+	public Injector getInjector() {
+		return Guice.createInjector(Modules.override(new SequencerModule()).with(new SimulationModule()));
+	}
+
+}

+ 34 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/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.model.sexec.interpreter.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 {
+}

+ 57 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/AlwaysOncycleTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,73 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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();
+	}
+}

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

@@ -0,0 +1,56 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}

+ 55 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/BooleanExpressionsTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}

+ 50 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/CKeywordsTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,102 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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/model/sexec/interpreter/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.model.sexec.interpreter.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;
+/**
+ *  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();
+	}
+}

+ 62 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/DeepHistoryTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 64 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/EnterStateTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 55 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ExitOnSelfTransitionTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}

+ 71 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ExitStateTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 47 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/FeatureCallsTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,59 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,82 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 60 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/GuardedExitTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,81 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 48 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/InEventLifeCycleTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}

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

@@ -0,0 +1,66 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}

+ 60 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/InternalEventLifeCycleTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,52 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,70 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 46 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ParenthesisTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}

+ 57 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/PriorityValuesTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 51 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/RaiseEventTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,506 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 53 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SameNameDifferentRegionTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,74 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 49 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SimpleEventTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 51 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/SimpleHierachyTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 51 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/StateIsActiveTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 55 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/StatechartLocalReactionsTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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();
+		}
+	}
+}

+ 55 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/StringExpressionsTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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\""));
+	}
+}

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

@@ -0,0 +1,63 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

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

@@ -0,0 +1,120 @@
+/**
+ * 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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}

+ 47 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/TransitionWithoutConditionTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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"));
+	}
+}

+ 48 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/model/sexec/interpreter/test/ValuedEventsTest.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.model.sexec.interpreter.test;
+import static junit.framework.Assert.assertTrue;
+
+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;
+/**
+ *  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);
+	}
+}