Browse Source

Merge pull request #375 from Yakindu/issue_355

Issue 355- fixed issue with trigger expressions
Axel Terfloth 9 years ago
parent
commit
64035da07c
39 changed files with 996 additions and 78 deletions
  1. 1 1
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/BehaviorMapping.xtend
  2. 0 1
      test-plugins/org.yakindu.sct.generator.c.test/gtests/ReadOnlyVariable/ xxx
  3. 51 0
      test-plugins/org.yakindu.sct.generator.c.test/gtests/TriggerExpressionPrecedence/TriggerExpressionPrecedence.cc
  4. 19 0
      test-plugins/org.yakindu.sct.generator.c.test/gtests/TriggerExpressionPrecedence/TriggerExpressionPrecedence.sgen
  5. 24 0
      test-plugins/org.yakindu.sct.generator.c.test/model/test.sgen
  6. 2 1
      test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/AllTests.java
  7. 39 0
      test-plugins/org.yakindu.sct.generator.c.test/test-gen/org/yakindu/sct/generator/c/test/TriggerExpressionPrecedence.java
  8. 19 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/TriggerExpressionPrecedenceTest/TriggerExpressionPrecedence.sgen
  9. 54 0
      test-plugins/org.yakindu.sct.generator.cpp.test/gtests/TriggerExpressionPrecedenceTest/TriggerExpressionPrecedenceTest.cc
  10. 24 0
      test-plugins/org.yakindu.sct.generator.cpp.test/model/test.sgen
  11. 2 1
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/AllTestsTest.java
  12. 39 0
      test-plugins/org.yakindu.sct.generator.cpp.test/test-gen/org/yakindu/sct/generator/cpp/test/TriggerExpressionPrecedenceTest.java
  13. 25 2
      test-plugins/org.yakindu.sct.generator.java.test/model/model.sgen
  14. 16 7
      test-plugins/org.yakindu.sct.generator.java.test/model/test.sgen
  15. 2 2
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/castexpressions/CastExpressionsStatemachine.java
  16. 1 1
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/ckeywords/CKeywordsStatemachine.java
  17. 1 1
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/conditionalexpressions/ConditionalExpressionsStatemachine.java
  18. 2 2
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/entryreactionaction/EntryReactionActionStatemachine.java
  19. 1 1
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/guard/GuardStatemachine.java
  20. 1 1
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/javakeywords/JavaKeywordsStatemachine.java
  21. 3 3
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/namedinterfaceaccess/NamedInterfaceAccessStatemachine.java
  22. 1 1
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/operations/OperationsStatemachine.java
  23. 6 6
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/operationswithoutbraces/OperationsWithoutBracesStatemachine.java
  24. 1 1
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/priorityvalues/PriorityValuesStatemachine.java
  25. 19 19
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/stextkeywordsinstatesandregions/STextKeywordsInStatesAndRegionsStatemachine.java
  26. 10 10
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/stringexpressions/StringExpressionsStatemachine.java
  27. 21 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/triggerexpressionprecedence/ITriggerExpressionPrecedenceStatemachine.java
  28. 285 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/triggerexpressionprecedence/TriggerExpressionPrecedenceStatemachine.java
  29. 1 1
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/triggerguardexpressions/TriggerGuardExpressionsStatemachine.java
  30. 2 1
      test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/AllTestsTest.java
  31. 4 4
      test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/ReadOnlyVariableTest.java
  32. 71 0
      test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/TriggerExpressionPrecedenceTest.java
  33. 2 2
      test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/ModelSequencerStateReactionTest.java
  34. 16 8
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/model/test.sgen
  35. 2 1
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/AllTestsTest.java
  36. 67 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/TriggerExpressionPrecedenceTest.java
  37. 97 0
      test-plugins/org.yakindu.sct.test.models/testmodels/SCTUnit/expressions/TriggerExpressionPrecedence.sct
  38. 1 0
      test-plugins/org.yakindu.sct.test.models/tests/AllTests.sctunit
  39. 64 0
      test-plugins/org.yakindu.sct.test.models/tests/expressions/TriggerExpressionPrecedence.sctunit

+ 1 - 1
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/BehaviorMapping.xtend

@@ -730,7 +730,7 @@ class BehaviorMapping {
 		
 		val guard = t.buildGuard
 		
-		if ( triggerCheck != null && guard != null )  stext.and(stext.parenthesis(triggerCheck), guard)
+		if ( triggerCheck != null && guard != null )  stext.and(stext.parenthesis(triggerCheck), stext.parenthesis(guard))
 		else if ( triggerCheck != null )  triggerCheck
 		else guard
 	}

+ 0 - 1
test-plugins/org.yakindu.sct.generator.c.test/gtests/ReadOnlyVariable/ xxx

@@ -1 +0,0 @@
-xxx

+ 51 - 0
test-plugins/org.yakindu.sct.generator.c.test/gtests/TriggerExpressionPrecedence/TriggerExpressionPrecedence.cc

