浏览代码

Share project "org.yakindu.sct.generator.genmodel.test" into "https://svn.codespot.com/a/eclipselabs.org/yakindu"

Andreas Mülder 13 年之前
父节点
当前提交
3a08079a34

+ 7 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/.classpath

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 28 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.sct.generator.genmodel.test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 8 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,8 @@
+#Fri Apr 20 11:31:31 CEST 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

+ 9 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/META-INF/MANIFEST.MF

@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Yakindu
+Bundle-SymbolicName: org.yakindu.sct.generator.genmodel.test
+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"

+ 4 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/build.properties

@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .

+ 81 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/pom.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.yakindu.sct</groupId>
+		<artifactId>org.yakindu.sct.releng</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+		<relativePath>../org.yakindu.sct.releng/pom.xml</relativePath>
+	</parent>
+	<artifactId>org.yakindu.sct.generator.genmodel.test</artifactId>
+	<groupId>org.yakindu.sct.plugins</groupId>
+	<packaging>eclipse-test-plugin</packaging>
+	
+	<profiles>
+		<profile>
+			<id>CI</id>
+			<!-- Test failures are collected by jenkins and evaluated for instable builds -->
+			<properties>
+				<testFailureIgnore>true</testFailureIgnore>
+			</properties>
+		</profile>
+		<profile>
+			<id>macosx</id>
+			<activation>
+				<os>
+					<family>mac</family>
+				</os>
+			</activation>
+			<properties>
+				<test.vmargs>-Xmx512m -XX:MaxPermSize=256m -XstartOnFirstThread</test.vmargs>
+			</properties>
+		</profile>
+		<profile>
+			<id>other-os</id>
+			<activation>
+				<os>
+					<family>!mac</family>
+				</os>
+			</activation>
+			<properties>
+				<test.vmargs>-Xmx512m -XX:MaxPermSize=256m</test.vmargs>
+			</properties>
+		</profile>
+	</profiles>
+	
+	<properties>
+		<testFailureIgnore>false</testFailureIgnore>
+	</properties>
+	
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+					<testFailureIgnore>${testFailureIgnore}</testFailureIgnore>
+					<argLine>${test.vmargs}</argLine>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-source-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>plugin-source</id>
+						<goals>
+							<goal>plugin-source</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 36 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/src-gen/org/yakindu/sct/generator/genmodel/SGenInjectorProvider.java

@@ -0,0 +1,36 @@
+/*
+* generated by Xtext
+*/
+package org.yakindu.sct.generator.genmodel;
+
+import org.eclipse.xtext.junit.GlobalRegistries;
+import org.eclipse.xtext.junit.GlobalRegistries.GlobalStateMemento;
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.xtext.junit4.IRegistryConfigurator;
+
+import com.google.inject.Injector;
+
+public class SGenInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
+	private GlobalStateMemento globalStateMemento;
+	private Injector injector;
+
+	static {
+		GlobalRegistries.initializeDefaults();
+	}
+	
+	public Injector getInjector() {
+		if (injector == null) {
+			this.injector = new SGenStandaloneSetup().createInjectorAndDoEMFRegistration();
+		}
+		return injector;
+	}
+	
+	public void restoreRegistry() {
+		globalStateMemento.restoreGlobalState();
+	}
+
+	public void setupRegistry() {
+		globalStateMemento = GlobalRegistries.makeCopyOfGlobalState();
+	}
+	
+}

+ 16 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/src-gen/org/yakindu/sct/generator/genmodel/SGenUiInjectorProvider.java

@@ -0,0 +1,16 @@
+/*
+* generated by Xtext
+*/
+package org.yakindu.sct.generator.genmodel;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class SGenUiInjectorProvider implements IInjectorProvider {
+	
+	public Injector getInjector() {
+		return org.yakindu.sct.generator.genmodel.ui.internal.SGenActivator.getInstance().getInjector("org.yakindu.sct.generator.genmodel.SGen");
+	}
+	
+}

+ 15 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/AllTests.java

@@ -0,0 +1,15 @@
+package org.yakindu.sct.generator.genmodel.test;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@RunWith(value = Suite.class)
+@SuiteClasses(value = { SGenJavaValidatorTest.class, SGenParserRuleTest.class })
+public class AllTests {
+
+}

+ 117 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java

