Browse Source

adding test for ConditionalExpression

malknet42 11 years ago
parent
commit
e554f0c679
28 changed files with 790 additions and 218 deletions
  1. 29 0
      test-plugins/org.yakindu.sct.generator.c.test/gtests/ConditionalExpression/ConditionalExpression.cc
  2. 8 0
      test-plugins/org.yakindu.sct.generator.c.test/gtests/ConditionalExpression/ConditionalExpressions.sgen
  3. 8 0
      test-plugins/org.yakindu.sct.generator.c.test/model/test.sgen
  4. 12 12
      test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/AllTests.java
  5. 39 0
      test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/ConditionalExpression.java
  6. 26 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/ConditionalExpressionTest/ConditionalExpressionTest.cc
  7. 8 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/ConditionalExpressionTest/ConditionalExpressions.sgen
  8. 8 0
      test-plugins/org.yakindu.sct.generator.cpp.test/model/test.sgen
  9. 37 37
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/AllTestsTest.java
  10. 39 0
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/ConditionalExpressionTest.java
  11. 6 0
      test-plugins/org.yakindu.sct.generator.java.test/.project
  12. 110 86
      test-plugins/org.yakindu.sct.generator.java.test/model/model.sgen
  13. 8 0
      test-plugins/org.yakindu.sct.generator.java.test/model/test.sgen
  14. 193 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/conditionalexpressions/ConditionalExpressionsStatemachine.java
  15. 17 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/conditionalexpressions/IConditionalExpressionsStatemachine.java
  16. 0 4
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/javakeywords/IJavaKeywordsStatemachine.java
  17. 1 47
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/javakeywords/JavaKeywordsStatemachine.java
  18. 0 6
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/nullcheck/INullCheckStatemachine.java
  19. 0 11
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/nullcheck/NullCheckStatemachine.java
  20. 7 8
      test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/AllTestsTest.java
  21. 49 0
      test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/ConditionalExpressionTest.java
  22. 8 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/model/test.sgen
  23. 7 7
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AllTestsTest.java
  24. 46 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/ConditionalExpressionTest.java
  25. 1 0
      test-plugins/org.yakindu.sct.test.models/.settings/org.eclipse.core.resources.prefs
  26. 101 0
      test-plugins/org.yakindu.sct.test.models/testmodels/SCTUnit/ConditionalExpressions.sct
  27. 1 0
      test-plugins/org.yakindu.sct.test.models/tests/AllTests.sctunit
  28. 21 0
      test-plugins/org.yakindu.sct.test.models/tests/ConditionalExpression.sctunit

+ 29 - 0
test-plugins/org.yakindu.sct.generator.c.test/gtests/ConditionalExpression/ConditionalExpression.cc

@@ -0,0 +1,29 @@
+/**
+* Copyright (c) 2014 committers of YAKINDU and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*     committers of YAKINDU - initial API and implementation
+*/
+#include <string>
+#include "gtest/gtest.h"
+#include "ConditionalExpressions.h"
+
+
+ConditionalExpressions handle;
+
+TEST(StatemachineTest, ConditionalExpressionTest) {
+	conditionalExpressions_init(&handle);
+	conditionalExpressions_enter(&handle);
+	EXPECT_TRUE(conditionalExpressions_isActive(&handle, ConditionalExpressions_A));
+	EXPECT_TRUE(conditionalExpressionsIface_get_condition(&handle) == 1);
+	conditionalExpressionsIface_raise_e(&handle);
+	conditionalExpressions_runCycle(&handle);
+	EXPECT_TRUE(conditionalExpressions_isActive(&handle, ConditionalExpressions_B));
+	EXPECT_TRUE(conditionalExpressionsIface_get_condition(&handle) == 2);
+}
+
+		

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

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

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

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

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

@@ -16,18 +16,18 @@ import org.junit.runners.Suite.SuiteClasses;
 @RunWith(Suite.class)
 @SuiteClasses({AlwaysOncycle.class, AssignmentAsExpression.class,
 		BitExpressions.class, BooleanExpressions.class, Choice.class,
-		CKeywords.class, Declarations.class, DeepEntry.class,
-		DeepHistory.class, DynamicChoice.class, EnterState.class,
-		EntryChoice.class, ExitOnSelfTransition.class, ExitState.class,
-		FeatureCalls.class, Guard.class, GuardedEntry.class, GuardedExit.class,
-		HistoryWithoutInitialStep.class, InEventLifeCycle.class,
-		IntegerExpressions.class, InternalEventLifeCycle.class,
-		LogicalAndTests.class, LogicalOrTests.class,
-		NamedInterfaceAccess.class, OutEventLifeCycle.class, Parenthesis.class,
-		PriorityValues.class, RaiseEvent.class, SameNameDifferentRegion.class,
-		ShallowHistory.class, SimpleEvent.class,
-		StatechartLocalReactions.class, SimpleHierachy.class,
-		StateIsActive.class, StaticChoice.class,
+		CKeywords.class, ConditionalExpression.class, Declarations.class,
+		DeepEntry.class, DeepHistory.class, DynamicChoice.class,
+		EnterState.class, EntryChoice.class, ExitOnSelfTransition.class,
+		ExitState.class, FeatureCalls.class, Guard.class, GuardedEntry.class,
+		GuardedExit.class, HistoryWithoutInitialStep.class,
+		InEventLifeCycle.class, IntegerExpressions.class,
+		InternalEventLifeCycle.class, LogicalAndTests.class,
+		LogicalOrTests.class, NamedInterfaceAccess.class,
+		OutEventLifeCycle.class, Parenthesis.class, PriorityValues.class,
+		RaiseEvent.class, SameNameDifferentRegion.class, ShallowHistory.class,
+		SimpleEvent.class, StatechartLocalReactions.class,
+		SimpleHierachy.class, StateIsActive.class, StaticChoice.class,
 		STextKeywordsInStatesAndRegions.class, StringExpressions.class,
 		SyncFork.class, SyncJoin.class, TransitionWithoutCondition.class,
 		ValuedEvents.class})

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

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