@@ -0,0 +1,51 @@
+/**
+* Copyright (c) 2016 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 "TriggerExpressionPrecedence.h"
+
+
+TriggerExpressionPrecedence handle;
+
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardFalseOrFalse) {
+	triggerExpressionPrecedence_init(&handle);
+	triggerExpressionPrecedence_enter(&handle);
+	triggerExpressionPrecedenceIface_set_c1(&handle, false);
+	triggerExpressionPrecedenceIface_set_c2(&handle, false);
+	triggerExpressionPrecedence_runCycle(&handle);
+	EXPECT_TRUE(!triggerExpressionPrecedenceIface_get_e1_transition(&handle) );
+}
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardTrueOrFalse) {
+	triggerExpressionPrecedence_init(&handle);
+	triggerExpressionPrecedence_enter(&handle);
+	triggerExpressionPrecedenceIface_set_c1(&handle, true);
+	triggerExpressionPrecedenceIface_set_c2(&handle, false);
+	triggerExpressionPrecedence_runCycle(&handle);
+	EXPECT_TRUE(!triggerExpressionPrecedenceIface_get_e1_transition(&handle) );
+}
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardFalseOrTrue) {
+	triggerExpressionPrecedence_init(&handle);
+	triggerExpressionPrecedence_enter(&handle);
+	triggerExpressionPrecedenceIface_set_c1(&handle, false);
+	triggerExpressionPrecedenceIface_set_c2(&handle, true);
+	triggerExpressionPrecedence_runCycle(&handle);
+	EXPECT_TRUE(!triggerExpressionPrecedenceIface_get_e1_transition(&handle) );
+}
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardTrueOrTrue) {
+	triggerExpressionPrecedence_init(&handle);
+	triggerExpressionPrecedence_enter(&handle);
+	triggerExpressionPrecedenceIface_set_c1(&handle, true);
+	triggerExpressionPrecedenceIface_set_c2(&handle, true);
+	triggerExpressionPrecedence_runCycle(&handle);
+	EXPECT_TRUE(!triggerExpressionPrecedenceIface_get_e1_transition(&handle) );
+}
+
+		

+ 19 - 0
test-plugins/org.yakindu.sct.generator.c.test/gtests/TriggerExpressionPrecedence/TriggerExpressionPrecedence.sgen

@@ -0,0 +1,19 @@
+GeneratorModel for yakindu::c {
+	statechart TriggerExpressionPrecedence {
+		feature Outlet {
+			targetProject = "gtests"
+			targetFolder = "TriggerExpressionPrecedence"
+		}
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineEnterSequences = false 
+			inlineExitActions = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEntries = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+		}
+	}
+}

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

@@ -1355,6 +1355,30 @@ GeneratorModel for sctunit::c {
 		}		
 	}	
 
+	test TriggerExpressionPrecedence {
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.c.test" 
+			targetFolder = "test-gen"			
+		}		
+				
+		feature JUnitWrapper {
+			WrapToJUnit =  "true" 
+		}			
+						
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineExitActions = false
+			inlineEnterSequences = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+			inlineEntries = false
+		}		
+	}	
+
 	test TriggerGuardExpressions{
 		
 		feature Outlet{ 

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

@@ -26,6 +26,7 @@ import org.junit.runners.Suite.SuiteClasses;
 		SameNameDifferentRegion.class, ShallowHistory.class, ShallowHistoryWithDeepEntry.class, SimpleEvent.class,
 		SimpleHierachy.class, StatechartActive.class, StatechartLocalReactions.class, StateIsActive.class,
 		StaticChoice.class, STextKeywordsInStatesAndRegions.class, StringExpressions.class, SyncFork.class,
-		SyncJoin.class, TransitionWithoutCondition.class, TriggerGuardExpressions.class, ValuedEvents.class})
+		SyncJoin.class, TransitionWithoutCondition.class, TriggerGuardExpressions.class,
+		TriggerExpressionPrecedence.class, ValuedEvents.class})
 public class AllTests {
 }

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

@@ -0,0 +1,39 @@
+/**
+* Copyright (c) 2016 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/TriggerExpressionPrecedence/TriggerExpressionPrecedence.cc", program = "gtests/TriggerExpressionPrecedence/TriggerExpressionPrecedence", model = "testmodels/SCTUnit/expressions/TriggerExpressionPrecedence.sct")
+@RunWith(GTestRunner.class)
+public class TriggerExpressionPrecedence {
+
+	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();
+	}
+}

+ 19 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/TriggerExpressionPrecedenceTest/TriggerExpressionPrecedence.sgen

@@ -0,0 +1,19 @@
+GeneratorModel for yakindu::cpp {
+	statechart TriggerExpressionPrecedence {
+		feature Outlet {
+			targetProject = "gtests"
+			targetFolder = "TriggerExpressionPrecedenceTest"
+		}
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineEnterSequences = false 
+			inlineExitActions = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEntries = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+		}
+	}
+}

+ 54 - 0
test-plugins/org.yakindu.sct.generator.cpp.test/gtests/TriggerExpressionPrecedenceTest/TriggerExpressionPrecedenceTest.cc

@@ -0,0 +1,54 @@
+/**
+* Copyright (c) 2016 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 "TriggerExpressionPrecedence.h"
+
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardFalseOrFalse) {
+	TriggerExpressionPrecedence* statechart = new TriggerExpressionPrecedence();
+	statechart->init();
+	statechart->enter();
+	statechart->getDefaultSCI()->set_c1(false);
+	statechart->getDefaultSCI()->set_c2(false);
+	statechart->runCycle();
+	EXPECT_TRUE(!statechart->getDefaultSCI()->get_e1_transition());
+	delete statechart;
+}
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardTrueOrFalse) {
+	TriggerExpressionPrecedence* statechart = new TriggerExpressionPrecedence();
+	statechart->init();
+	statechart->enter();
+	statechart->getDefaultSCI()->set_c1(true);
+	statechart->getDefaultSCI()->set_c2(false);
+	statechart->runCycle();
+	EXPECT_TRUE(!statechart->getDefaultSCI()->get_e1_transition());
+	delete statechart;
+}
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardFalseOrTrue) {
+	TriggerExpressionPrecedence* statechart = new TriggerExpressionPrecedence();
+	statechart->init();
+	statechart->enter();
+	statechart->getDefaultSCI()->set_c1(false);
+	statechart->getDefaultSCI()->set_c2(true);
+	statechart->runCycle();
+	EXPECT_TRUE(!statechart->getDefaultSCI()->get_e1_transition());
+	delete statechart;
+}
+TEST(StatemachineTest, unsatisfiedTriggerAndFGuardTrueOrTrue) {
+	TriggerExpressionPrecedence* statechart = new TriggerExpressionPrecedence();
+	statechart->init();
+	statechart->enter();
+	statechart->getDefaultSCI()->set_c1(true);
+	statechart->getDefaultSCI()->set_c2(true);
+	statechart->runCycle();
+	EXPECT_TRUE(!statechart->getDefaultSCI()->get_e1_transition());
+	delete statechart;
+}

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

@@ -1347,6 +1347,30 @@ GeneratorModel for sctunit::cpp {
 		}			
 	}	
 
+	test TriggerExpressionPrecedence {
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.cpp.test" 
+			targetFolder = "test-gen"			
+		}	
+		
+		feature JUnitWrapper {
+			WrapToJUnit =  "true"
+		}				
+				
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineExitActions = false
+			inlineEnterSequences = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+			inlineEntries = false
+		}		
+	}	
+
 	test TriggerGuardExpressions {
 		
 		feature Outlet{ 

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

@@ -28,6 +28,7 @@ import org.junit.runners.Suite.SuiteClasses;
 		ShallowHistoryWithDeepEntryTest.class, SimpleEventTest.class, SimpleHierachyTest.class,
 		StatechartActiveTest.class, StatechartLocalReactionsTest.class, StateIsActiveTest.class, StaticChoiceTest.class,
 		STextKeywordsInStatesAndRegionsTest.class, StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class,
-		TransitionWithoutConditionTest.class, TriggerGuardExpressionsTest.class, ValuedEventsTest.class})
+		TransitionWithoutConditionTest.class, TriggerGuardExpressionsTest.class, TriggerExpressionPrecedenceTest.class,
+		ValuedEventsTest.class})
 public class AllTestsTest {
 }

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

@@ -0,0 +1,39 @@
+/**
+* Copyright (c) 2016 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/TriggerExpressionPrecedenceTest/TriggerExpressionPrecedenceTest.cc", program = "gtests/TriggerExpressionPrecedenceTest/TriggerExpressionPrecedence", model = "testmodels/SCTUnit/expressions/TriggerExpressionPrecedence.sct")
+@RunWith(GTestRunner.class)
+public class TriggerExpressionPrecedenceTest {
+
+	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();
+	}
+}

+ 25 - 2
test-plugins/org.yakindu.sct.generator.java.test/model/model.sgen

@@ -23,10 +23,33 @@ GeneratorModel for yakindu::java {
 			inlineEnterRegion = false
 			inlineExitRegion = false
 			inlineEntries = false
+		}		
+	}
+
+
+	statechart expressions.TriggerExpressionPrecedence  {
+		feature Outlet {
+			targetProject = "org.yakindu.sct.generator.java.test"
+			targetFolder = "src-gen"
+		}
+
+
+		feature GeneralFeatures {
+			TimerService = true
+			RuntimeService = true
 		}
 		
-		
-		
+		feature FunctionInlining {
+			inlineReactions = false
+			inlineEntryActions = false
+			inlineExitActions = false
+			inlineEnterSequences = false
+			inlineExitSequences = false
+			inlineChoices = false
+			inlineEnterRegion = false
+			inlineExitRegion = false
+			inlineEntries = false
+		}		
 	}
 	
 	statechart AlwaysOncycle {

+ 16 - 7
test-plugins/org.yakindu.sct.generator.java.test/model/test.sgen

@@ -8,13 +8,6 @@ GeneratorModel for sctunit::java {
 		}			
 	}
 
-	test EntryReactionAction{
-		
-		feature Outlet{ 
-			targetProject = "org.yakindu.sct.generator.java.test" 
-			targetFolder = "test-gen"			
-		}			
-	}
 	
 	test AlwaysOncycle{
 		
@@ -152,6 +145,14 @@ GeneratorModel for sctunit::java {
 		}			
 	}
 	
+	test EntryReactionAction{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.java.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
 	test ExitOnSelfTransition{
 		
 		feature Outlet{ 
@@ -469,6 +470,14 @@ GeneratorModel for sctunit::java {
 		}			
 	}
 
+	test TriggerExpressionPrecedence {
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.generator.java.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+
 
 	test ValuedEvents{
 		

+ 2 - 2
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/castexpressions/CastExpressionsStatemachine.java

@@ -139,8 +139,8 @@ public class CastExpressionsStatemachine implements ICastExpressionsStatemachine
 	}
 
 	private boolean check_main_region_B_tr0_tr0() {
-		return (true) && ((double) (sCInterface.getRealValue() * 0.1)) > ((long) 1.4)
-				&& ((long) (sCInterface.getRealValue() * sCInterface.getIntValue())) < ((double) 100);
+		return (true) && (((double) (sCInterface.getRealValue() * 0.1)) > ((long) 1.4)
+				&& ((long) (sCInterface.getRealValue() * sCInterface.getIntValue())) < ((double) 100));
 	}
 
 	private void effect_main_region_A_tr0() {

+ 1 - 1
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/ckeywords/CKeywordsStatemachine.java

@@ -624,7 +624,7 @@ public class CKeywordsStatemachine implements ICKeywordsStatemachine {
 	}
 
 	private boolean check_auto_char_tr0_tr0() {
-		return (sCInterface.auto) && sCInterface.getCase();
+		return (sCInterface.auto) && (sCInterface.getCase());
 	}
 
 	private void effect_auto_char_tr0() {

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

@@ -148,7 +148,7 @@ public class ConditionalExpressionsStatemachine implements IConditionalExpressio
 	}
 
 	private boolean check_main_region_A_tr0_tr0() {
-		return (sCInterface.e) && 1 == (sCInterface.getBoolVar() ? 1 : 0);
+		return (sCInterface.e) && (1 == (sCInterface.getBoolVar() ? 1 : 0));
 	}
 
 	private void effect_main_region_A_tr0() {

+ 2 - 2
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/entryreactionaction/EntryReactionActionStatemachine.java

@@ -105,7 +105,7 @@ public class EntryReactionActionStatemachine implements IEntryReactionActionStat
 	public void enter() {
 		if (!initialized)
 			throw new IllegalStateException(
-					"The statemachine needs to be initialized first by calling the init() function.");
+					"The state machine needs to be initialized first by calling the init() function.");
 
 		enterSequence_EntryReactionAction_r2_default();
 
@@ -484,7 +484,7 @@ public class EntryReactionActionStatemachine implements IEntryReactionActionStat
 	public void runCycle() {
 		if (!initialized)
 			throw new IllegalStateException(
-					"The statemachine needs to be initialized first by calling the init() function.");
+					"The state machine needs to be initialized first by calling the init() function.");
 
 		clearOutEvents();
 

+ 1 - 1
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/guard/GuardStatemachine.java

@@ -149,7 +149,7 @@ public class GuardStatemachine implements IGuardStatemachine {
 	}
 
 	private boolean check_main_region_A_tr0_tr0() {
-		return (sCInterface.event1) && sCInterface.getMyVar() == 10;
+		return (sCInterface.event1) && (sCInterface.getMyVar() == 10);
 	}
 
 	private boolean check_main_region_A_tr1_tr1() {

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

@@ -970,7 +970,7 @@ public class JavaKeywordsStatemachine implements IJavaKeywordsStatemachine {
 	}
 
 	private boolean check_goto_abstract_tr0_tr0() {
-		return (sCInterface.while_ID) && true;
+		return (sCInterface.while_ID) && (true);
 	}
 
 	private boolean check_goto_boolean_tr0_tr0() {

+ 3 - 3
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/namedinterfaceaccess/NamedInterfaceAccessStatemachine.java

@@ -208,11 +208,11 @@ public class NamedInterfaceAccessStatemachine implements INamedInterfaceAccessSt
 	}
 
 	private boolean check_region_1_Idle_tr0_tr0() {
-		return (sCIUser.numberPressed) && sCIUser.getNumberPressedValue() == getNumber1();
+		return (sCIUser.numberPressed) && (sCIUser.getNumberPressedValue() == getNumber1());
 	}
 
 	private boolean check_region_1_Number1Pressed_tr0_tr0() {
-		return (sCIUser.numberPressed) && sCIUser.getNumberPressedValue() == getNumber2();
+		return (sCIUser.numberPressed) && (sCIUser.getNumberPressedValue() == getNumber2());
 	}
 
 	private boolean check_region_1_Number1Pressed_tr1_tr1() {
@@ -220,7 +220,7 @@ public class NamedInterfaceAccessStatemachine implements INamedInterfaceAccessSt
 	}
 
 	private boolean check_region_1_Number2Pressed_tr0_tr0() {
-		return (sCIUser.numberPressed) && sCIUser.getNumberPressedValue() == getNumber3();
+		return (sCIUser.numberPressed) && (sCIUser.getNumberPressedValue() == getNumber3());
 	}
 
 	private boolean check_region_1_Number2Pressed_tr1_tr1() {

+ 1 - 1
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/operations/OperationsStatemachine.java

@@ -153,7 +153,7 @@ public class OperationsStatemachine implements IOperationsStatemachine {
 	}
 
 	private boolean check_main_region_B_tr0_tr0() {
-		return (sCInterface.ev) && sCInterface.operationCallback.alwaysTrue();
+		return (sCInterface.ev) && (sCInterface.operationCallback.alwaysTrue());
 	}
 
 	private boolean check_main_region_C_tr0_tr0() {

+ 6 - 6
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/operationswithoutbraces/OperationsWithoutBracesStatemachine.java

@@ -117,27 +117,27 @@ public class OperationsWithoutBracesStatemachine implements IOperationsWithoutBr
 	}
 
 	private boolean check_main_region_A_tr0_tr0() {
-		return (true) && !sCInterface.operationCallback.myBoolOp();
+		return (true) && (!sCInterface.operationCallback.myBoolOp());
 	}
 
 	private boolean check_main_region_B_tr0_tr0() {
-		return (true) && sCInterface.operationCallback.myIntOp() == 0;
+		return (true) && (sCInterface.operationCallback.myIntOp() == 0);
 	}
 
 	private boolean check_main_region_C_tr0_tr0() {
-		return (true) && sCInterface.operationCallback.myRealOp() == 0.0;
+		return (true) && (sCInterface.operationCallback.myRealOp() == 0.0);
 	}
 
 	private boolean check_another_region_A_tr0_tr0() {
-		return (true) && !sCInterface.operationCallback.myBoolOp();
+		return (true) && (!sCInterface.operationCallback.myBoolOp());
 	}
 
 	private boolean check_another_region_B_tr0_tr0() {
-		return (true) && sCInterface.operationCallback.myIntOp() == 0;
+		return (true) && (sCInterface.operationCallback.myIntOp() == 0);
 	}
 
 	private boolean check_another_region_C_tr0_tr0() {
-		return (true) && sCInterface.operationCallback.myRealOp() == 0.0;
+		return (true) && (sCInterface.operationCallback.myRealOp() == 0.0);
 	}
 
 	private void effect_main_region_A_tr0() {

+ 1 - 1
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/priorityvalues/PriorityValuesStatemachine.java

@@ -150,7 +150,7 @@ public class PriorityValuesStatemachine implements IPriorityValuesStatemachine {
 	}
 
 	private boolean check_main_region_A_tr3_tr3() {
-		return (sCInterface.event2) && !isStateActive(State.someRegion_B);
+		return (sCInterface.event2) && (!isStateActive(State.someRegion_B));
 	}
 
 	private void effect_someRegion_A_tr0() {

+ 19 - 19
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/stextkeywordsinstatesandregions/STextKeywordsInStatesAndRegionsStatemachine.java

@@ -279,79 +279,79 @@ public class STextKeywordsInStatesAndRegionsStatemachine implements ISTextKeywor
 	}
 
 	private boolean check_operation_interface_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.default_namespace);
+		return (sCInterface.e1) && (isStateActive(State.default_namespace));
 	}
 
 	private boolean check_namespace_event_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.operation_internal);
+		return (sCInterface.e2) && (isStateActive(State.operation_internal));
 	}
 
 	private boolean check_local_in_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.namespace_local);
+		return (sCInterface.e1) && (isStateActive(State.namespace_local));
 	}
 
 	private boolean check_interface_var_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.local_out);
+		return (sCInterface.e2) && (isStateActive(State.local_out));
 	}
 
 	private boolean check_internal_external_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.interface_readonly);
+		return (sCInterface.e1) && (isStateActive(State.interface_readonly));
 	}
 
 	private boolean check_event_default_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.internal_operation);
+		return (sCInterface.e2) && (isStateActive(State.internal_operation));
 	}
 
 	private boolean check_in_entry_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.event_else);
+		return (sCInterface.e1) && (isStateActive(State.event_else));
 	}
 
 	private boolean check_out_always_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.in_exit);
+		return (sCInterface.e2) && (isStateActive(State.in_exit));
 	}
 
 	private boolean check_var_raise_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.out_oncycle);
+		return (sCInterface.e1) && (isStateActive(State.out_oncycle));
 	}
 
 	private boolean check_readonly_active_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.var_valueof);
+		return (sCInterface.e2) && (isStateActive(State.var_valueof));
 	}
 
 	private boolean check_external_interface_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.readonly_namespace);
+		return (sCInterface.e1) && (isStateActive(State.readonly_namespace));
 	}
 
 	private boolean check_else_event_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.external_internal);
+		return (sCInterface.e2) && (isStateActive(State.external_internal));
 	}
 
 	private boolean check_entry_in_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.else_local);
+		return (sCInterface.e1) && (isStateActive(State.else_local));
 	}
 
 	private boolean check_exit_var_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.entry_out);
+		return (sCInterface.e2) && (isStateActive(State.entry_out));
 	}
 
 	private boolean check_always_external_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.exit_readonly);
+		return (sCInterface.e1) && (isStateActive(State.exit_readonly));
 	}
 
 	private boolean check_oncycle_default_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.always_operation);
+		return (sCInterface.e2) && (isStateActive(State.always_operation));
 	}
 
 	private boolean check_raise_entry_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.oncycle_else);
+		return (sCInterface.e1) && (isStateActive(State.oncycle_else));
 	}
 
 	private boolean check_valueof_always_tr0_tr0() {
-		return (sCInterface.e2) && isStateActive(State.raise_exit);
+		return (sCInterface.e2) && (isStateActive(State.raise_exit));
 	}
 
 	private boolean check_active_raise_tr0_tr0() {
-		return (sCInterface.e1) && isStateActive(State.valueof_oncycle);
+		return (sCInterface.e1) && (isStateActive(State.valueof_oncycle));
 	}
 
 	private void effect_operation_interface_tr0() {

+ 10 - 10
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/stringexpressions/StringExpressionsStatemachine.java

@@ -313,9 +313,9 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 	}
 
 	private boolean check_main_region__choice_1_tr1_tr1() {
-		return (sCInterface.e) && (sCInterface.getStringA() == null
+		return (sCInterface.e) && ((sCInterface.getStringA() == null
 				? sCInterface.getStringA2() == null
-				: sCInterface.getStringA().equals(sCInterface.getStringA2()));
+				: sCInterface.getStringA().equals(sCInterface.getStringA2())));
 	}
 
 	private boolean check_main_region__choice_1_tr0() {
@@ -323,9 +323,9 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 	}
 
 	private boolean check_main_region__choice_2_tr1_tr1() {
-		return (sCInterface.e) && (sCInterface.getStringA() == null
+		return (sCInterface.e) && ((sCInterface.getStringA() == null
 				? sCInterface.getStringB() != null
-				: !sCInterface.getStringA().equals(sCInterface.getStringB()));
+				: !sCInterface.getStringA().equals(sCInterface.getStringB())));
 	}
 
 	private boolean check_main_region__choice_2_tr0() {
@@ -342,7 +342,7 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 
 	private boolean check_main_region__choice_4_tr1_tr1() {
 		return (sCInterface.e)
-				&& (sCInterface.getStringA() == null ? "A" == null : sCInterface.getStringA().equals("A"));
+				&& ((sCInterface.getStringA() == null ? "A" == null : sCInterface.getStringA().equals("A")));
 	}
 
 	private boolean check_main_region__choice_4_tr0() {
@@ -351,7 +351,7 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 
 	private boolean check_main_region__choice_5_tr1_tr1() {
 		return (sCInterface.e)
-				&& (sCInterface.getStringA() == null ? "B" != null : !sCInterface.getStringA().equals("B"));
+				&& ((sCInterface.getStringA() == null ? "B" != null : !sCInterface.getStringA().equals("B")));
 	}
 
 	private boolean check_main_region__choice_5_tr0() {
@@ -372,7 +372,7 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 
 	private boolean check_main_region__choice_8_tr1_tr1() {
 		return (sCInterface.e)
-				&& ("A" == null ? sCInterface.getStringA() == null : "A".equals(sCInterface.getStringA()));
+				&& (("A" == null ? sCInterface.getStringA() == null : "A".equals(sCInterface.getStringA())));
 	}
 
 	private boolean check_main_region__choice_8_tr0() {
@@ -381,7 +381,7 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 
 	private boolean check_main_region__choice_9_tr1_tr1() {
 		return (sCInterface.e)
-				&& ("A" == null ? sCInterface.getStringB() != null : !"A".equals(sCInterface.getStringB()));
+				&& (("A" == null ? sCInterface.getStringB() != null : !"A".equals(sCInterface.getStringB())));
 	}
 
 	private boolean check_main_region__choice_9_tr0() {
@@ -401,7 +401,7 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 	}
 
 	private boolean check_main_region__choice_12_tr1_tr1() {
-		return (sCInterface.e) && ("A" == null ? "A" == null : "A".equals("A"));
+		return (sCInterface.e) && (("A" == null ? "A" == null : "A".equals("A")));
 	}
 
 	private boolean check_main_region__choice_12_tr0() {
@@ -409,7 +409,7 @@ public class StringExpressionsStatemachine implements IStringExpressionsStatemac
 	}
 
 	private boolean check_main_region__choice_13_tr1_tr1() {
-		return (sCInterface.e) && ("A" == null ? "B" != null : !"A".equals("B"));
+		return (sCInterface.e) && (("A" == null ? "B" != null : !"A".equals("B")));
 	}
 
 	private boolean check_main_region__choice_13_tr0() {

+ 21 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/triggerexpressionprecedence/ITriggerExpressionPrecedenceStatemachine.java

@@ -0,0 +1,21 @@
+package org.yakindu.scr.triggerexpressionprecedence;
+import org.yakindu.scr.IStatemachine;
+
+public interface ITriggerExpressionPrecedenceStatemachine extends IStatemachine {
+	public interface SCInterface {
+		public void raiseE1();
+		public void raiseE2();
+		public boolean getC1();
+		public void setC1(boolean value);
+		public boolean getC2();
+		public void setC2(boolean value);
+		public boolean getE1_transition();
+		public void setE1_transition(boolean value);
+		public boolean getE2_transition();
+		public void setE2_transition(boolean value);
+
+	}
+
+	public SCInterface getSCInterface();
+
+}

+ 285 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/triggerexpressionprecedence/TriggerExpressionPrecedenceStatemachine.java

@@ -0,0 +1,285 @@
+package org.yakindu.scr.triggerexpressionprecedence;
+
+public class TriggerExpressionPrecedenceStatemachine implements ITriggerExpressionPrecedenceStatemachine {
+
+	protected class SCInterfaceImpl implements SCInterface {
+
+		private boolean e1;
+
+		public void raiseE1() {
+			e1 = true;
+		}
+
+		private boolean e2;
+
+		public void raiseE2() {
+			e2 = true;
+		}
+
+		private boolean c1;
+
+		public boolean getC1() {
+			return c1;
+		}
+
+		public void setC1(boolean value) {
+			this.c1 = value;
+		}
+
+		private boolean c2;
+
+		public boolean getC2() {
+			return c2;
+		}
+
+		public void setC2(boolean value) {
+			this.c2 = value;
+		}
+
+		private boolean e1_transition;
+
+		public boolean getE1_transition() {
+			return e1_transition;
+		}
+
+		public void setE1_transition(boolean value) {
+			this.e1_transition = value;
+		}
+
+		private boolean e2_transition;
+
+		public boolean getE2_transition() {
+			return e2_transition;
+		}
+
+		public void setE2_transition(boolean value) {
+			this.e2_transition = value;
+		}
+
+		protected void clearEvents() {
+			e1 = false;
+			e2 = false;
+		}
+
+	}
+
+	protected SCInterfaceImpl sCInterface;
+
+	private boolean initialized = false;
+
+	public enum State {
+		triggerExpressionPrecedence_main_region_A, $NullState$
+	};
+
+	private final State[] stateVector = new State[1];
+
+	private int nextStateIndex;
+
+	public TriggerExpressionPrecedenceStatemachine() {
+
+		sCInterface = new SCInterfaceImpl();
+	}
+
+	public void init() {
+		this.initialized = true;
+		for (int i = 0; i < 1; i++) {
+			stateVector[i] = State.$NullState$;
+		}
+
+		clearEvents();
+		clearOutEvents();
+
+		sCInterface.setC1(false);
+
+		sCInterface.setC2(false);
+
+		sCInterface.setE1_transition(false);
+
+		sCInterface.setE2_transition(false);
+	}
+
+	public void enter() {
+		if (!initialized)
+			throw new IllegalStateException(
+					"The state machine needs to be initialized first by calling the init() function.");
+
+		enterSequence_TriggerExpressionPrecedence_main_region_default();
+	}
+
+	public void exit() {
+		exitSequence_TriggerExpressionPrecedence_main_region();
+	}
+
+	/**
+	 * @see IStatemachine#isActive()
+	 */
+	public boolean isActive() {
+
+		return stateVector[0] != State.$NullState$;
+	}
+
+	/** 
+	* Always returns 'false' since this state machine can never become final.
+	*
+	 * @see IStatemachine#isFinal() 
+	 */
+	public boolean isFinal() {
+		return false;
+	}
+
+	/**
+	* 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 triggerExpressionPrecedence_main_region_A :
+				return stateVector[0] == State.triggerExpressionPrecedence_main_region_A;
+			default :
+				return false;
+		}
+	}
+
+	public SCInterface getSCInterface() {
+		return sCInterface;
+	}
+
+	public void raiseE1() {
+		sCInterface.raiseE1();
+	}
+	public void raiseE2() {
+		sCInterface.raiseE2();
+	}
+
+	public boolean getC1() {
+		return sCInterface.getC1();
+	}
+
+	public void setC1(boolean value) {
+		sCInterface.setC1(value);
+	}
+	public boolean getC2() {
+		return sCInterface.getC2();
+	}
+
+	public void setC2(boolean value) {
+		sCInterface.setC2(value);
+	}
+	public boolean getE1_transition() {
+		return sCInterface.getE1_transition();
+	}
+
+	public void setE1_transition(boolean value) {
+		sCInterface.setE1_transition(value);
+	}
+	public boolean getE2_transition() {
+		return sCInterface.getE2_transition();
+	}
+
+	public void setE2_transition(boolean value) {
+		sCInterface.setE2_transition(value);
+	}
+
+	private boolean check_TriggerExpressionPrecedence_main_region_A_tr0_tr0() {
+		return (sCInterface.e1) && (sCInterface.getC1() || sCInterface.getC2());
+	}
+
+	private boolean check_TriggerExpressionPrecedence_main_region_A_tr1_tr1() {
+		return sCInterface.e2;
+	}
+
+	private void effect_TriggerExpressionPrecedence_main_region_A_tr0() {
+		exitSequence_TriggerExpressionPrecedence_main_region_A();
+
+		sCInterface.setE1_transition(true);
+
+		enterSequence_TriggerExpressionPrecedence_main_region_A_default();
+	}
+
+	private void effect_TriggerExpressionPrecedence_main_region_A_tr1() {
+		exitSequence_TriggerExpressionPrecedence_main_region_A();
+
+		sCInterface.setE2_transition(true);
+
+		enterSequence_TriggerExpressionPrecedence_main_region_A_default();
+	}
+
+	/* 'default' enter sequence for state A */
+	private void enterSequence_TriggerExpressionPrecedence_main_region_A_default() {
+		nextStateIndex = 0;
+		stateVector[0] = State.triggerExpressionPrecedence_main_region_A;
+	}
+
+	/* 'default' enter sequence for region main region */
+	private void enterSequence_TriggerExpressionPrecedence_main_region_default() {
+		react_TriggerExpressionPrecedence_main_region__entry_Default();
+	}
+
+	/* Default exit sequence for state A */
+	private void exitSequence_TriggerExpressionPrecedence_main_region_A() {
+		nextStateIndex = 0;
+		stateVector[0] = State.$NullState$;
+	}
+
+	/* Default exit sequence for region main region */
+	private void exitSequence_TriggerExpressionPrecedence_main_region() {
+		switch (stateVector[0]) {
+			case triggerExpressionPrecedence_main_region_A :
+				exitSequence_TriggerExpressionPrecedence_main_region_A();
+				break;
+
+			default :
+				break;
+		}
+	}
+
+	/* The reactions of state A. */
+	private void react_TriggerExpressionPrecedence_main_region_A() {
+		if (check_TriggerExpressionPrecedence_main_region_A_tr0_tr0()) {
+			effect_TriggerExpressionPrecedence_main_region_A_tr0();
+		} else {
+			if (check_TriggerExpressionPrecedence_main_region_A_tr1_tr1()) {
+				effect_TriggerExpressionPrecedence_main_region_A_tr1();
+			}
+		}
+	}
+
+	/* Default react sequence for initial entry  */
+	private void react_TriggerExpressionPrecedence_main_region__entry_Default() {
+		enterSequence_TriggerExpressionPrecedence_main_region_A_default();
+	}
+
+	public void runCycle() {
+		if (!initialized)
+			throw new IllegalStateException(
+					"The state machine needs to be initialized first by calling the init() function.");
+
+		clearOutEvents();
+
+		for (nextStateIndex = 0; nextStateIndex < stateVector.length; nextStateIndex++) {
+
+			switch (stateVector[nextStateIndex]) {
+				case triggerExpressionPrecedence_main_region_A :
+					react_TriggerExpressionPrecedence_main_region_A();
+					break;
+				default :
+					// $NullState$
+			}
+		}
+
+		clearEvents();
+	}
+}

