Browse Source

Merge branch 'master' into issue/1395_write_sctunit_documentation

Rainer Klute 8 years ago
parent
commit
d5b9fd7506

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -114,9 +114,6 @@ import com.google.inject.name.Named;
 @ComposedChecks(validators = { SGraphJavaValidator.class, SCTResourceValidator.class, ExpressionsJavaValidator.class })
 public class STextJavaValidator extends AbstractSTextJavaValidator implements STextValidationMessages {
 
-	public static final String IMPORT_NOT_RESOLVED_MSG = "Import '%s' cannot be resolved.";
-	public static final String IMPORT_NOT_RESOLVED_CODE = "ImportNotResolved";
-
 	@Inject
 	private ITypeSystemInferrer typeInferrer;
 	@Inject

+ 2 - 0
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextValidationMessages.java

@@ -60,5 +60,7 @@ public interface STextValidationMessages {
 	public static final String VAR_ARGS_LAST_MSG = "The variable argument type must be the last argument.";
 	public static final String WRONG_NUMBER_OF_ARGUMENTS_MSG = "Wrong number of arguments, expected %s .";
 	public static final String WRONG_NUMBER_OF_ARGUMENTS_CODE = "WrongNrOfArgs";
+	public static final String IMPORT_NOT_RESOLVED_MSG = "Import '%s' cannot be resolved.";
+	public static final String IMPORT_NOT_RESOLVED_CODE = "ImportNotResolved";
 
 }

+ 2 - 1
test-plugins/org.yakindu.sct.model.stext.test/META-INF/MANIFEST.MF

@@ -24,7 +24,8 @@ Require-Bundle: org.eclipse.xtext.junit4,
  org.yakindu.sct.domain,
  org.yakindu.sct.model.stext.lib
 Export-Package: org.yakindu.sct.model.stext.test,
- org.yakindu.sct.model.stext.test.util
+ org.yakindu.sct.model.stext.test.util,
+ org.yakindu.sct.model.stext.test.validation
 Import-Package: org.junit.runner;version="4.5.0",
  org.junit.runner.manipulation;version="4.5.0",
  org.junit.runner.notification;version="4.5.0",

+ 70 - 0
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/util/TestCompletenessAssertions.java

@@ -0,0 +1,70 @@
+
+/**
+ * Copyright (c) 2017 itemis AG 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:
+ * 	Johannes Dicks - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.stext.test.util;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.lang.reflect.Method;
+
+import org.eclipse.xtext.validation.Check;
+import org.junit.Test;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * 
+ * @author Johannes Dicks
+ *
+ */
+public class TestCompletenessAssertions {
+
+	public void assertAllChecksHaveTests(Class<?> validatorClass, Class<?> validatorTestClass) {
+		Iterable<Method> methods = Lists.newArrayList(validatorClass.getDeclaredMethods());
+		methods = Iterables.filter(methods, new Predicate<Method>() {
+			public boolean apply(Method input) {
+				return input.getAnnotation(Check.class) != null;
+			}
+		});
+		for (Method checkMethod : methods) {
+			Method testMethod = null;
+			try {
+				testMethod = validatorTestClass.getMethod(checkMethod.getName());
+			} catch (Exception e) {
+				fail("Cannot find test method for " + getSignature(checkMethod, false));
+			}
+			if (testMethod != null)
+				assertNotNull("Missing @Test Annotation for method " + getSignature(checkMethod, false),
+						testMethod.getAnnotation(Test.class));
+		}
+	}
+
+	protected String getSignature(Method method, boolean longTypeNames) {
+		return method.getName() + "(" + parametersAsString(method, longTypeNames) + ")";
+	}
+
+	protected String parametersAsString(Method method, boolean longTypeNames) {
+		Class<?>[] parameterTypes = method.getParameterTypes();
+		if (parameterTypes.length == 0)
+			return "";
+		StringBuilder paramString = new StringBuilder();
+		paramString.append(longTypeNames ? parameterTypes[0].getName() : parameterTypes[0].getSimpleName());
+		for (int i = 1; i < parameterTypes.length; i++) {
+			paramString.append(",")
+					.append(longTypeNames ? parameterTypes[i].getName() : parameterTypes[i].getSimpleName());
+		}
+		return paramString.toString();
+	}
+}

+ 6 - 17
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/validation/STextJavaValidatorTest.java

@@ -14,11 +14,9 @@ package org.yakindu.sct.model.stext.test.validation;
 import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.errorCode;
 import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.errorMsg;
 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.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Iterator;
 
@@ -28,7 +26,6 @@ import org.eclipse.emf.ecore.util.Diagnostician;
 import org.eclipse.xtext.junit4.InjectWith;
 import org.eclipse.xtext.junit4.XtextRunner;
 import org.eclipse.xtext.junit4.validation.AssertableDiagnostics;
-import org.eclipse.xtext.validation.Check;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -49,14 +46,13 @@ import org.yakindu.sct.model.stext.stext.ReactionTrigger;
 import org.yakindu.sct.model.stext.stext.StatechartSpecification;
 import org.yakindu.sct.model.stext.stext.TransitionSpecification;
 import org.yakindu.sct.model.stext.stext.impl.StextFactoryImpl;
+import org.yakindu.sct.model.stext.test.util.TestCompletenessAssertions;
 import org.yakindu.sct.model.stext.test.util.STextInjectorProvider;
 import org.yakindu.sct.model.stext.validation.STextJavaValidator;
 import org.yakindu.sct.model.stext.validation.STextValidationMessages;
 import org.yakindu.sct.test.models.AbstractTestModelsUtil;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
+import com.google.inject.Inject;
 
 /**
  * @author andreas muelder - Initial contribution and API
@@ -66,6 +62,9 @@ import com.google.common.collect.Lists;
 @InjectWith(STextInjectorProvider.class)
 public class STextJavaValidatorTest extends AbstractSTextValidationTest implements STextValidationMessages {
 
+	@Inject
+	TestCompletenessAssertions checkAvailable;
+
 	/**
 	 * @see STextJavaValidator#checkVariableDefinition(org.yakindu.sct.model.stext.stext.VariableDefinition)
 	 */
@@ -513,17 +512,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 	 */
 	@Test
 	public void testAllChecksHaveTests() throws Exception {
-		Iterable<Method> methods = Lists.newArrayList(STextJavaValidator.class.getDeclaredMethods());
-		methods = Iterables.filter(methods, new Predicate<Method>() {
-			public boolean apply(Method input) {
-				return input.getAnnotation(Check.class) != null;
-			}
-		});
-		for (Method checkMethod : methods) {
-			Method testMethod = getClass().getMethod(checkMethod.getName());
-			assertNotNull("Missing @Test Annotation for method " + checkMethod.getName(),
-					testMethod.getAnnotation(Test.class));
-		}
+		checkAvailable.assertAllChecksHaveTests(STextJavaValidator.class, this.getClass());
 	}
 
 	@Test