فهرست منبع

Refactored Simulation core

Andreas Mülder 12 سال پیش
والد
کامیت
a281f4845d

+ 3 - 2
test-plugins/org.yakindu.sct.model.sexec.interpreter.test/META-INF/MANIFEST.MF

@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Interpreter Test Plugin
-Bundle-SymbolicName: org.yakindu.sct.model.sexec.interpreter.test
+Bundle-SymbolicName: org.yakindu.sct.simulation.core.sexec.test
 Bundle-Version: 2.1.2.qualifier
 Bundle-Vendor: yakindu.org
 Require-Bundle: org.eclipse.core.runtime,
@@ -16,6 +16,7 @@ Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.gmf.runtime.emf.core;bundle-version="1.4.1",
  org.eclipse.xtext.junit4;bundle-version="2.0.1",
  org.yakindu.sct.model.stext.test;bundle-version="1.0.0",
- org.yakindu.sct.test.models;bundle-version="1.0.0"
+ org.yakindu.sct.test.models;bundle-version="1.0.0",
+ org.yakindu.sct.simulation.core.sexec;bundle-version="1.0.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy

+ 4 - 6
test-plugins/org.yakindu.sct.model.sexec.interpreter.test/src/org/yakindu/sct/model/sexec/interpreter/test/CoreFunctionTest.java

@@ -10,11 +10,9 @@
  */
 package org.yakindu.sct.model.sexec.interpreter.test;
 