+ 1 - 1
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/triggerguardexpressions/TriggerGuardExpressionsStatemachine.java

@@ -139,7 +139,7 @@ public class TriggerGuardExpressionsStatemachine implements ITriggerGuardExpress
 	}
 
 	private boolean check_main_region_A_tr0_tr0() {
-		return (sCInterface.e1 || sCInterface.e2) && sCInterface.getB();
+		return (sCInterface.e1 || sCInterface.e2) && (sCInterface.getB());
 	}
 
 	private boolean check_main_region_B_tr0_tr0() {

+ 2 - 1
test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/AllTestsTest.java

@@ -28,6 +28,7 @@ import org.junit.runners.Suite.SuiteClasses;
 		ShallowHistoryWithDeepEntryTest.class, SimpleEventTest.class, SimpleHierachyTest.class,
 		StatechartActiveTest.class, StatechartLocalReactionsTest.class, StateIsActiveTest.class, StaticChoiceTest.class,
 		STextKeywordsInStatesAndRegionsTest.class, StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class,
-		TransitionWithoutConditionTest.class, TriggerGuardExpressionsTest.class, ValuedEventsTest.class})
+		TransitionWithoutConditionTest.class, TriggerGuardExpressionsTest.class, TriggerExpressionPrecedenceTest.class,
+		ValuedEventsTest.class})
 public class AllTestsTest {
 }

