/** * 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.model.sexec.interpreter.test.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.List; import org.eclipse.core.runtime.Assert; import org.yakindu.sct.model.sexec.ExecutionFlow; import org.yakindu.sct.model.sgraph.RegularState; 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; /** * * @author andreas muelder - Initial contribution and API * */ public abstract class AbstractExecutionFlowTest { @Inject protected IExecutionFlowInterpreter interpreter; @Inject protected SCTUnitTestModels models; @Inject protected ExecutionContext context; @Inject protected IExecutionContextInitializer initializer; protected ExecutionFlow flow; protected ExecutionContext context() { return context; } protected ExecutionFlow flow() { return flow; } protected void initInterpreter(ExecutionFlow flow) { initializer.initialize(context, flow); interpreter.initialize(flow, context); this.flow = flow; } protected long getInteger(String varName) { ExecutionVariable variable = context().getVariable(varName); return (Long) variable.getValue(); } protected boolean getBoolean(String varName) { ExecutionVariable variable = context().getVariable(varName); return (Boolean) variable.getValue(); } protected Double getReal(String varName) { ExecutionVariable variable = context().getVariable(varName); return (Double) variable.getValue(); } protected String getString(String varName) { ExecutionVariable variable = context().getVariable(varName); return (String) variable.getValue(); } protected long setInteger(String varName, long v) { context().getVariable(varName).setValue((Long) v); return v; } protected boolean setBoolean(String varName, boolean v) { context().getVariable(varName).setValue((Boolean) v); return v; } protected double setReal(String varName, double v) { context().getVariable(varName).setValue((Double) v); return v; } protected String setString(String varName, String 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); assertEquals(value, variable.getValue()); } protected boolean isStateActive(String stateName) { Assert.isNotNull(stateName); List<RegularState> allActiveStates = context().getAllActiveStates(); for (RegularState regularState : allActiveStates) { if (stateName.equals(regularState.getName())) { return true; } } return false; } protected void raiseEvent(String eventName) { context().getEvent(eventName).setRaised(true); } protected void raiseEvent(String eventName, Object value) { context().getEvent(eventName).setValue(value); context().getEvent(eventName).setRaised(true); } protected boolean isRaised(String eventName) { return context().getEvent(eventName).isRaised(); } }