/* * Copyright (c) 2016 RWTH Aachen. All rights reserved. * * http://www.se-rwth.de/ */ package mc.emf.etools; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import java.io.IOException; import java.util.Optional; import org.antlr.v4.runtime.RecognitionException; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.EcoreUtil; import org.junit.Test; import de.monticore.emf.util.AST2ModelFiles; import mc.GeneratorIntegrationsTest; import mc.feature.fautomaton.automaton.flatautomaton._ast.ASTAutomaton; import mc.feature.fautomaton.automaton.flatautomaton._ast.ASTState; import mc.feature.fautomaton.automaton.flatautomaton._ast.ASTTransition; import mc.feature.fautomaton.automaton.flatautomaton._ast.FlatAutomatonNodeFactory; import mc.feature.fautomaton.automaton.flatautomaton._ast.FlatAutomatonPackage; import mc.feature.fautomaton.automaton.flatautomaton._parser.FlatAutomatonParser; /** * TODO: Write me! * * @author (last commit) $Author$ * @version $Revision$, $Date$ */ public class EcoreUtilTest extends GeneratorIntegrationsTest { @Test public void testSerializeAndDeserializeParseInstance() { try { Optional<ASTAutomaton> transB = new FlatAutomatonParser() .parse("src/test/resources/mc/emf/diff/Testautomat.aut"); Optional<ASTAutomaton> transC = new FlatAutomatonParser() .parse("src/test/resources/mc/emf/Testautomat.aut"); Optional<ASTAutomaton> transA = new FlatAutomatonParser() .parse("src/test/resources/mc/emf/diff/Testautomat2.aut"); if (transB.isPresent() && transC.isPresent() && transA.isPresent()) { assertTrue(EcoreUtil.equals(transB.get(), transC.get())); assertFalse(EcoreUtil.equals(transB.get(), transA.get())); AST2ModelFiles.get().serializeASTInstance(transB.get(), "B"); AST2ModelFiles.get().serializeASTInstance(transC.get(), "C"); AST2ModelFiles.get().serializeASTInstance(transA.get(), "A"); EObject deserAstTransB = AST2ModelFiles.get().deserializeASTInstance("ASTAutomaton_B", FlatAutomatonPackage.eINSTANCE); assertNotNull(deserAstTransB); assertTrue(deserAstTransB instanceof ASTAutomaton); EObject deserAstTransC = AST2ModelFiles.get().deserializeASTInstance("ASTAutomaton_C", FlatAutomatonPackage.eINSTANCE); assertNotNull(deserAstTransC); assertTrue(deserAstTransC instanceof ASTAutomaton); EObject deserAstTransA = AST2ModelFiles.get().deserializeASTInstance("ASTAutomaton_A", FlatAutomatonPackage.eINSTANCE); assertNotNull(deserAstTransA); assertTrue(deserAstTransA instanceof ASTAutomaton); assertTrue(EcoreUtil.equals(deserAstTransB, deserAstTransC)); assertFalse(EcoreUtil.equals(deserAstTransA, deserAstTransC)); } else { fail("Parse errors"); } } catch (RecognitionException | IOException e) { fail("Should not reach this, but: " + e); } } @Test public void testSerializeAndDeserializeCreatedInstance() { ASTAutomaton aut = FlatAutomatonNodeFactory.createASTAutomaton(); ASTTransition trans = FlatAutomatonNodeFactory.createASTTransition(); ASTState state1 = FlatAutomatonNodeFactory.createASTState(); ASTState state2 = FlatAutomatonNodeFactory.createASTState(); aut.setName("aut1"); aut.getTransitions().add(trans); aut.getStates().add(state1); aut.getStates().add(state2); state1.setName("state1"); state2.setName("state2"); trans.setFrom(state1.getName()); trans.setTo(state2.getName()); trans.setActivate("trans1"); state1.setInitial(true); state2.setFinal(true); ASTAutomaton aut2 = FlatAutomatonNodeFactory.createASTAutomaton(); ASTTransition trans2 = FlatAutomatonNodeFactory.createASTTransition(); ASTState state1a = FlatAutomatonNodeFactory.createASTState(); ASTState state2a = FlatAutomatonNodeFactory.createASTState(); aut2.setName("aut1"); aut2.getTransitions().add(trans2); aut2.getStates().add(state1a); aut2.getStates().add(state2a); state1a.setName("state1"); state2a.setName("state2"); trans2.setFrom(state1a.getName()); trans2.setTo(state2a.getName()); trans2.setActivate("trans1"); state1a.setInitial(true); state2a.setFinal(true); assertTrue(EcoreUtil.equals(aut, aut2)); state2a.setFinal(false); assertFalse(EcoreUtil.equals(aut, aut2)); state2.setFinal(false); assertTrue(EcoreUtil.equals(aut, aut2)); } }