فهرست منبع

Added help integration test

Andreas Mülder 14 سال پیش
والد
کامیت
fa78468683

+ 2 - 1
test-plugins/org.yakindu.sct.generator.genmodel.test/META-INF/MANIFEST.MF

@@ -6,4 +6,5 @@ Bundle-Version: 1.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Require-Bundle: org.eclipse.xtext.junit4;bundle-version="2.0.1",
  org.junit;bundle-version="4.8.2",
- org.yakindu.sct.generator.genmodel;bundle-version="1.0.0"
+ org.yakindu.sct.generator.genmodel;bundle-version="1.0.0",
+ org.yakindu.sct.generator.genmodel.ui;bundle-version="1.0.0"

+ 12 - 1
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/AllTests.java

@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2012 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.genmodel.test;
 
 import org.junit.runner.RunWith;
@@ -9,7 +19,8 @@ import org.junit.runners.Suite.SuiteClasses;
  * 
  */
 @RunWith(value = Suite.class)
-@SuiteClasses(value = { SGenJavaValidatorTest.class, SGenParserRuleTest.class })
+@SuiteClasses(value = { SGenJavaValidatorTest.class, SGenParserRuleTest.class,
+		HelpIntegrationTest.class })
 public class AllTests {
 
 }

+ 109 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/HelpIntegrationTest.java