+ 26 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/ConditionalExpressionTest/ConditionalExpressionTest.cc

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

+ 8 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/ConditionalExpressionTest/ConditionalExpressions.sgen

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

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

@@ -56,6 +56,14 @@ GeneratorModel for sctunit::cpp {
 		}			
 	}
 	
+	test ConditionalExpression{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.cpp.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
 	test Declarations{
 		
 		feature Outlet{ 

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

@@ -1,37 +1,37 @@
-/**
- * Copyright (c) 2014 committers of YAKINDU and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     committers of YAKINDU - initial API and implementation
- */
-package org.yakindu.sct.generator.cpp.test;
-import 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,
-		DeepEntryTest.class, DeepHistoryTest.class, DynamicChoiceTest.class,
-		EnterStateTest.class, EntryChoiceTest.class,
-		ExitOnSelfTransitionTest.class, ExitStateTest.class,
-		FeatureCallsTest.class, GuardTest.class, GuardedEntryTest.class,
-		GuardedExitTest.class, HistoryWithoutInitialStepTest.class,
-		InEventLifeCycleTest.class, IntegerExpressionsTest.class,
-		InternalEventLifeCycleTest.class, LogicalAndTestsTest.class,
-		LogicalOrTestsTest.class, NamedInterfaceAccessTest.class,
-		OutEventLifeCycleTest.class, ParenthesisTest.class,
-		PriorityValuesTest.class, RaiseEventTest.class,
-		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
-		SimpleEventTest.class, StatechartLocalReactionsTest.class,
-		SimpleHierachyTest.class, StateIsActiveTest.class,
-		StaticChoiceTest.class, STextKeywordsInStatesAndRegionsTest.class,
-		StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class,
-		TransitionWithoutConditionTest.class, ValuedEventsTest.class})
-public class AllTestsTest {
-}
+/**
+ * Copyright (c) 2014 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
+package org.yakindu.sct.generator.cpp.test;
+import 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, ConditionalExpressionTest.class,
+		DeclarationsTest.class, DeepEntryTest.class, DeepHistoryTest.class,
+		DynamicChoiceTest.class, EnterStateTest.class, EntryChoiceTest.class,
+		ExitOnSelfTransitionTest.class, ExitStateTest.class,
+		FeatureCallsTest.class, GuardTest.class, GuardedEntryTest.class,
+		GuardedExitTest.class, HistoryWithoutInitialStepTest.class,
+		InEventLifeCycleTest.class, IntegerExpressionsTest.class,
+		InternalEventLifeCycleTest.class, LogicalAndTestsTest.class,
+		LogicalOrTestsTest.class, NamedInterfaceAccessTest.class,
+		OutEventLifeCycleTest.class, ParenthesisTest.class,
+		PriorityValuesTest.class, RaiseEventTest.class,
+		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
+		SimpleEventTest.class, StatechartLocalReactionsTest.class,
+		SimpleHierachyTest.class, StateIsActiveTest.class,
+		StaticChoiceTest.class, STextKeywordsInStatesAndRegionsTest.class,
+		StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class,
+		TransitionWithoutConditionTest.class, ValuedEventsTest.class})
+public class AllTestsTest {
+}

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

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

+ 6 - 0
test-plugins/org.yakindu.sct.generator.java.test/.project

@@ -25,11 +25,17 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.yakindu.sct.builder.SCTBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.yakindu.sct.builder.SCTNature</nature>
 	</natures>
 	<filteredResources>
 		<filter>

+ 110 - 86
test-plugins/org.yakindu.sct.generator.java.test/model/model.sgen

@@ -11,6 +11,7 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
+	
 	statechart AssignmentAsExpression {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
@@ -58,7 +59,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	} 
-	statechart NamedInterfaceAccess {
+	
+	statechart CKeywords {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -69,7 +71,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart NullCheck {
+	
+	statechart ConditionalExpressions {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -80,7 +83,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}	
-	statechart DeepHistory {
+	
+	statechart Declarations {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -91,6 +95,7 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
+		
 	statechart DeepEntry{
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
@@ -101,9 +106,9 @@ GeneratorModel for yakindu::java {
 			TimerService = true
 			RuntimeService = true
 		}
-	}
+	}	
 		
-	statechart DynamicChoice{
+	statechart DeepHistory {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -115,7 +120,7 @@ GeneratorModel for yakindu::java {
 		}
 	}
 		
-	statechart EntryChoice {
+	statechart DynamicChoice{
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -126,8 +131,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-		
-	statechart ExitOnSelfTransition {
+			
+	statechart EnterState {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -138,23 +143,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart ExitState {
-		feature Outlet {
-			targetProject = "org.yakindu.sct.generator.java.test"
-			targetFolder = "src-gen"
-		}
-
-		feature GeneralFeatures {
-			TimerService = true
-			RuntimeService = true
-		}
-		
-		feature FunctionInlining {
-			inlineReactions = false
-		}
 		
-	}
-	statechart EnterState {
+	statechart EntryChoice {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -165,7 +155,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart GuardedEntry {
+		
+	statechart ExitOnSelfTransition {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -176,7 +167,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart GuardedExit {
+	
+	statechart ExitState {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -186,6 +178,11 @@ GeneratorModel for yakindu::java {
 			TimerService = true
 			RuntimeService = true
 		}
+		
+		feature FunctionInlining {
+			inlineReactions = false
+		}
+		
 	}
 	
 	statechart FeatureCalls {
@@ -199,6 +196,7 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
+	
 	statechart Guard {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
@@ -211,33 +209,31 @@ GeneratorModel for yakindu::java {
 		}
 	}
 		
-	statechart LogicalAnd {
-			feature Outlet {
+	statechart GuardedEntry {
+		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
-		} 
+		}
 
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
 		}
-		
 	}
-
-	statechart LogicalOr {
-			feature Outlet {
+	
+	statechart GuardedExit {
+		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
-		} 
+		}
 
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
 		}
+	}
 		
-	}	
-	
-	statechart Parenthesis {
+	statechart HistoryWithoutInitialStep {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -249,7 +245,7 @@ GeneratorModel for yakindu::java {
 		}
 	}
 	
-	statechart PriorityValues {
+	statechart InEventLifeCycle {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -260,8 +256,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	
-	statechart ShallowHistory {
+			
+	statechart IntegerExpressions {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -272,7 +268,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart SimpleEvent {
+		
+	statechart InternalEventLifeCycle {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -283,7 +280,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart SimpleHierachy {
+	
+	statechart JavaKeywords {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -292,32 +290,36 @@ GeneratorModel for yakindu::java {
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
-		}
-	}
-	statechart StateIsActive {
-		feature Outlet {
+ 		}
+	}		
+		
+	statechart LogicalAnd {
+			feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
-		}
+		} 
 
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
 		}
+		
 	}
-	statechart StatechartLocalReactions {
-		feature Outlet {
+
+	statechart LogicalOr {
+			feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
-		}
+		} 
 
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
 		}
-	}
+		
+	}	
 	
-	statechart StaticChoice {
+	statechart NamedInterfaceAccess {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -329,7 +331,7 @@ GeneratorModel for yakindu::java {
 		}
 	}
 	
-	statechart SyncFork {
+	statechart NullCheck {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -339,8 +341,9 @@ GeneratorModel for yakindu::java {
 			TimerService = true
 			RuntimeService = true
 		}
-	}
-	statechart SyncJoin {
+	}	
+	
+	statechart Operations {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -349,9 +352,10 @@ GeneratorModel for yakindu::java {
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
-		}
-	}
-	statechart ValuedEvents {
+ 		}
+	}	
+	
+	statechart OutEventLifeCycle {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -361,8 +365,9 @@ GeneratorModel for yakindu::java {
 			TimerService = true
 			RuntimeService = true
 		}
-	}
-	statechart IntegerExpressions {
+	}	
+	
+	statechart Parenthesis {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -373,7 +378,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart InEventLifeCycle {
+		
+	statechart PerformanceTest {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -384,7 +390,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart InternalEventLifeCycle {
+	
+	statechart PriorityValues {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -394,8 +401,9 @@ GeneratorModel for yakindu::java {
 			TimerService = true
 			RuntimeService = true
 		}
-	}
-	statechart OutEventLifeCycle {
+	}	
+
+	statechart RaiseEvent {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -406,6 +414,7 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
+	
 	statechart RealExpressions {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
@@ -416,8 +425,9 @@ GeneratorModel for yakindu::java {
 			TimerService = true
 			RuntimeService = true
 		}
-	}
-	statechart StringExpressions {
+	}	
+
+	statechart SameNameDifferentRegion {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -428,8 +438,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-
-	statechart CKeywords {
+		
+	statechart ShallowHistory {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -440,8 +450,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-
-	statechart JavaKeywords {
+		
+	statechart SimpleEvent {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -450,10 +460,11 @@ GeneratorModel for yakindu::java {
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
- 		}
+		}
+
 	}
 	
-	statechart Operations {
+	statechart SimpleHierachy {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -462,10 +473,10 @@ GeneratorModel for yakindu::java {
 		feature GeneralFeatures {
 			TimerService = true
 			RuntimeService = true
- 		}
+		}
 	}
-
-	statechart RaiseEvent {
+		
+	statechart StatechartLocalReactions {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -475,9 +486,9 @@ GeneratorModel for yakindu::java {
 			TimerService = true
 			RuntimeService = true
 		}
-	}
-
-	statechart RealExpressions {
+	}	
+	
+	statechart StateIsActive {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -488,7 +499,8 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	statechart SameNameDifferentRegion {
+	
+	statechart StaticChoice {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -499,12 +511,12 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
-	
-	statechart PerformanceTest {
+
+	statechart STextKeywordsInStatesAndRegions {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
-		}
+		} 
 
 		feature GeneralFeatures {
 			TimerService = true
@@ -512,7 +524,7 @@ GeneratorModel for yakindu::java {
 		}
 	}
 	
-	statechart Declarations {
+	statechart StringExpressions {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -524,7 +536,7 @@ GeneratorModel for yakindu::java {
 		}
 	}
 
-	statechart HistoryWithoutInitialStep {
+	statechart SyncFork {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
@@ -536,11 +548,11 @@ GeneratorModel for yakindu::java {
 		}
 	}
 
-	statechart STextKeywordsInStatesAndRegions {
+	statechart SyncJoin {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.generator.java.test"
 			targetFolder = "src-gen"
-		} 
+		}
 
 		feature GeneralFeatures {
 			TimerService = true
@@ -571,5 +583,17 @@ GeneratorModel for yakindu::java {
 			RuntimeService = true
 		}
 	}
+		
+	statechart ValuedEvents {
+		feature Outlet {
+			targetProject = "org.yakindu.sct.generator.java.test"
+			targetFolder = "src-gen"
+		}
 
+		feature GeneralFeatures {
+			TimerService = true
+			RuntimeService = true
+		}
+	}
+	
 }

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

@@ -56,6 +56,14 @@ GeneratorModel for sctunit::java {
 		}			
 	}
 	
+	test ConditionalExpression{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.java.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
 	test Declarations{
 		
 		feature Outlet{ 

+ 193 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/conditionalexpressions/ConditionalExpressionsStatemachine.java

@@ -0,0 +1,193 @@
+package org.yakindu.scr.conditionalexpressions;
+
+public class ConditionalExpressionsStatemachine
+		implements
+			IConditionalExpressionsStatemachine {
+
+	private final class SCInterfaceImpl implements SCInterface {
+
+		private boolean e;
+
+		public void raiseE() {
+			e = true;
+		}
+
+		private long condition;
+
+		public long getCondition() {
+			return condition;
+		}
+
+		public void setCondition(long value) {
+			this.condition = value;
+		}
+
+		private boolean boolVar;
+
+		public boolean getBoolVar() {
+			return boolVar;
+		}
+
+		public void setBoolVar(boolean value) {
+			this.boolVar = value;
+		}
+
+		public void clearEvents() {
+			e = false;
+		}
+
+	}
+
+	private SCInterfaceImpl sCInterface;
+
+	public enum State {
+		main_region_A, main_region_B, $NullState$
+	};
+
+	private final State[] stateVector = new State[1];
+
+	private int nextStateIndex;
+
+	public ConditionalExpressionsStatemachine() {
+
+		sCInterface = new SCInterfaceImpl();
+	}
+
+	public void init() {
+		for (int i = 0; i < 1; i++) {
+			stateVector[i] = State.$NullState$;
+		}
+
+		clearEvents();
+		clearOutEvents();
+
+		sCInterface.condition = sCInterface.boolVar ? 3 : 2;
+
+		sCInterface.boolVar = true;
+	}
+
+	public void enter() {
+		entryAction();
+
+		sCInterface.condition = sCInterface.boolVar ? 1 : 0;
+
+		nextStateIndex = 0;
+		stateVector[0] = State.main_region_A;
+	}
+
+	public void exit() {
+		switch (stateVector[0]) {
+			case main_region_A :
+				nextStateIndex = 0;
+				stateVector[0] = State.$NullState$;
+				break;
+
+			case main_region_B :
+				nextStateIndex = 0;
+				stateVector[0] = State.$NullState$;
+				break;
+
+			default :
+				break;
+		}
+
+		exitAction();
+	}
+
+	/**
+	 * This method resets the incoming events (time events included).
+	 */
+	protected void clearEvents() {
+		sCInterface.clearEvents();
+
+	}
+
+	/**
+	 * This method resets the outgoing events.
+	 */
+	protected void clearOutEvents() {
+	}
+
+	/**
+	 * Returns true if the given state is currently active otherwise false.
+	 */
+	public boolean isStateActive(State state) {
+		switch (state) {
+			case main_region_A :
+				return stateVector[0] == State.main_region_A;
+			case main_region_B :
+				return stateVector[0] == State.main_region_B;
+			default :
+				return false;
+		}
+	}
+
+	public SCInterface getSCInterface() {
+		return sCInterface;
+	}
+
+	public void raiseE() {
+		sCInterface.raiseE();
+	}
+
+	public long getCondition() {
+		return sCInterface.getCondition();
+	}
+
+	public void setCondition(long value) {
+		sCInterface.setCondition(value);
+	}
+	public boolean getBoolVar() {
+		return sCInterface.getBoolVar();
+	}
+
+	public void setBoolVar(boolean value) {
+		sCInterface.setBoolVar(value);
+	}
+
+	/* Entry action for statechart 'ConditionalExpressions'. */
+	private void entryAction() {
+	}
+
+	/* Exit action for state 'ConditionalExpressions'. */
+	private void exitAction() {
+	}
+
+	/* The reactions of state A. */
+	private void reactMain_region_A() {
+		if (sCInterface.e && 1 == (sCInterface.boolVar ? 1 : 0)) {
+			nextStateIndex = 0;
+			stateVector[0] = State.$NullState$;
+
+			sCInterface.condition = ((sCInterface.condition == 2) ? 1 : 2);
+
+			nextStateIndex = 0;
+			stateVector[0] = State.main_region_B;
+		}
+	}
+
+	/* The reactions of state B. */
+	private void reactMain_region_B() {
+	}
+
+	public void runCycle() {
+
+		clearOutEvents();
+
+		for (nextStateIndex = 0; nextStateIndex < stateVector.length; nextStateIndex++) {
+
+			switch (stateVector[nextStateIndex]) {
+				case main_region_A :
+					reactMain_region_A();
+					break;
+				case main_region_B :
+					reactMain_region_B();
+					break;
+				default :
+					// $NullState$
+			}
+		}
+
+		clearEvents();
+	}
+}

