package no.hal.scxml.generator; import java.util.StringTokenizer; import junit.framework.TestCase; import no.hal.scxml.scxmlxt.ScxmlxtPackage; import org.apache.commons.scxml.model.SCXML; import org.apache.commons.scxml.model.TransitionTarget; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; public class ScxmlTestCase extends TestCase { protected SCXML scxml = null; protected ScxmlRunner scxmlRunner; protected void setUp(String domainDataName) throws Exception { super.setUp(); Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl()); Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl()); EPackage.Registry.INSTANCE.put(ScxmlxtPackage.eNS_URI, ScxmlxtPackage.eINSTANCE); ResourceSetImpl resourceSet = new ResourceSetImpl(); scxmlRunner = new ScxmlRunner(resourceSet); URI baseUri = URI.createURI(this.getClass().getResource(domainDataName).toString()); scxmlRunner.init(resourceSet.getResource(URI.createURI(domainDataName).resolve(baseUri), true).getContents().get(0), baseUri); } protected void startScxml() { scxmlRunner.start(); } protected void resumeScxml() { scxmlRunner.resume(); } private void assertState(String stateId, boolean expected, boolean def) { assertTrue("State " + stateId + " is " + (expected ? "not " : "") + "active ", scxmlRunner.stateCheck(stateId, expected, def)); } private void assertState(String stateIds, boolean expected) { StringTokenizer ids = new StringTokenizer(stateIds); while (ids.hasMoreTokens()) { assertState(ids.nextToken(), expected, false); } } protected void assertInState(String stateIds) { assertState(stateIds, true); } protected void assertNotInState(String stateIds) { assertState(stateIds, false); } protected EObject getEObject(TransitionTarget state) { return scxmlRunner.getEObject(state); } protected TransitionTarget getState(String stateId) { return scxmlRunner.getState(stateId); } protected Object eGet(EObject eObject, String name) { return eObject.eGet(eObject.eClass().getEStructuralFeature(name)); } protected void eSet(EObject eObject, String name, Object value) { eObject.eSet(eObject.eClass().getEStructuralFeature(name), value); } }