blob: 2deb4839924d2207f3950579b716ed9ed30f6db9 [file] [log] [blame]
package org.eclipse.rmf.tests.ext.prostep.serializaion;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage;
import org.eclipse.rmf.ext.prostep.ExchangeConversation;
import org.eclipse.rmf.ext.prostep.ProstepFactory;
import org.eclipse.rmf.ext.prostep.ProstepPackage;
import org.eclipse.rmf.reqif10.ReqIF;
import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.ReqIF10Package;
import org.eclipse.rmf.reqif10.common.util.ReqIFToolExtensionUtil;
import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceFactoryImpl;
import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;
import org.eclipse.rmf.tests.reqif10.serialization.util.AbstractTestCase;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
public class SerializationTests extends AbstractTestCase {
@BeforeClass
public static void setupOnce() throws Exception {
// globally register packages (global registry required since the generated EMF code
// doesn't handle local registries during handling of xsd any types)
// backup the registry
backupRegistry = new HashMap<String, Object>();
backupRegistry.putAll(EPackage.Registry.INSTANCE);
// System.out.println("BeforeClass: Initial package registry: " + EPackage.Registry.INSTANCE.keySet());
EPackage.Registry.INSTANCE.clear();
EPackage.Registry.INSTANCE.put(ReqIF10Package.eNS_URI, ReqIF10Package.eINSTANCE);
EPackage.Registry.INSTANCE.put(XMLNamespacePackage.eNS_URI, XMLNamespacePackage.eINSTANCE);
EPackage.Registry.INSTANCE.put(ProstepPackage.eNS_URI, ProstepPackage.eINSTANCE);
loadXMLPersistenceMappingResourceSet = new XMLPersistenceMappingResourceSetImpl();
loadXMLPersistenceMappingResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("reqif", new ReqIF10ResourceFactoryImpl());
saveXMLPersistenceMappingResourceSet = new XMLPersistenceMappingResourceSetImpl();
saveXMLPersistenceMappingResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("reqif", new ReqIF10ResourceFactoryImpl());
}
@Test
public void test() throws IOException {
String fileName = getWorkingFileName("minimalExchangeConversation.reqif");
String identifier = "_6ced3339-9916-44f7-b9f0";
// create minimal model that contains tool extension
ReqIF reqIF = ReqIF10Factory.eINSTANCE.createReqIF();
ExchangeConversation exchangeConversation = ProstepFactory.eINSTANCE.createExchangeConversation();
exchangeConversation.setIdentifier(identifier);
ReqIFToolExtensionUtil.addToolExtension(reqIF,exchangeConversation);
// save the model
saveReqIFFile(reqIF, fileName);
// load file
ReqIF loadedReqIF = loadReqIFFile(fileName);
List<EObject> loadedExtensions = ReqIFToolExtensionUtil.getToolExtensionsByNsURI(loadedReqIF, ProstepPackage.eNS_URI);
Assert.assertSame(1, loadedExtensions.size());
EObject loadedExtension = loadedExtensions.get(0);
Assert.assertTrue(loadedExtension instanceof ExchangeConversation);
ExchangeConversation loadedExchangeConversation = (ExchangeConversation)loadedExtension;
Assert.assertEquals(identifier, loadedExchangeConversation.getIdentifier());
}
}