+ 4 - 4
test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/ReadOnlyVariableTest.java

@@ -43,20 +43,20 @@ public class ReadOnlyVariableTest {
 		assertTrue(statemachine.getMyInt() == 0l);
 		assertTrue(statemachine.getMyString().equals("testString"));
 		assertTrue(statemachine.getMyBool() == true);
-		assertTrue(statemachine.getMyReal() == 1.1d);
+		assertTrue(statemachine.getMyReal() == 1.1);
 		assertTrue(statemachine.getSCIA().getMyInt() == 0l);
 		assertTrue(statemachine.getSCIA().getMyString().equals("testString"));
 		assertTrue(statemachine.getSCIA().getMyBool() == true);
-		assertTrue(statemachine.getSCIA().getMyReal() == 1.1d);
+		assertTrue(statemachine.getSCIA().getMyReal() == 1.1);
 		statemachine.runCycle();
 		assertTrue(statemachine.isStateActive(State.main_region_StateB));
 		assertTrue(statemachine.getMyInt() == 100l);
 		assertTrue(statemachine.getMyString().equals("fail"));
 		assertTrue(statemachine.getMyBool() == false);
-		assertTrue(statemachine.getMyReal() == 6.6d);
+		assertTrue(statemachine.getMyReal() == 6.6);
 		assertTrue(statemachine.getSCIA().getMyInt() == 200l);
 		assertTrue(statemachine.getSCIA().getMyString().equals("A_fail"));
 		assertTrue(statemachine.getSCIA().getMyBool() == false);
-		assertTrue(statemachine.getSCIA().getMyReal() == 7.7d);
+		assertTrue(statemachine.getSCIA().getMyReal() == 7.7);
 	}
 }