-import static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.impl.EcoreFactoryImpl;
@@ -22,7 +20,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.yakindu.sct.model.sexec.interpreter.stext.CoreFunction;
+import org.yakindu.sct.simulation.core.sexec.interpreter.CoreFunction;
 
 /**
  * 

+ 37 - 22
test-plugins/org.yakindu.sct.model.sexec.interpreter.test/src/org/yakindu/sct/model/sexec/interpreter/test/STextInterpreterTest.java

@@ -19,17 +19,18 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.yakindu.base.types.ITypeSystem.InferredType;
-import org.yakindu.sct.model.sexec.interpreter.stext.StextStatementInterpreter;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.Statement;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.test.util.AbstractSTextTest;
 import org.yakindu.sct.model.stext.test.util.STextInjectorProvider;
 import org.yakindu.sct.model.stext.types.ISTextTypeSystem;
-import org.yakindu.sct.simulation.core.runtime.IExecutionContext;
-import org.yakindu.sct.simulation.core.runtime.impl.ExecutionContextImpl;
-import org.yakindu.sct.simulation.core.runtime.impl.ExecutionEvent;
-import org.yakindu.sct.simulation.core.runtime.impl.ExecutionVariable;
+import org.yakindu.sct.simulation.core.sexec.interpreter.IStatementInterpreter;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
+import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl;
+import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl;
 
 import com.google.inject.Inject;
 
@@ -43,9 +44,9 @@ import com.google.inject.Inject;
 public class STextInterpreterTest extends AbstractSTextTest {
 
 	@Inject
-	private ExecutionContextImpl context;
+	private ExecutionContext context;
 	@Inject
-	private StextStatementInterpreter interpreter;
+	private IStatementInterpreter interpreter;
 	@Inject
 	private ISTextTypeSystem typeSystem;
 
@@ -475,20 +476,34 @@ public class STextInterpreterTest extends AbstractSTextTest {
 	private void initContext() {
 		// "event abc operation foo() var intVar : integer var boolVar : boolean
 		// var realVar : real
-		ExecutionVariable intVar = new ExecutionVariable("intVar", new InferredType(typeSystem.getIntegerType()),
-				0);
-		context.declareVariable(intVar);
-		ExecutionVariable boolVar = new ExecutionVariable("boolVar",
-				new InferredType(typeSystem.getBooleanType()), false);
-		context.declareVariable(boolVar);
-		ExecutionVariable realVar = new ExecutionVariable("realVar", new InferredType(typeSystem.getRealType()),
-				0.0f);
-		context.declareVariable(realVar);
-		ExecutionVariable stringVar = new ExecutionVariable("stringVar",
-				new InferredType(typeSystem.getStringType()), "");
-		context.declareVariable(stringVar);
-		ExecutionEvent event = new ExecutionEvent("abc", new InferredType(typeSystem.getIntegerType()));
-		context.declareEvent(event);
+		ExecutionVariable intVar = new ExecutionVariableImpl();
+		intVar.setName("intVar");
+		intVar.setType(new InferredType(typeSystem.getIntegerType()));
+		intVar.setValue(0);
+		context.getVariables().add(intVar);
+		
+		ExecutionVariable boolVar = new ExecutionVariableImpl();
+		intVar.setName("boolVar");
+		intVar.setType(new InferredType(typeSystem.getBooleanType()));
+		intVar.setValue(false);
+		context.getVariables().add(boolVar);
+		
+		ExecutionVariable realVar = new ExecutionVariableImpl();
+		intVar.setName("realVar");
+		intVar.setType(new InferredType(typeSystem.getRealType()));
+		intVar.setValue(0.0f);
+		context.getVariables().add(realVar);
+		
+		ExecutionVariable stringVar = new ExecutionVariableImpl();
+		intVar.setName("stringVar");
+		intVar.setType(new InferredType(typeSystem.getStringType()));
+		intVar.setValue("");
+		context.getVariables().add(stringVar);
+		
+		ExecutionEvent event = new ExecutionEventImpl();
+		intVar.setName("abc");
+		intVar.setType(new InferredType(typeSystem.getIntegerType()));
+		context.getEvents().add(event);
 	}
 
 	protected Object getBoolValue() {
@@ -528,7 +543,7 @@ public class STextInterpreterTest extends AbstractSTextTest {
 		return interpreter.evaluateStatement(statement, context);
 	}
 
-	public IExecutionContext getContext() {
+	public ExecutionContext getContext() {
 		return context;
 	}
 

+ 23 - 17
test-plugins/org.yakindu.sct.model.sexec.interpreter.test/src/org/yakindu/sct/model/sexec/interpreter/test/util/AbstractExecutionFlowTest.java

@@ -13,13 +13,14 @@ package org.yakindu.sct.model.sexec.interpreter.test.util;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.util.Set;
+import java.util.List;
 
 import org.yakindu.sct.model.sexec.ExecutionFlow;
-import org.yakindu.sct.model.sexec.interpreter.IExecutionFlowInterpreter;
 import org.yakindu.sct.model.sgraph.RegularState;
-import org.yakindu.sct.simulation.core.runtime.IExecutionContext;
-import org.yakindu.sct.simulation.core.runtime.impl.ExecutionVariable;
+import org.yakindu.sct.simulation.core.sexec.container.IExecutionContextInitializer;
+import org.yakindu.sct.simulation.core.sexec.interpreter.IExecutionFlowInterpreter;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
 import org.yakindu.sct.test.models.SCTUnitTestModels;
 
 import com.google.inject.Inject;
@@ -34,13 +35,18 @@ public abstract class AbstractExecutionFlowTest {
 	protected IExecutionFlowInterpreter interpreter;
 	@Inject
 	protected SCTUnitTestModels models;
+	@Inject
+	protected ExecutionContext context;
+	@Inject
+	protected IExecutionContextInitializer initializer;
 
-	protected IExecutionContext context() {
-		return interpreter.getExecutionContext();
+	protected ExecutionContext context() {
+		return context;
 	}
 
 	protected void initInterpreter(ExecutionFlow flow) {
-		interpreter.initialize(flow);
+		initializer.initialize(context, flow);
+		interpreter.initialize(flow, context);
 	}
 
 	protected int getInteger(String varName) {
@@ -64,35 +70,34 @@ public abstract class AbstractExecutionFlowTest {
 	}
 
 	protected int setInteger(String varName, int v) {
-		context().setSlotValue(varName, (Integer) v);
+		context().getVariable(varName).setValue((Integer) v);
 		return v;
 	}
 
 	protected boolean setBoolean(String varName, boolean v) {
-		context().setSlotValue(varName, (Boolean) v);
+		context().getVariable(varName).setValue((Boolean) v);
 		return v;
 	}
 
 	protected double setReal(String varName, double v) {
-		context().setSlotValue(varName, (Double) v);
+		context().getVariable(varName).setValue((Double) v);
 		return v;
 	}
 
 	protected String setString(String varName, String v) {
-		context().setSlotValue(varName, v);
+		context().getVariable(varName).setValue((String) v);
 		return v;
 	}
 
 	// -> Assertion methods...
 	protected void assertVarValue(String variableName, Object value) {
 		ExecutionVariable variable = context().getVariable(variableName);
-		assertNotNull("Variable '" + variableName + "' is not defined",
-				variable);
+		assertNotNull("Variable '" + variableName + "' is not defined", variable);
 		assertEquals(value, variable.getValue());
 	}
 
 	protected boolean isActive(String stateName) {
-		Set<RegularState> allActiveStates = context().getAllActiveStates();
+		List<RegularState> allActiveStates = context().getAllActiveStates();
 		for (RegularState regularState : allActiveStates) {
 			if (regularState.getName().equals(stateName)) {
 				return true;
@@ -102,15 +107,16 @@ public abstract class AbstractExecutionFlowTest {
 	}
 
 	protected void raiseEvent(String eventName) {
-		context().raiseEvent(eventName, null);
+		context().getEvent(eventName).setRaised(true);
 	}
 
 	protected void raiseEvent(String eventName, Object value) {
-		context().raiseEvent(eventName, value);
+		context().getEvent(eventName).setRaised(true);
+		context().getEvent(eventName).setValue(value);
 	}
 
 	protected boolean isRaised(String eventName) {
-		return context().isEventRaised(eventName);
+		return context().getEvent(eventName).isRaised();
 	}
 
 }

+ 2 - 3
test-plugins/org.yakindu.sct.model.sexec.interpreter.test/src/org/yakindu/sct/model/sexec/interpreter/test/util/SExecInjectionProvider.java

@@ -11,8 +11,8 @@
 package org.yakindu.sct.model.sexec.interpreter.test.util;
 
 import org.eclipse.xtext.junit4.IInjectorProvider;
-import org.yakindu.sct.model.sexec.interpreter.InterpreterModule;
 import org.yakindu.sct.model.sexec.transformation.SequencerModule;
+import org.yakindu.sct.simulation.core.sexec.SimulationModule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
@@ -26,8 +26,7 @@ import com.google.inject.util.Modules;
 public class SExecInjectionProvider implements IInjectorProvider {
 
 	public Injector getInjector() {
-		return Guice.createInjector(Modules.override(new SequencerModule())
-				.with(new InterpreterModule()));
+		return Guice.createInjector(Modules.override(new SequencerModule()).with(new SimulationModule()));
 	}
 
 }