瀏覽代碼

Move utility methods to super class

René Beckmann 7 年之前
父節點
當前提交
9dd14301ec

+ 24 - 0
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/validation/AbstractSTextValidationTest.java

@@ -2,9 +2,11 @@ package org.yakindu.sct.model.stext.test.validation;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.yakindu.sct.test.models.AbstractTestModelsUtil.VALIDATION_TESTMODEL_DIR;
 
 import java.util.HashMap;
+import java.util.Iterator;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
 import org.eclipse.emf.common.util.Diagnostic;
@@ -103,4 +105,26 @@ public abstract class AbstractSTextValidationTest extends AbstractSTextTest {
 						+ modelName);
 	}
 
+	protected void doValidateAllContents(Class<? extends EObject> clazz) {
+		Iterator<EObject> iter = statechart.eAllContents();
+		while (iter.hasNext()) {
+			EObject element = iter.next();
+			if (clazz.isInstance(element)) {
+				validator.validate(element, diagnostics, new HashMap<>());
+			}
+		}
+	}
+
+	protected void assertAllTransitionsAreValid(Class<? extends EObject> clazz) {
+		Iterator<EObject> iter;
+		iter = statechart.eAllContents();
+	
+		while (iter.hasNext()) {
+			EObject element = iter.next();
+			if (clazz.isInstance(element)) {
+				assertTrue(validator.validate(element, diagnostics, new HashMap<>()));
+			}
+		}
+	}
+
 }

+ 76 - 120
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/validation/STextJavaValidatorTest.java

@@ -4,10 +4,10 @@
  * 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:
  * 	itemis AG - initial API and implementation
- * 
+ *
  */
 package org.yakindu.sct.model.stext.test.validation;
 
@@ -15,7 +15,6 @@ import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.errorCod
 import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.errorMsg;
 import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.warningMsg;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 import static org.yakindu.base.expressions.validation.ExpressionsJavaValidator.ERROR_ASSIGNMENT_TO_CONST_MSG;
 import static org.yakindu.base.expressions.validation.ExpressionsJavaValidator.ERROR_LEFT_HAND_ASSIGNMENT_MSG;
 import static org.yakindu.base.expressions.validation.ExpressionsJavaValidator.ERROR_OPTIONAL_MUST_BE_LAST_CODE;
@@ -68,7 +67,7 @@ import com.google.inject.Inject;
 
 /**
  * @author andreas muelder - Initial contribution and API
- * 
+ *
  */
 @RunWith(XtextRunner.class)
 @InjectWith(STextInjectorProvider.class)
@@ -88,7 +87,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 	}
 
 	/**
-	 *  
+	 * 
 	 * @see STextJavaValidator#checkAssignmentExpression(org.yakindu.sct.model.stext.stext.AssignmentExpression)
 	 */
 	@Test
@@ -223,7 +222,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		validationResult.assertError(ERROR_VAR_ARGS_LAST_CODE);
 
 	}
