package org.eclipse.emf.mwe.tests.util; import java.io.File; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.mwe.core.WorkflowContext; import org.eclipse.emf.mwe.core.WorkflowContextDefaultImpl; import org.eclipse.emf.mwe.core.issues.Issues; import org.eclipse.emf.mwe.core.issues.IssuesImpl; import org.eclipse.emf.mwe.core.monitor.NullProgressMonitor; import org.eclipse.emf.mwe.utils.Reader; import org.eclipse.emf.mwe.utils.StandaloneSetup; import org.eclipse.emf.mwe.utils.Writer; import org.junit.Assert; import org.junit.Test; public class WriterTest extends Assert { private String relative = "testmodel.ecore"; private String tempfile = "file:/"+System.getProperty("java.io.tmpdir") +"/"+relative; @Test public void testWriteSimpleModel() throws Exception { ResourceSet rs = new ResourceSetImpl(); Writer writer = new Writer(); writer.setModelSlot("x"); writer.setUri(tempfile); writer.setResourceSet(rs); new StandaloneSetup().setPlatformUri(new File("..").getAbsolutePath()); WorkflowContext ctx = new WorkflowContextDefaultImpl(); EPackage pack = EcoreFactory.eINSTANCE.createEPackage(); pack.setName("test"); pack.setNsURI("http://www.eclipse.org/oaw/writer/test"); EClass clazz = EcoreFactory.eINSTANCE.createEClass(); clazz.setName("TEST"); pack.getEClassifiers().add(clazz); ctx.set("x", pack); writer.invoke(ctx, new NullProgressMonitor(), new IssuesImpl()); EObject model1 = (EObject) ctx.get("x"); assertNotNull(model1); // read in Reader r = new Reader(); r.setFirstElementOnly(true); r.setModelSlot("y"); r.setResourceSet(rs); r.setUri(tempfile); r.invoke(ctx, new NullProgressMonitor(), new IssuesImpl()); EPackage pack2 = (EPackage) ctx.get("y"); assertTrue(pack == pack2); new File(relative).delete(); } @Test public void testIgnoreEmptySlot() { ResourceSet rs = new ResourceSetImpl(); Writer writer = new Writer(); writer.setModelSlot("x"); writer.setUri(tempfile); writer.setResourceSet(rs); writer.setIgnoreEmptySlot(true); new StandaloneSetup().setPlatformUri(new File("..").getAbsolutePath()); WorkflowContext ctx = new WorkflowContextDefaultImpl(); Issues issues = new IssuesImpl(); writer.checkConfiguration(issues); assertFalse(issues.hasErrors()); // we cannot know about empty slot contents at this time assertFalse(issues.hasWarnings()); writer.invoke(ctx, new NullProgressMonitor(), issues); assertFalse(issues.hasErrors()); assertTrue(issues.hasWarnings()); File f = new File(relative); assertFalse(f.exists()); } }