Explorar o código

added test cases for orthogonalTargetStates check

Axel Terfloth %!s(int64=10) %!d(string=hai) anos
pai
achega
922546ff4c

+ 36 - 0
test-plugins/org.yakindu.sct.model.sgraph.test/src/org/yakindu/sct/model/sgraph/test/SGraphJavaValidationTest.java

@@ -653,6 +653,42 @@ public class SGraphJavaValidationTest {
 		assertError(diagnostics, ISSUE_SYNCHRONIZATION_SOURCE_STATES_NOT_ORTHOGONAL);
 	}
 
+
+	
+	@Test public void orthogonalTargetStates() {
+		statechart = loadStatechart("OrthogonalRegion01.sct");
+		
+		State b = firstNamed(EcoreUtil2.eAllOfType(statechart, State.class), "B");
+		Synchronization sync = (Synchronization) b.getOutgoingTransitions().get(0).getTarget();
+		
+		assertTrue(validator.validate(sync, diagnostics, new HashMap<Object, Object>()));
+		assertIssueCount(diagnostics, 0);
+	}
+		
+	@Test public void orthogonalTargetStates_StateInParentStateRegion() {
+		statechart = loadStatechart("NotOrthogonalRegion01.sct");
+
+		State b = firstNamed(EcoreUtil2.eAllOfType(statechart, State.class), "B");
+		Synchronization sync = (Synchronization) b.getOutgoingTransitions().get(0).getTarget();
+		
+		assertFalse(validator.validate(sync, diagnostics, new HashMap<Object, Object>()));
+		assertIssueCount(diagnostics, 1);
+		assertError(diagnostics, ISSUE_SYNCHRONIZATION_TARGET_STATES_NOT_ORTHOGONAL);
+	}
+
+	@Test public void orthogonalTargetStates_StateInTopLevelRegion() {
+		statechart = loadStatechart("NotOrthogonalRegion02.sct");
+
+		State b = firstNamed(EcoreUtil2.eAllOfType(statechart, State.class), "B");
+		Synchronization sync = (Synchronization) b.getOutgoingTransitions().get(0).getTarget();
+		
+		assertFalse(validator.validate(sync, diagnostics, new HashMap<Object, Object>()));
+		assertIssueCount(diagnostics, 1);
+		assertError(diagnostics, ISSUE_SYNCHRONIZATION_TARGET_STATES_NOT_ORTHOGONAL);
+	}
+
+	
+	
 	
 	
 	@Test public void orthogonalState_2() {