@@ -0,0 +1,109 @@
+/**
+ * Copyright (c) 2012 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.genmodel.test;
+
+import static junit.framework.Assert.fail;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.junit4.InjectWith;
+import org.eclipse.xtext.junit4.XtextRunner;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.generator.core.extensions.LibraryExtensions;
+import org.yakindu.sct.generator.core.extensions.LibraryExtensions.LibraryDescriptor;
+import org.yakindu.sct.generator.genmodel.resource.FeatureResourceDescription;
+import org.yakindu.sct.generator.genmodel.test.util.SGenInjectorProvider;
+import org.yakindu.sct.generator.genmodel.ui.help.HelpSystemDocumentationProvider;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+/**
+ * Test that checks if all Generator Features have a corresponding documentation
+ * section in the user guide.
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@RunWith(XtextRunner.class)
+@InjectWith(SGenInjectorProvider.class)
+public class HelpIntegrationTest {
+
+	private static final String YAKINDU_JAVA = "yakindu::java";
+	private static final String YAKINDU_C = "yakindu::c";
+	private static final String YAKINDU_CPP = "yakindu::cpp";
+	@Inject
+	private HelpSystemDocumentationProvider documentationProvider;
+	@Inject
+	private XtextResourceSet resourceSet;
+	@Inject
+	private Injector injector;
+
+	@Test
+	public void checkJavaGeneratorFeatureDocumentation() {
+		List<String> missingDocumentation = getFeaturesWithoutDocumentation(YAKINDU_JAVA);
+		if (missingDocumentation.size() > 0) {
+			fail("Missing generator feature(s) documentation for generator "
+					+ YAKINDU_JAVA + ": " + missingDocumentation);
+		}
+	}
+
+	@Test
+	public void checkCGeneratorFeatureDocumentation() {
+		List<String> missingDocumentation = getFeaturesWithoutDocumentation(YAKINDU_C);
+		if (missingDocumentation.size() > 0) {
+			fail("Missing generator feature(s) documentation for generator "
+					+ YAKINDU_C + ": " + missingDocumentation);
+		}
+	}
+
+	@Test
+	public void checkCppGeneratorFeatureDocumentation() {
+		List<String> missingDocumentation = getFeaturesWithoutDocumentation(YAKINDU_CPP);
+		if (missingDocumentation.size() > 0) {
+			fail("Missing generator feature(s) documentation for generator "
+					+ YAKINDU_CPP + ": " + missingDocumentation);
+		}
+
+	}
+
+	private List<String> getFeaturesWithoutDocumentation(String generatorId) {
+		Iterable<LibraryDescriptor> libraryDescriptor = LibraryExtensions
+				.getLibraryDescriptor(generatorId);
+		Iterable<IEObjectDescription> allElements = Lists.newArrayList();
+		for (LibraryDescriptor desc : libraryDescriptor) {
+			Resource library = resourceSet.getResource(desc.getURI(), true);
+			FeatureResourceDescription description = new FeatureResourceDescription(
+					library);
+			injector.injectMembers(description);
+			allElements = Iterables.concat(allElements,
+					description.getExportedObjects());
+		}
+		List<String> missingDocumentation = Lists.newArrayList();
+		for (IEObjectDescription desc : allElements) {
+			String documentation = documentationProvider.getDocumentation(desc
+					.getEObjectOrProxy());
+			if (documentation == null
+					|| HelpSystemDocumentationProvider.EMPTY_DOCUMENTATION
+							.equals(documentation)) {
+				missingDocumentation.add(desc.getName().toString());
+			}
+		}
+		return missingDocumentation;
+	}
+
+}

+ 11 - 6
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java

@@ -1,6 +1,16 @@
+/**
+ * Copyright (c) 2012 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.genmodel.test;
 
-import static org.junit.Assert.assertNotNull;
+import static junit.framework.Assert.fail;
 
 import java.lang.reflect.Method;
 
@@ -15,17 +25,12 @@ import org.junit.runner.RunWith;
 import org.yakindu.sct.generator.genmodel.test.util.AbstractSGenTest;
 import org.yakindu.sct.generator.genmodel.test.util.SGenInjectorProvider;
 import org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator;
-import org.yakindu.sct.model.sgen.FeatureConfiguration;
-import org.yakindu.sct.model.sgen.FeatureParameterValue;
-import org.yakindu.sct.model.sgen.GeneratorEntry;
-import org.yakindu.sct.model.sgen.GeneratorModel;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
-import static junit.framework.Assert.*;
 
 /**
  * @author andreas muelder - Initial contribution and API

+ 41 - 1
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenParserRuleTest.java

@@ -12,6 +12,7 @@ package org.yakindu.sct.generator.genmodel.test;
 
 import org.eclipse.xtext.junit4.InjectWith;
 import org.eclipse.xtext.junit4.XtextRunner;
+import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.yakindu.sct.generator.genmodel.test.util.AbstractSGenTest;
 import org.yakindu.sct.generator.genmodel.test.util.SGenInjectorProvider;
@@ -24,5 +25,44 @@ import org.yakindu.sct.generator.genmodel.test.util.SGenInjectorProvider;
 @RunWith(XtextRunner.class)
 @InjectWith(SGenInjectorProvider.class)
 public class SGenParserRuleTest extends AbstractSGenTest {
-	
+
+	/**
+	 * GeneratorModel returns gen::GeneratorModel: 'GeneratorModel' 'for'
+	 * generatorId=QID '{' (entries+=GeneratorEntry)+ '}';
+	 */
+	@Test
+	public void testGeneratorModel() {
+
+	}
+
+	/**
+	 * GeneratorEntry returns gen::GeneratorEntry: contentType=ID
+	 * elementRef=[ecore::EObject|QID] '{' (features+=FeatureConfiguration)*
+	 * '}';
+	 */
+	@Test
+	public void testGeneratorEntry() {
+
+	}
+
+	/**
+	 * FeatureConfiguration returns gen::FeatureConfiguration:
+	 * {gen::FeatureConfiguration} 'feature' type=[gen::FeatureType] '{'
+	 * (parameterValues+=FeatureParameterValue)+ '}';
+	 */
+	@Test
+	public void testFeatureConfiguration() {
+
+	}
+
+	/**
+	 * FeatureParameterValue returns gen::FeatureParameterValue:
+	 * {gen::FeatureParameterValue} parameter=[gen::FeatureParameter] '='
+	 * expression=Literal;
+	 */
+	@Test
+	public void testFeatureParameterValue() {
+
+	}
+
 }

+ 0 - 6
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/util/AbstractSGenTest.java

@@ -23,7 +23,6 @@ import org.eclipse.xtext.parser.IParseResult;
 import org.eclipse.xtext.parser.IParser;
 import org.eclipse.xtext.resource.XtextResource;
 import org.eclipse.xtext.resource.impl.ListBasedDiagnosticConsumer;
-import org.yakindu.sct.model.sgraph.Scope;
 
 import com.google.inject.Inject;
 import com.google.inject.Provider;
@@ -43,11 +42,6 @@ public abstract class AbstractSGenTest {
 	private Provider<XtextResource> resourceProvider;
 
 	protected EObject parseExpression(String expression, String ruleName) {
-		return parseExpression(expression, null, ruleName);
-	}
-
-	protected EObject parseExpression(String expression, Scope context,
-			String ruleName) {
 		XtextResource resource = resourceProvider.get();
 		resource.setURI(URI.createPlatformPluginURI("path", true));
 		ParserRule parserRule = XtextFactory.eINSTANCE.createParserRule();