package mc.emf.serialization; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import de.monticore.emf.util.AST2ModelFiles; import mc.GeneratorIntegrationsTest; import mc.feature.fautomaton.automaton.flatautomaton._ast.ASTAutomaton; import mc.feature.fautomaton.automaton.flatautomaton._ast.FlatAutomatonNodeFactory; import mc.feature.fautomaton.automaton.flatautomaton._ast.FlatAutomatonPackage; import mc.feature.fautomaton.automatonwithaction.actionautomaton._ast.ActionAutomatonPackage; public class ASTModelSerialDeserialTest extends GeneratorIntegrationsTest { public void testECoreFileOFSuperGrammar() { ASTAutomaton aut = FlatAutomatonNodeFactory.createASTAutomaton(); try { AST2ModelFiles.get().serializeASTInstance(aut, "Aut1"); ResourceSet resourceSet = new ResourceSetImpl(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put( Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); URI fileURI = URI.createFileURI(new File("FlatAutomaton.ecore").getAbsolutePath()); Resource resource = resourceSet.getResource(fileURI, true); EPackage serializedEPackage = (EPackage) resource.getContents().get(0); EClass serializedState = (EClass) serializedEPackage.getEClassifier("State"); int expectedFeatureCountAutomaton = FlatAutomatonPackage.eINSTANCE.getAutomaton().getFeatureCount(); String expectedNameOfInitial = "initial"; assertEquals("FlatAutomaton", serializedEPackage.getName()); assertEquals(expectedFeatureCountAutomaton, ((EClass) serializedEPackage.getEClassifier("Automaton")).getFeatureCount()); assertEquals(expectedNameOfInitial, serializedState.getEAllStructuralFeatures().get(FlatAutomatonPackage.ASTState_Initial).getName()); } catch (IOException e) { fail("Should not reach this, but: " + e); } } public void testECoreFileOFGrammar() { ResourceSet resourceSet = new ResourceSetImpl(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put( Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); URI fileURI = URI.createFileURI(new File("ActionAutomaton.ecore").getAbsolutePath()); Resource resource = resourceSet.getResource(fileURI, true); EPackage serializedEPackage = (EPackage) resource.getContents().get(0); EClass serializedTransitionWithAction = (EClass) serializedEPackage.getEClassifier("TransitionWithAction"); int expectedFeatureCountAutomaton = ActionAutomatonPackage.eINSTANCE.getAutomaton().getFeatureCount(); String expectedNameOfAction = "action"; String expectedFirstSuperType = "Transition"; assertEquals("ActionAutomaton", serializedEPackage.getName()); assertEquals(expectedFeatureCountAutomaton, ((EClass) serializedEPackage.getEClassifier("Automaton")).getFeatureCount()); assertEquals(expectedFirstSuperType, serializedTransitionWithAction.getESuperTypes().get(0).getName()); assertEquals(expectedNameOfAction, serializedTransitionWithAction.getEAllStructuralFeatures().get(ActionAutomatonPackage.ASTCounter_Names).getName()); } public void testECoreFileOFASTENode() { ResourceSet resourceSet = new ResourceSetImpl(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put( Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); URI fileURI = URI.createFileURI(new File("ASTENode.ecore").getAbsolutePath()); Resource resource = resourceSet.getResource(fileURI, true); EPackage serializedEPackage = (EPackage) resource.getContents().get(0); EClass serializedENode = (EClass) serializedEPackage.getEClassifier("ENode"); assertEquals("ASTENode", serializedEPackage.getName()); assertTrue(serializedENode.isInterface()); } }