-	
+
 	@Test
 	public void checkOperationNamedParameters() {
 		String scope = "internal: operation myOperation(param1 : integer, param2 : boolean)";
@@ -240,37 +239,39 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		model = super.parseExpression("myOperation(param1 = 5, true)", Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
 		validationResult.assertOK();
-		model = super.parseExpression("myOperation(param1 = 5, param2 = true)", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("myOperation(param1 = 5, param2 = true)", Expression.class.getSimpleName(),
+				scope);
 		validationResult = tester.validate(model);
 		validationResult.assertOK();
-		model = super.parseExpression("myOperation(param2 = true, param1 = 5)", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("myOperation(param2 = true, param1 = 5)", Expression.class.getSimpleName(),
+				scope);
 		validationResult = tester.validate(model);
 		validationResult.assertOK();
 
 		model = super.parseExpression("myOperation(param2 = true)", Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
 		validationResult.assertError(ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE);
-		
+
 		model = super.parseExpression("myOperation(param1 = 5)", Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
 		validationResult.assertError(ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE);
 
 	}
-	
+
 	@Inject
 	protected TypesTestFactory typesTestFactory = TypesTestFactory.INSTANCE;
-	
+
 	@Test
 	public void checkOptionalArgumentsAreLast() {
 		Scope scope = (Scope) super.parseExpression("internal: ", InternalScope.class.getSimpleName());
 		OperationDefinition op = StextTestFactory._createOperation("op", scope);
 		tester.validate(scope).assertOK();
-		
+
 		// optional parameter last => no error
 		op.getParameters().add(typesTestFactory.createParameter("p1", ITypeSystem.INTEGER, false));
 		op.getParameters().add(typesTestFactory.createParameter("p2", ITypeSystem.INTEGER, true));
 		tester.validate(op).assertOK();
-		
+
 		// optional parameter not last anymore => error
 		op.getParameters().add(typesTestFactory.createParameter("p3", ITypeSystem.INTEGER, false));
 		tester.validate(op).assertError(ERROR_OPTIONAL_MUST_BE_LAST_CODE);
@@ -284,8 +285,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		String scope = "@CycleBased";
 		EObject model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(model);
-		validationResult.assertError(STextJavaValidator.ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE);
-		;
+		validationResult.assertError(STextJavaValidator.ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE);;
 
 		scope = "@EventDriven";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
@@ -300,21 +300,21 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 	public void checkAnnotationTarget() {
 		// TODO: Implement me when default annotation for target is available
 	}
-	
+
 	@Test
 	public void checkAnnotations() {
 		String scope;
 		StatechartSpecification model;
 		AssertableDiagnostics validationResult;
-		
+
 		statechart.setName("Annotated");
-		
+
 		scope = "@EventDriven";
 		model = (StatechartSpecification) super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
 		statechart.getAnnotations().addAll(model.getAnnotations());
 		validationResult = tester.validate(statechart);
 		validationResult.assertOK();
-		
+
 		scope = "@CycleBased(200)";
 		model = (StatechartSpecification) super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
 		statechart.getAnnotations().clear();
@@ -322,8 +322,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		validationResult = tester.validate(statechart);
 		validationResult.assertOK();
 
-		scope = "@CycleBased(200)\n"
-				+ "@EventDriven";
+		scope = "@CycleBased(200)\n" + "@EventDriven";
 		model = (StatechartSpecification) super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
 		statechart.getAnnotations().clear();
 		statechart.getAnnotations().addAll(model.getAnnotations());
@@ -336,16 +335,15 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		statechart.getAnnotations().addAll(model.getAnnotations());
 		validationResult = tester.validate(statechart);
 		validationResult.assertOK();
-		
+
 		scope = "@ChildFirstExecution";
 		model = (StatechartSpecification) super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
 		statechart.getAnnotations().clear();
 		statechart.getAnnotations().addAll(model.getAnnotations());
 		validationResult = tester.validate(statechart);
 		validationResult.assertOK();
-		
-		scope = "@ParentFirstExecution\n"
-				+ "@ChildFirstExecution";
+
+		scope = "@ParentFirstExecution\n" + "@ChildFirstExecution";
 		model = (StatechartSpecification) super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
 		statechart.getAnnotations().clear();
 		statechart.getAnnotations().addAll(model.getAnnotations());
@@ -403,7 +401,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 	}
 
 	/**
-	 * 
+	 *
 	 * @see STextJavaValidator#checkReactionTrigger(org.yakindu.sct.model.stext.stext.ReactionTrigger)
 	 */
 	@Test
@@ -454,7 +452,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		validationResult.assertAll(errorMsg("Trigger 'x' is no event."), errorMsg("Trigger 'y' is no event."));
 
 	}
-	
+
 	@Test
 	public void checkRaisingExpressionEvent() {
 
@@ -463,13 +461,11 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		EObject model = super.parseExpression("raise e", ReactionEffect.class.getSimpleName(), scope);
 		AssertableDiagnostics validationResult = tester.validate(model);
 		validationResult.assertOK();
-		
+
 		model = super.parseExpression("raise y", ReactionEffect.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
 		validationResult.assertAll(errorMsg("'y' is not an event."));
 	}
-	
-	
 
 	/**
 	 * @see STextJavaValidator#checkReactionEffectActions(org.yakindu.sct.model.stext.stext.ReactionEffect)
@@ -619,7 +615,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Entry) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics, new HashMap<>());
 			}
 		}
 
@@ -643,11 +639,10 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		assertIssueCount(diagnostics, 1);
 		assertWarning(diagnostics, TOP_LEVEL_REGION_ENTRY_HAVE_TO_BE_A_DEFAULT_ENTRY);
 	}
-	
+
 	@Test
 	public void checkTopLevelRegionHasEntry() {
-		statechart = AbstractTestModelsUtil
-				.loadStatechart(VALIDATION_TESTMODEL_DIR + "TopLevelRegionNoEntryPoint.sct");
+		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "TopLevelRegionNoEntryPoint.sct");
 		doValidateAllContents(Region.class);
 		assertIssueCount(diagnostics, 1);
 		assertError(diagnostics, REGION_UNBOUND_DEFAULT_ENTRY_POINT);
@@ -669,28 +664,6 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		assertError(diagnostics, EXIT_DEFAULT_UNUSED);
 	}
 
-	protected void doValidateAllContents(Class<? extends EObject> clazz) {
-		Iterator<EObject> iter = statechart.eAllContents();
-		while (iter.hasNext()) {
-			EObject element = iter.next();
-			if (clazz.isInstance(element)) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
-			}
-		}
-	}
-
-	protected void assertAllTransitionsAreValid(Class<? extends EObject> clazz) {
-		Iterator<EObject> iter;
-		iter = statechart.eAllContents();
-
-		while (iter.hasNext()) {
-			EObject element = iter.next();
-			if (clazz.isInstance(element)) {
-				assertTrue(validator.validate(element, diagnostics, new HashMap<Object, Object>()));
-			}
-		}
-	}
-
 	@Test
 	public void checkTransitionPropertySpec() {
 		// Test source state isn't composite
@@ -742,10 +715,10 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 			EObject element = iter.next();
 			if (element instanceof Transition) {
 				((Transition) element).setTrigger(trigger);
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics, new HashMap<>());
 			}
 			if (element instanceof State) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics, new HashMap<>());
 			}
 		}
 
@@ -761,10 +734,10 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 			EObject element = iter.next();
 			if (element instanceof Transition) {
 				((Transition) element).setTrigger(trigger);
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics, new HashMap<>());
 			}
 			if (element instanceof State) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics, new HashMap<>());
 			}
 		}
 		assertIssueCount(diagnostics, 4);
@@ -778,7 +751,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Transition) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics, new HashMap<>());
 			}
 		}
 
@@ -822,70 +795,68 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		assertIssueCount(diagnostics, 3);
 		assertWarning(diagnostics, INTERNAL_DECLARATION_UNUSED);
 	}
-	
+
 	@Test
 	public void transitionsWithNoTrigger() {
 	}
-	
+
 	@Test
 	public void testOptionalParameter() {
 		EObject model;
 		String rule = Expression.class.getSimpleName();
 		AssertableDiagnostics result;
-		
+
 		model = parseExpression("optOp1()", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp1(3)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp1(true)", rule);
 		result = tester.validate(model);
 		result.assertError(ITypeSystemInferrer.NOT_COMPATIBLE_CODE);
 	}
-	
+
 	@Test
 	public void testMultipleOptionalParameters() {
 		EObject model;
 		String rule = Expression.class.getSimpleName();
 		AssertableDiagnostics result;
-		
+
 		model = parseExpression("optOp2()", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp2(3)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp2(3, 4)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp2(true)", rule);
 		result = tester.validate(model);
 		result.assertError(ITypeSystemInferrer.NOT_COMPATIBLE_CODE);
 
 		model = parseExpression("optOp2(true, 3, 4)", rule);
 		result = tester.validate(model);
-		result.assertAll(
-				errorCode(ITypeSystemInferrer.NOT_COMPATIBLE_CODE),
-				errorCode(ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE)
-				);
+		result.assertAll(errorCode(ITypeSystemInferrer.NOT_COMPATIBLE_CODE),
+				errorCode(ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE));
 	}
-	
+
 	@Test
 	public void testMixedOptionalParameters() {
 		EObject model;
 		String rule = Expression.class.getSimpleName();
 		AssertableDiagnostics result;
-		
+
 		model = parseExpression("optOp3(3)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp3(3, 4)", rule);
 		result = tester.validate(model);
 		result.assertOK();
@@ -893,108 +864,93 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		model = parseExpression("optOp3(3, 4, true)", rule);
 		result = tester.validate(model);
 		result.assertError(ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE);
-		
+
 		model = parseExpression("optOp3()", rule);
 		result = tester.validate(model);
 		result.assertError(ERROR_WRONG_NUMBER_OF_ARGUMENTS_CODE);
-		
+
 		model = parseExpression("optOp3(3, true)", rule);
 		result = tester.validate(model);
 		result.assertError(ITypeSystemInferrer.NOT_COMPATIBLE_CODE);
 	}
-	
+
 	@Test
 	@Ignore("Why should anyone do that anyways")
 	public void testMixedOptionalAndVarArgsParameters() {
 		EObject model;
 		String rule = Expression.class.getSimpleName();
 		AssertableDiagnostics result;
-		
+
 		model = parseExpression("optOp4(3)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp4(3, 4)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp4(3, 4, 5, 6)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp4(3, 4, true)", rule);
 		result = tester.validate(model);
 		result.assertOK();
-		
+
 		model = parseExpression("optOp4(true)", rule);
 		result = tester.validate(model);
 		result.assertError(ITypeSystemInferrer.NOT_COMPATIBLE_CODE);
 	}
-	
+
 	@Test
 	public void testDuplicateNames() {
 		EObject model;
 		AssertableDiagnostics result;
 		String scope;
-		
-		
+
 		scope = "interface: var x: integer var x: integer";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
-		
+
 		result = tester.validate(model);
 		result.assertAll(errorMsg("Duplicate"), errorMsg("Duplicate"));
-		
-		
+
 		scope = "interface: var x: integer internal: var x: integer";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
-		
+
 		result = tester.validate(model);
 		result.assertAll(errorMsg("Duplicate"), errorMsg("Duplicate"));
-		
-		
+
 		scope = "interface: var x: integer interface d: var x: integer";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
-		
+
 		result = tester.validate(model);
 		result.assertOK();
-		
-		
+
 		scope = "interface: var x: integer interface x: var d: integer";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
-		
+
 		result = tester.validate(model);
 		result.assertAll(errorMsg("Duplicate"), errorMsg("Duplicate"));
-		
-		
+
 		scope = "interface: var x: integer var X: integer";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
-		
+
 		result = tester.validate(model);
 		result.assertAll(warningMsg("Duplicate"), warningMsg("Duplicate"));
-		
+
 		scope = "interface: var x: integer interface X: var d: integer";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
-		
+
 		result = tester.validate(model);
 		result.assertOK();
-		
-		
-		scope = "interface: " + 
-				"var X: integer " + 
-				"var x: integer " + 
-				"" + 
-				"var d: integer " + 
-				" " + 
-				"interface D: " + 
-				"var x: integer " + 
-				" " + 
-				"interface x: " + 
-				"var i: integer";
+
+		scope = "interface: " + "var X: integer " + "var x: integer " + "" + "var d: integer " + " " + "interface D: "
+				+ "var x: integer " + " " + "interface x: " + "var i: integer";
 		model = super.parseExpression(scope, StatechartSpecification.class.getSimpleName());
-		
+
 		result = tester.validate(model);
-		result.assertAll(warningMsg("Duplicate"), warningMsg("Duplicate"), errorMsg("Duplicate"), errorMsg("Duplicate"));
+		result.assertAll(warningMsg("Duplicate"), warningMsg("Duplicate"), errorMsg("Duplicate"),
+				errorMsg("Duplicate"));
 	}
-	
 
 }