+ 17 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/conditionalexpressions/IConditionalExpressionsStatemachine.java

@@ -0,0 +1,17 @@
+package org.yakindu.scr.conditionalexpressions;
+import org.yakindu.scr.IStatemachine;
+
+public interface IConditionalExpressionsStatemachine extends IStatemachine {
+
+	public interface SCInterface {
+		public void raiseE();
+		public long getCondition();
+		public void setCondition(long value);
+		public boolean getBoolVar();
+		public void setBoolVar(boolean value);
+
+	}
+
+	public SCInterface getSCInterface();
+
+}

+ 0 - 4
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/javakeywords/IJavaKeywordsStatemachine.java

@@ -50,8 +50,6 @@ public interface IJavaKeywordsStatemachine extends IStatemachine {
 		public void setIf(boolean value);
 		public boolean getImplements();
 		public void setImplements(boolean value);
-		public boolean getImport();
-		public void setImport(boolean value);
 		public boolean getInstanceof();
 		public void setInstanceof(boolean value);
 		public boolean getInt();
@@ -62,8 +60,6 @@ public interface IJavaKeywordsStatemachine extends IStatemachine {
 		public void setNative(boolean value);
 		public boolean getNew();
 		public void setNew(boolean value);
-		public boolean getNull();
-		public void setNull(boolean value);
 		public boolean getPackage();
 		public void setPackage(boolean value);
 		public boolean getPrivate();

+ 1 - 47
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/javakeywords/JavaKeywordsStatemachine.java

@@ -236,16 +236,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 			this.implements_ID = value;
 		}
 
-		private boolean import_ID;
-
-		public boolean getImport() {
-			return import_ID;
-		}
-
-		public void setImport(boolean value) {
-			this.import_ID = value;
-		}
-
 		private boolean instanceof_ID;
 
 		public boolean getInstanceof() {
@@ -296,16 +286,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 			this.new_ID = value;
 		}
 
-		private boolean null_ID;
-
-		public boolean getNull() {
-			return null_ID;
-		}
-
-		public void setNull(boolean value) {
-			this.null_ID = value;
-		}
-
 		private boolean package_ID;
 
 		public boolean getPackage() {
@@ -564,8 +544,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 
 		sCInterface.implements_ID = false;
 
-		sCInterface.import_ID = false;
-
 		sCInterface.instanceof_ID = false;
 
 		sCInterface.int_ID = false;
@@ -576,8 +554,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 
 		sCInterface.new_ID = false;
 
-		sCInterface.null_ID = false;
-
 		sCInterface.package_ID = false;
 
 		sCInterface.private_ID = false;
@@ -662,8 +638,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 
 		sCInterface.implements_ID = true;
 
-		sCInterface.import_ID = true;
-
 		sCInterface.instanceof_ID = true;
 
 		sCInterface.int_ID = true;
@@ -674,8 +648,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 
 		sCInterface.new_ID = true;
 
-		sCInterface.null_ID = true;
-
 		sCInterface.package_ID = true;
 
 		sCInterface.private_ID = true;
@@ -957,13 +929,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 	public void setImplements(boolean value) {
 		sCInterface.setImplements(value);
 	}
-	public boolean getImport() {
-		return sCInterface.getImport();
-	}
-
-	public void setImport(boolean value) {
-		sCInterface.setImport(value);
-	}
 	public boolean getInstanceof() {
 		return sCInterface.getInstanceof();
 	}
@@ -999,13 +964,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 	public void setNew(boolean value) {
 		sCInterface.setNew(value);
 	}
-	public boolean getNull() {
-		return sCInterface.getNull();
-	}
-
-	public void setNull(boolean value) {
-		sCInterface.setNull(value);
-	}
 	public boolean getPackage() {
 		return sCInterface.getPackage();
 	}
@@ -1174,7 +1132,7 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 
 	/* The reactions of state abstract. */
 	private void reactGoto_abstract() {
-		if (sCInterface.while_ID && sCInterface.null_ID) {
+		if (sCInterface.while_ID && true) {
 			nextStateIndex = 0;
 			stateVector[0] = State.$NullState$;
 
@@ -1224,8 +1182,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 
 			sCInterface.implements_ID = false;
 
-			sCInterface.import_ID = false;
-
 			sCInterface.instanceof_ID = false;
 
 			sCInterface.int_ID = false;
@@ -1234,8 +1190,6 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 
 			sCInterface.new_ID = false;
 
-			sCInterface.null_ID = false;
-
 			sCInterface.package_ID = false;
 
 			sCInterface.private_ID = false;

+ 0 - 6
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/nullcheck/INullCheckStatemachine.java

@@ -3,10 +3,4 @@ import org.yakindu.scr.IStatemachine;
 
 public interface INullCheckStatemachine extends IStatemachine {
 
-	public interface SCInterface {
-
-	}
-
-	public SCInterface getSCInterface();
-
 }

+ 0 - 11
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/nullcheck/NullCheckStatemachine.java

@@ -2,12 +2,6 @@ package org.yakindu.scr.nullcheck;
 
 public class NullCheckStatemachine implements INullCheckStatemachine {
 
-	private final class SCInterfaceImpl implements SCInterface {
-
-	}
-
-	private SCInterfaceImpl sCInterface;
-
 	public enum State {
 		main_region_A, main_region_B, $NullState$
 	};
@@ -18,7 +12,6 @@ public class NullCheckStatemachine implements INullCheckStatemachine {
 
 	public NullCheckStatemachine() {
 
-		sCInterface = new SCInterfaceImpl();
 	}
 
 	public void init() {
@@ -84,10 +77,6 @@ public class NullCheckStatemachine implements INullCheckStatemachine {
 		}
 	}
 
-	public SCInterface getSCInterface() {
-		return sCInterface;
-	}
-
 	/* Entry action for statechart 'NullCheck'. */
 	private void entryAction() {
 	}

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

@@ -9,30 +9,29 @@
  *     committers of YAKINDU - initial API and implementation
  */
 package org.yakindu.sct.generator.java.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,
+@SuiteClasses({AlwaysOncycleTest.class, AssignmentAsExpressionTest.class,
 		BitExpressionsTest.class, BooleanExpressionsTest.class,
-		ChoiceTest.class, CKeywordsTest.class, DeclarationsTest.class,
-		DeepEntryTest.class, DeepHistoryTest.class, DynamicChoiceTest.class,
-		EnterStateTest.class, EntryChoiceTest.class,
+		ChoiceTest.class, CKeywordsTest.class, ConditionalExpressionTest.class,
+		DeclarationsTest.class, DeepEntryTest.class, DeepHistoryTest.class,
+		DynamicChoiceTest.class, EnterStateTest.class, EntryChoiceTest.class,
 		ExitOnSelfTransitionTest.class, ExitStateTest.class,
 		FeatureCallsTest.class, GuardTest.class, GuardedEntryTest.class,
 		GuardedExitTest.class, HistoryWithoutInitialStepTest.class,
 		InEventLifeCycleTest.class, IntegerExpressionsTest.class,
 		InternalEventLifeCycleTest.class, LogicalAndTestsTest.class,
 		LogicalOrTestsTest.class, NamedInterfaceAccessTest.class,
-		NullCheckTest.class, OutEventLifeCycleTest.class,
-		ParenthesisTest.class, PriorityValuesTest.class, RaiseEventTest.class,
+		OutEventLifeCycleTest.class, ParenthesisTest.class,
+		PriorityValuesTest.class, RaiseEventTest.class,
 		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
 		SimpleEventTest.class, StatechartLocalReactionsTest.class,
 		SimpleHierachyTest.class, StateIsActiveTest.class,
 		StaticChoiceTest.class, STextKeywordsInStatesAndRegionsTest.class,
 		StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class,
-		TransitionWithoutConditionTest.class, ValuedEventsTest.class })
+		TransitionWithoutConditionTest.class, ValuedEventsTest.class})
 public class AllTestsTest {
 }

+ 49 - 0
test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/ConditionalExpressionTest.java

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

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

@@ -56,6 +56,14 @@ GeneratorModel for sctunit::interpreter {
 		}			
 	}
 	
+	test ConditionalExpression{ 
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.simulation.core.sexec.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
 	test Declarations{
 		
 		feature Outlet{ 

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

@@ -15,24 +15,24 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
-@SuiteClasses({ AlwaysOncycleTest.class, AssignmentAsExpressionTest.class,
+@SuiteClasses({AlwaysOncycleTest.class, AssignmentAsExpressionTest.class,
 		BitExpressionsTest.class, BooleanExpressionsTest.class,
-		ChoiceTest.class, CKeywordsTest.class, DeclarationsTest.class,
-		DeepEntryTest.class, DeepHistoryTest.class, DynamicChoiceTest.class,
-		EnterStateTest.class, EntryChoiceTest.class,
+		ChoiceTest.class, CKeywordsTest.class, ConditionalExpressionTest.class,
+		DeclarationsTest.class, DeepEntryTest.class, DeepHistoryTest.class,
+		DynamicChoiceTest.class, EnterStateTest.class, EntryChoiceTest.class,
 		ExitOnSelfTransitionTest.class, ExitStateTest.class,
 		FeatureCallsTest.class, GuardTest.class, GuardedEntryTest.class,
 		GuardedExitTest.class, HistoryWithoutInitialStepTest.class,
 		InEventLifeCycleTest.class, IntegerExpressionsTest.class,
 		InternalEventLifeCycleTest.class, LogicalAndTestsTest.class,
 		LogicalOrTestsTest.class, NamedInterfaceAccessTest.class,
-		NullCheckTest.class, OutEventLifeCycleTest.class,
-		ParenthesisTest.class, PriorityValuesTest.class, RaiseEventTest.class,
+		OutEventLifeCycleTest.class, ParenthesisTest.class,
+		PriorityValuesTest.class, RaiseEventTest.class,
 		SameNameDifferentRegionTest.class, ShallowHistoryTest.class,
 		SimpleEventTest.class, StatechartLocalReactionsTest.class,
 		SimpleHierachyTest.class, StateIsActiveTest.class,
 		StaticChoiceTest.class, STextKeywordsInStatesAndRegionsTest.class,
 		StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class,
-		TransitionWithoutConditionTest.class, ValuedEventsTest.class })
+		TransitionWithoutConditionTest.class, ValuedEventsTest.class})
 public class AllTestsTest {
 }

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

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

+ 1 - 0
test-plugins/org.yakindu.sct.test.models/.settings/org.eclipse.core.resources.prefs

@@ -1,6 +1,7 @@
 eclipse.preferences.version=1
 encoding//testmodels/SCTUnit/AlwaysOncycle.sct=UTF-8
 encoding//testmodels/SCTUnit/AssignmentAsExpression.sct=UTF-8
+encoding//testmodels/SCTUnit/ConditionalExpressions.sct=UTF-8
 encoding//testmodels/SCTUnit/Declarations.sct=UTF-8
 encoding//testmodels/SCTUnit/DeepEntry.sct=UTF-8
 encoding//testmodels/SCTUnit/DynamicChoice.sct=UTF-8

+ 101 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/SCTUnit/ConditionalExpressions.sct

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sgraph="http://www.yakindu.org/sct/sgraph/2.0.0">
+  <sgraph:Statechart xmi:id="_zaodgNQ1EeO6OdDmZN5_6A" specification="interface:&#xD;&#xA;in event e&#xD;&#xA;var condition : integer = boolVar ? 3 : 2&#xD;&#xA;var boolVar : boolean = true" name="ConditionalExpressions">
+    <regions xmi:id="_zaprotQ1EeO6OdDmZN5_6A" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_zat9EdQ1EeO6OdDmZN5_6A">
+        <outgoingTransitions xmi:id="_zavyQ9Q1EeO6OdDmZN5_6A" target="_zaukJNQ1EeO6OdDmZN5_6A"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_zaukJNQ1EeO6OdDmZN5_6A" specification="entry / condition = boolVar ? 1 : 0" name="A" incomingTransitions="_zavyQ9Q1EeO6OdDmZN5_6A">
+        <outgoingTransitions xmi:id="_8hn3MNQ1EeO6OdDmZN5_6A" specification="e [1 == (boolVar ? 1: 0)]" target="_8OjxQNQ1EeO6OdDmZN5_6A"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_8OjxQNQ1EeO6OdDmZN5_6A" specification="entry / condition = ((condition == 2) ? 1 : 2)" name="B" incomingTransitions="_8hn3MNQ1EeO6OdDmZN5_6A"/>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_zaproNQ1EeO6OdDmZN5_6A" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_zaodgNQ1EeO6OdDmZN5_6A" measurementUnit="Pixel">
+    <children xmi:id="_zarg0NQ1EeO6OdDmZN5_6A" type="Region" element="_zaprotQ1EeO6OdDmZN5_6A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_zatWANQ1EeO6OdDmZN5_6A" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_zatWAdQ1EeO6OdDmZN5_6A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_zatWAtQ1EeO6OdDmZN5_6A"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_zatWA9Q1EeO6OdDmZN5_6A" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_zat9EtQ1EeO6OdDmZN5_6A" type="Entry" element="_zat9EdQ1EeO6OdDmZN5_6A">
+          <children xmi:id="_zat9FdQ1EeO6OdDmZN5_6A" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_zaukINQ1EeO6OdDmZN5_6A" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_zaukIdQ1EeO6OdDmZN5_6A"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_zaukItQ1EeO6OdDmZN5_6A"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_zat9FtQ1EeO6OdDmZN5_6A" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zat9F9Q1EeO6OdDmZN5_6A"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_zat9E9Q1EeO6OdDmZN5_6A" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zaukI9Q1EeO6OdDmZN5_6A" x="160" y="22"/>
+        </children>
+        <children xmi:id="_zaukJtQ1EeO6OdDmZN5_6A" type="State" element="_zaukJNQ1EeO6OdDmZN5_6A">
+          <children xsi:type="notation:DecorationNode" xmi:id="_zavLMNQ1EeO6OdDmZN5_6A" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_zavLMdQ1EeO6OdDmZN5_6A"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_zavLMtQ1EeO6OdDmZN5_6A"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_zavLM9Q1EeO6OdDmZN5_6A" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_zavLNNQ1EeO6OdDmZN5_6A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zavLNdQ1EeO6OdDmZN5_6A"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_zavyQNQ1EeO6OdDmZN5_6A" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_zaukJ9Q1EeO6OdDmZN5_6A" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_zaukKNQ1EeO6OdDmZN5_6A"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_zavyQdQ1EeO6OdDmZN5_6A" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zavyQtQ1EeO6OdDmZN5_6A" x="40" y="80" width="260"/>
+        </children>
+        <children xmi:id="_8OnboNQ1EeO6OdDmZN5_6A" type="State" element="_8OjxQNQ1EeO6OdDmZN5_6A">
+          <children xsi:type="notation:DecorationNode" xmi:id="_8OopwNQ1EeO6OdDmZN5_6A" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_8OopwdQ1EeO6OdDmZN5_6A"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_8OpQ0NQ1EeO6OdDmZN5_6A"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_8OpQ0dQ1EeO6OdDmZN5_6A" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_8OpQ0tQ1EeO6OdDmZN5_6A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_8OpQ09Q1EeO6OdDmZN5_6A"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_8Oqe8NQ1EeO6OdDmZN5_6A" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_8OnbodQ1EeO6OdDmZN5_6A" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_8OnbotQ1EeO6OdDmZN5_6A"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_8Oqe8dQ1EeO6OdDmZN5_6A" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_8Onbo9Q1EeO6OdDmZN5_6A" x="40" y="247" width="395"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zatWBNQ1EeO6OdDmZN5_6A"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_zarg0dQ1EeO6OdDmZN5_6A" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zat9ENQ1EeO6OdDmZN5_6A" x="310" y="10" width="471" height="400"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_zaxAYtQ1EeO6OdDmZN5_6A" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_zaxAZNQ1EeO6OdDmZN5_6A" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_zaxAZdQ1EeO6OdDmZN5_6A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_zaxAZtQ1EeO6OdDmZN5_6A"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_zaxAZ9Q1EeO6OdDmZN5_6A" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zaxAaNQ1EeO6OdDmZN5_6A"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_zaxncNQ1EeO6OdDmZN5_6A" x="10" y="10" width="286" height="400"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_zaprodQ1EeO6OdDmZN5_6A"/>
+    <edges xmi:id="_zawZUNQ1EeO6OdDmZN5_6A" type="Transition" element="_zavyQ9Q1EeO6OdDmZN5_6A" source="_zat9EtQ1EeO6OdDmZN5_6A" target="_zaukJtQ1EeO6OdDmZN5_6A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_zawZVNQ1EeO6OdDmZN5_6A" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_zaxAYNQ1EeO6OdDmZN5_6A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_zaxAYdQ1EeO6OdDmZN5_6A" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_zawZUdQ1EeO6OdDmZN5_6A" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_zawZU9Q1EeO6OdDmZN5_6A" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_zawZUtQ1EeO6OdDmZN5_6A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:id="_8hrhkNQ1EeO6OdDmZN5_6A" type="Transition" element="_8hn3MNQ1EeO6OdDmZN5_6A" source="_zaukJtQ1EeO6OdDmZN5_6A" target="_8OnboNQ1EeO6OdDmZN5_6A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_8hsIodQ1EeO6OdDmZN5_6A" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_8hsIotQ1EeO6OdDmZN5_6A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_8hsvsNQ1EeO6OdDmZN5_6A" x="-8" y="-80"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_8hrhkdQ1EeO6OdDmZN5_6A" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_8hsIoNQ1EeO6OdDmZN5_6A" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_8hrhktQ1EeO6OdDmZN5_6A" points="[1, 24, -6, -142]$[11, 190, 4, 24]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_JBSncNQ3EeO6OdDmZN5_6A" id="(0.33164556962025316,0.03773584905660377)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

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

@@ -5,6 +5,7 @@ testsuite AllTests {
 	BooleanExpressions,
 	Choice, 
 	CKeywords,
+	ConditionalExpression,
 	Declarations, 
 	DeepEntry,
 	DeepHistory,

+ 21 - 0
test-plugins/org.yakindu.sct.test.models/tests/ConditionalExpression.sctunit

@@ -0,0 +1,21 @@
+
+testgroup ConditionalExpression for statechart ConditionalExpressions{
+	
+	test ConditionalExpressionTest { 
+		enter
+		assert active (ConditionalExpressions.main_region.A)
+		assert condition == 1
+		
+		raise e
+		cycle
+		
+		assert active (ConditionalExpressions.main_region.B)
+		assert condition == 2
+		
+		
+		
+		 
+		 
+	} 
+}
+