@@ -0,0 +1,117 @@
+package org.yakindu.sct.generator.genmodel.test;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.lang.reflect.Method;
+
+import org.eclipse.xtext.junit4.InjectWith;
+import org.eclipse.xtext.junit4.XtextRunner;
+import org.eclipse.xtext.junit4.validation.ValidatorTester;
+import org.eclipse.xtext.validation.Check;
+import org.junit.After;
+import org.junit.Before;
+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;
+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
+ * 
+ */
+@RunWith(XtextRunner.class)
+@InjectWith(SGenInjectorProvider.class)
+public class SGenJavaValidatorTest extends AbstractSGenTest {
+
+	@Inject
+	private SGenJavaValidator validator;
+	@Inject
+	private Injector injector;
+
+	private ValidatorTester<SGenJavaValidator> tester;
+
+	@Before
+	public void setup() {
+		tester = new ValidatorTester<SGenJavaValidator>(validator, injector);
+	}
+
+	@After
+	public void teardown() {
+		tester = null;
+	}
+
+	@Test
+	public void checkContentType() {
+		fail("Implement me");
+	}
+
+	@Test
+	public void checkParameterValueType() {
+		fail("Implement me");
+	}
+
+	@Test
+	public void checkParameterValue() {
+		fail("Implement me");
+	}
+
+	@Test
+	public void checkGeneratorExists() {
+		fail("Implement me");
+	}
+
+	@Test
+	public void checkDuplicateGeneratorEntryFeature() {
+		fail("Implement me");
+	}
+
+	@Test
+	public void checkDuplicateFeatureParameter() {
+		fail("Implement me");
+	}
+
+	@Test
+	public void checkRequiredFeatures() {
+		fail("Implement me");
+	}
+
+	@Test
+	public void checkRequiredParameters() {
+		fail("Implement me");
+	}
+
+	/**
+	 * checks that each @Check method of {@link STextJavaValidator} has a @Test
+	 * method in this class with the same name
+	 */
+	@Test
+	public void testAllChecksHaveTests() throws Exception {
+		Iterable<Method> methods = Lists.newArrayList(SGenJavaValidator.class
+				.getMethods());
+		methods = Iterables.filter(methods, new Predicate<Method>() {
+			public boolean apply(Method input) {
+				return input.getAnnotation(Check.class) != null;
+			}
+		});
+		for (Method checkMethod : methods) {
+			try {
+				getClass().getMethod(checkMethod.getName());
+			} catch (NoSuchMethodException ex) {
+				fail("Missing @Test Annotation for method "
+						+ checkMethod.getName());
+			}
+		}
+	}
+}

+ 28 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenParserRuleTest.java

@@ -0,0 +1,28 @@
+/**
+ * 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.eclipse.xtext.junit4.InjectWith;
+import org.eclipse.xtext.junit4.XtextRunner;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.generator.genmodel.test.util.AbstractSGenTest;
+import org.yakindu.sct.generator.genmodel.test.util.SGenInjectorProvider;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@RunWith(XtextRunner.class)
+@InjectWith(SGenInjectorProvider.class)
+public class SGenParserRuleTest extends AbstractSGenTest {
+	
+}

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

@@ -0,0 +1,79 @@
+/**
+ * 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.util;
+
+import java.io.StringReader;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.XtextFactory;
+import org.eclipse.xtext.diagnostics.Severity;
+import org.eclipse.xtext.linking.ILinker;
+import org.eclipse.xtext.nodemodel.INode;
+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;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public abstract class AbstractSGenTest {
+
+	@Inject
+	private IParser parser;
+	@Inject
+	private ILinker linker;
+	@Inject
+	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();
+		parserRule.setName(ruleName);
+		IParseResult result = parser.parse(parserRule, new StringReader(
+				expression));
+		EObject rootASTElement = result.getRootASTElement();
+		resource.getContents().add(rootASTElement);
+		ListBasedDiagnosticConsumer diagnosticsConsumer = new ListBasedDiagnosticConsumer();
+		linker.linkModel(result.getRootASTElement(), diagnosticsConsumer);
+		if (result.hasSyntaxErrors()) {
+			StringBuilder errorMessages = new StringBuilder();
+			Iterable<INode> syntaxErrors = result.getSyntaxErrors();
+			for (INode iNode : syntaxErrors) {
+				errorMessages.append(iNode.getSyntaxErrorMessage());
+				errorMessages.append("\n");
+			}
+			throw new RuntimeException(
+					"Could not parse expression, syntax errors: "
+							+ errorMessages);
+		}
+		if (diagnosticsConsumer.hasConsumedDiagnostics(Severity.ERROR)) {
+			throw new RuntimeException("Error during linking: "
+					+ diagnosticsConsumer.getResult(Severity.ERROR));
+		}
+		return rootASTElement;
+	}
+
+}

+ 30 - 0
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/util/SGenInjectorProvider.java

@@ -0,0 +1,30 @@
+/**
+ * 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.util;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.yakindu.sct.generator.genmodel.SGenRuntimeModule;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class SGenInjectorProvider implements IInjectorProvider {
+
+	public Injector getInjector() {
+		return Guice.createInjector(new SGenRuntimeModule());
+	}
+
+}