+ 71 - 0
test-plugins/org.yakindu.sct.generator.java.test/test-gen/org/yakindu/sct/generator/java/test/TriggerExpressionPrecedenceTest.java

@@ -0,0 +1,71 @@
+/**
+* Copyright (c) 2016 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.triggerexpressionprecedence.TriggerExpressionPrecedenceStatemachine;
+import org.yakindu.scr.triggerexpressionprecedence.TriggerExpressionPrecedenceStatemachine.State;
+/**
+ *  Unit TestCase for TriggerExpressionPrecedence
+ */
+@SuppressWarnings("all")
+public class TriggerExpressionPrecedenceTest {
+
+	private TriggerExpressionPrecedenceStatemachine statemachine;
+
+	@Before
+	public void setUp() {
+		statemachine = new TriggerExpressionPrecedenceStatemachine();
+		statemachine.init();
+	}
+
+	@After
+	public void tearDown() {
+		statemachine = null;
+	}
+
+	@Test
+	public void testunsatisfiedTriggerAndFGuardFalseOrFalse() {
+		statemachine.enter();
+		statemachine.setC1(false);
+		statemachine.setC2(false);
+		statemachine.runCycle();
+		assertTrue(!statemachine.getE1_transition());
+	}
+	@Test
+	public void testunsatisfiedTriggerAndFGuardTrueOrFalse() {
+		statemachine.enter();
+		statemachine.setC1(true);
+		statemachine.setC2(false);
+		statemachine.runCycle();
+		assertTrue(!statemachine.getE1_transition());
+	}
+	@Test
+	public void testunsatisfiedTriggerAndFGuardFalseOrTrue() {
+		statemachine.enter();
+		statemachine.setC1(false);
+		statemachine.setC2(true);
+		statemachine.runCycle();
+		assertTrue(!statemachine.getE1_transition());
+	}
+	@Test
+	public void testunsatisfiedTriggerAndFGuardTrueOrTrue() {
+		statemachine.enter();
+		statemachine.setC1(true);
+		statemachine.setC2(true);
+		statemachine.runCycle();
+		assertTrue(!statemachine.getE1_transition());
+	}
+}

+ 2 - 2
test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/ModelSequencerStateReactionTest.java

@@ -221,8 +221,8 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 				.getLeftOperand();
 		LogicalOrExpression triggerCheck = (LogicalOrExpression) parenthesis
 				.getExpression();
-		PrimitiveValueExpression guardCheck = (PrimitiveValueExpression) and
-				.getRightOperand();
+		PrimitiveValueExpression guardCheck = (PrimitiveValueExpression) ((ParenthesizedExpression) and
+				.getRightOperand()).getExpression();
 
 		assertClass(ElementReferenceExpression.class,
 				triggerCheck.getLeftOperand());

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

@@ -8,14 +8,6 @@ GeneratorModel for sctunit::interpreter {
 		}
 	}	
 	
-	test EntryReactionAction{ 
-		
-		feature Outlet{ 
-			targetProject = "org.yakindu.sct.simulation.core.sexec.test" 
-			targetFolder = "test-gen"			
-		}			
-	}
-	
 	test AlwaysOncycle{ 
 		
 		feature Outlet{ 
@@ -153,6 +145,14 @@ GeneratorModel for sctunit::interpreter {
 		}			
 	}	
 	
+	test EntryReactionAction{ 
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.simulation.core.sexec.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
 	test ExitOnSelfTransition{
 		
 		feature Outlet{ 
@@ -470,6 +470,14 @@ GeneratorModel for sctunit::interpreter {
 		}			
 	}
 	
+	test TriggerExpressionPrecedence{
+		
+		feature Outlet{ 
+			targetProject = "org.yakindu.sct.simulation.core.sexec.test" 
+			targetFolder = "test-gen"			
+		}			
+	}
+	
 	test TypeAlias{
 		
 		feature Outlet{ 

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

@@ -29,6 +29,7 @@ import org.junit.runners.Suite.SuiteClasses;
 		ShallowHistoryWithDeepEntryTest.class, SimpleEventTest.class, SimpleHierachyTest.class,
 		StatechartActiveTest.class, StatechartLocalReactionsTest.class, StateIsActiveTest.class, StaticChoiceTest.class,
 		STextKeywordsInStatesAndRegionsTest.class, StringExpressionsTest.class, SyncForkTest.class, SyncJoinTest.class,
-		TransitionWithoutConditionTest.class, TriggerGuardExpressionsTest.class, ValuedEventsTest.class})
+		TransitionWithoutConditionTest.class, TriggerGuardExpressionsTest.class, TriggerExpressionPrecedenceTest.class,
+		ValuedEventsTest.class})
 public class AllTestsTest {
 }

+ 67 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/test-gen/org/yakindu/sct/simulation/core/sexec/test/TriggerExpressionPrecedenceTest.java

@@ -0,0 +1,67 @@
+/**
+* Copyright (c) 2016 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 TriggerExpressionPrecedence
+ */
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(SExecInjectionProvider.class)
+public class TriggerExpressionPrecedenceTest extends AbstractExecutionFlowTest {
+	@Before
+	public void setup() throws Exception {
+		ExecutionFlow flow = models.loadExecutionFlowFromResource("expressions/TriggerExpressionPrecedence.sct");
+		initInterpreter(flow);
+	}
+	@Test
+	public void unsatisfiedTriggerAndFGuardFalseOrFalse() throws Exception {
+		interpreter.enter();
+		setBoolean("c1", false);
+		setBoolean("c2", false);
+		interpreter.runCycle();
+		assertTrue(!getBoolean("e1_transition"));
+	}
+	@Test
+	public void unsatisfiedTriggerAndFGuardTrueOrFalse() throws Exception {
+		interpreter.enter();
+		setBoolean("c1", true);
+		setBoolean("c2", false);
+		interpreter.runCycle();
+		assertTrue(!getBoolean("e1_transition"));
+	}
+	@Test
+	public void unsatisfiedTriggerAndFGuardFalseOrTrue() throws Exception {
+		interpreter.enter();
+		setBoolean("c1", false);
+		setBoolean("c2", true);
+		interpreter.runCycle();
+		assertTrue(!getBoolean("e1_transition"));
+	}
+	@Test
+	public void unsatisfiedTriggerAndFGuardTrueOrTrue() throws Exception {
+		interpreter.enter();
+		setBoolean("c1", true);
+		setBoolean("c2", true);
+		interpreter.runCycle();
+		assertTrue(!getBoolean("e1_transition"));
+	}
+}

+ 97 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/SCTUnit/expressions/TriggerExpressionPrecedence.sct

@@ -0,0 +1,97 @@
+<?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="_eGVTMM51EeWP64SB222YgA" specification="namespace expressions&#xA;&#xA;interface:&#xA;&#xA;in event e1&#xA;in event e2&#xA;&#xA;var c1 : boolean&#xA;var c2 : boolean&#xA;&#xA;&#xA;var e1_transition : boolean&#xA;var e2_transition : boolean&#xA;&#xA;" namespace="expressions" name="TriggerExpressionPrecedence">
+    <regions xmi:id="_eGtGoM51EeWP64SB222YgA" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_eHABkM51EeWP64SB222YgA">
+        <outgoingTransitions xmi:id="_eHH9YM51EeWP64SB222YgA" target="_eHB2wM51EeWP64SB222YgA"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_eHB2wM51EeWP64SB222YgA" name="A" incomingTransitions="_eHH9YM51EeWP64SB222YgA _xjIDEM51EeWP64SB222YgA _y-GzUM51EeWP64SB222YgA">
+        <outgoingTransitions xmi:id="_xjIDEM51EeWP64SB222YgA" specification="e1 [c1 || c2] / e1_transition = true" target="_eHB2wM51EeWP64SB222YgA"/>
+        <outgoingTransitions xmi:id="_y-GzUM51EeWP64SB222YgA" specification="e2 / e2_transition = true" target="_eHB2wM51EeWP64SB222YgA"/>
+      </vertices>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_eGsfkM51EeWP64SB222YgA" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_eGVTMM51EeWP64SB222YgA" measurementUnit="Pixel">
+    <children xmi:id="_eGymMM51EeWP64SB222YgA" type="Region" element="_eGtGoM51EeWP64SB222YgA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_eG8XMM51EeWP64SB222YgA" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_eG8XMc51EeWP64SB222YgA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_eG8XMs51EeWP64SB222YgA"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_eG9lUM51EeWP64SB222YgA" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_eHAooM51EeWP64SB222YgA" type="Entry" element="_eHABkM51EeWP64SB222YgA">
+          <children xmi:id="_eHBPsM51EeWP64SB222YgA" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_eHBPs851EeWP64SB222YgA" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_eHBPtM51EeWP64SB222YgA"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_eHBPtc51EeWP64SB222YgA"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_eHBPsc51EeWP64SB222YgA" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eHBPss51EeWP64SB222YgA"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_eHAooc51EeWP64SB222YgA" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+          <styles xsi:type="notation:NamedStyle" xmi:id="_eHAoos51EeWP64SB222YgA" name="allowColors"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eHBPts51EeWP64SB222YgA" x="70" y="20"/>
+        </children>
+        <children xmi:id="_eHE6EM51EeWP64SB222YgA" type="State" element="_eHB2wM51EeWP64SB222YgA">
+          <children xsi:type="notation:DecorationNode" xmi:id="_eHE6FM51EeWP64SB222YgA" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_eHE6Fc51EeWP64SB222YgA"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_eHE6Fs51EeWP64SB222YgA"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_eHGIMM51EeWP64SB222YgA" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_eHGIMc51EeWP64SB222YgA" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eHGIMs51EeWP64SB222YgA"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_eHGvQM51EeWP64SB222YgA" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_eHE6Ec51EeWP64SB222YgA" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_eHE6Es51EeWP64SB222YgA"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_eHGvQc51EeWP64SB222YgA" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eHGvQs51EeWP64SB222YgA" x="50" y="61" height="114"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eG9lUc51EeWP64SB222YgA"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_eGymMc51EeWP64SB222YgA" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eG-MYM51EeWP64SB222YgA" x="220" y="10" width="400" height="400"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_eHOEAM51EeWP64SB222YgA" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_eHOEAs51EeWP64SB222YgA" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_eHOEA851EeWP64SB222YgA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_eHOEBM51EeWP64SB222YgA"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_eHOEBc51EeWP64SB222YgA" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eHOEBs51EeWP64SB222YgA"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_eHOrEM51EeWP64SB222YgA" x="10" y="10" width="200" height="400"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_eGsfkc51EeWP64SB222YgA"/>
+    <edges xmi:id="_eHM14M51EeWP64SB222YgA" type="Transition" element="_eHH9YM51EeWP64SB222YgA" source="_eHAooM51EeWP64SB222YgA" target="_eHE6EM51EeWP64SB222YgA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_eHNc8851EeWP64SB222YgA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_eHNc9M51EeWP64SB222YgA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_eHNc9c51EeWP64SB222YgA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_eHNc8M51EeWP64SB222YgA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_eHNc8s51EeWP64SB222YgA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_eHNc8c51EeWP64SB222YgA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:id="_xjJRMM51EeWP64SB222YgA" type="Transition" element="_xjIDEM51EeWP64SB222YgA" source="_eHE6EM51EeWP64SB222YgA" target="_eHE6EM51EeWP64SB222YgA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_xjM7kc51EeWP64SB222YgA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_xjM7ks51EeWP64SB222YgA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_xjM7k851EeWP64SB222YgA" x="-2" y="-93"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_xjJRMc51EeWP64SB222YgA" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_xjM7kM51EeWP64SB222YgA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_xjJRMs51EeWP64SB222YgA" points="[13, 0, 7, -5]$[109, 0, 103, -5]$[109, 14, 103, 9]$[13, 14, 7, 9]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_TQhUgM6nEeWP64SB222YgA" id="(0.65,0.20754716981132076)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_STENwM6nEeWP64SB222YgA" id="(0.8,0.3018867924528302)"/>
+    </edges>
+    <edges xmi:id="_y-HaYM51EeWP64SB222YgA" type="Transition" element="_y-GzUM51EeWP64SB222YgA" source="_eHE6EM51EeWP64SB222YgA" target="_eHE6EM51EeWP64SB222YgA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_y-IBcM51EeWP64SB222YgA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_y-IBcc51EeWP64SB222YgA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_y-IBcs51EeWP64SB222YgA" x="-1" y="-73"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_y-HaYc51EeWP64SB222YgA" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_y-HaY851EeWP64SB222YgA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_y-HaYs51EeWP64SB222YgA" points="[18, 0, 16, -35]$[110, 0, 108, -35]$[110, 18, 108, -17]$[18, 18, 16, -17]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_aQ0ugM6nEeWP64SB222YgA" id="(0.55,0.8245614035087719)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

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

@@ -54,5 +54,6 @@ testsuite AllTests {
 	SyncJoin, 
 	TransitionWithoutCondition,
 	TriggerGuardExpressions,
+	TriggerExpressionPrecedence,
 	ValuedEvents
 } 

+ 64 - 0
test-plugins/org.yakindu.sct.test.models/tests/expressions/TriggerExpressionPrecedence.sctunit

@@ -0,0 +1,64 @@
+/**
+ * These test cases check the precedence issues that occured with the construction of the trigger condition 
+ * that consists of the trigger and guard part. 
+ * The condition for a local reaction and transition depends on the trigger and guard part.
+ */
+testgroup TriggerExpressionPrecedence for statechart expressions.TriggerExpressionPrecedence {
+	
+	
+	/** If a trigger is specified and not active then the trigger condition should not become true. */
+	test unsatisfiedTriggerAndFGuardFalseOrFalse {
+
+		enter
+		
+		c1 = false
+		c2 = false
+		
+		cycle
+		
+		assert ! e1_transition
+	}
+
+
+	/** If a trigger is specified and not active then the trigger condition should not become true. */
+	test unsatisfiedTriggerAndFGuardTrueOrFalse {
+
+		enter
+		
+		c1 = true
+		c2 = false
+		
+		cycle
+		
+		assert ! e1_transition
+	}
+
+
+	/** If a trigger is specified and not active then the trigger condition should not become true. */
+	test unsatisfiedTriggerAndFGuardFalseOrTrue {
+
+		enter
+		
+		c1 = false
+		c2 = true
+		
+		cycle
+		
+		assert ! e1_transition
+	}
+
+
+	/** If a trigger is specified and not active then the trigger condition should not become true. */
+	test unsatisfiedTriggerAndFGuardTrueOrTrue {
+
+		enter
+		
+		c1 = true
+		c2 = true
+		
+		cycle
+		
+		assert ! e1_transition
+	}
+}
+