/*******************************************************************************
* Copyright (c) 2011, 2012 Montages A.G.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Guillaume Hillairet (Montages A.G.) : initial implementation
*******************************************************************************/
package org.eclipse.gmf.tests.tr;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
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.gmf.codegen.gmfgen.GenChildNode;
import org.eclipse.gmf.codegen.gmfgen.GenCompartment;
import org.eclipse.gmf.codegen.gmfgen.GenDiagram;
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator;
import org.eclipse.gmf.codegen.gmfgen.GenLink;
import org.eclipse.gmf.codegen.gmfgen.GenLinkLabel;
import org.eclipse.gmf.codegen.gmfgen.GenNodeLabel;
import org.eclipse.gmf.codegen.gmfgen.GenTopLevelNode;
import org.eclipse.gmf.codegen.gmfgen.ModeledViewmap;
import org.eclipse.gmf.codegen.gmfgen.Viewmap;
import org.eclipse.gmf.mappings.Mapping;
import org.eclipse.gmf.tests.ConfiguredTestCase;
import org.eclipse.gmf.tests.tr.TransformationTestSupport.Transformation;
public class QvtTransformModeledViewmapTest extends ConfiguredTestCase {
protected static String testFolder = "platform:/plugin/org.eclipse.gmf.tests/models/tests/"; //$NON-NLS-1$
public QvtTransformModeledViewmapTest(String name) {
super(name);
}
protected GenEditorGenerator actualGenerator;
private IProject myProject;
private Mapping mapping;
private GenModel genModel;
private URI myProjectURI;
public void setUp() throws Exception {
super.setUp();
myProject = createProject();
myProjectURI = URI.createURI(myProject.getFullPath().toString());
ResourceSet resourceSet = new ResourceSetImpl();
Resource mapRes = resourceSet.createResource(URI.createURI(testFolder).appendSegment("test.gmfmap"));
mapRes.load(null);
Resource genRes = resourceSet.createResource(URI.createURI(testFolder).appendSegment("test.genmodel"));
genRes.load(null);
mapping = (Mapping) mapRes.getContents().get(0);
genModel = (GenModel) genRes.getContents().get(0);
Transformation qvt = TransformationTestSupport.getQvtTransformation(genModel, mapping, true);
actualGenerator = qvt.execute(myProjectURI.appendSegment("test.java.gmfgen"));
}
public void testTopNodeModeledViewmap() {
assertNotNull(actualGenerator);
GenDiagram diagram = actualGenerator.getDiagram();
assertNotNull(diagram);
EList<GenTopLevelNode> nodes = diagram.getTopLevelNodes();
for (GenTopLevelNode node: nodes) {
Viewmap viewmap = node.getViewmap();
assertNotNull(viewmap);
assertTrue(viewmap instanceof ModeledViewmap);
for (GenNodeLabel label: node.getLabels()) {
Viewmap labelViewmap = label.getViewmap();
assertNotNull(labelViewmap);
assertTrue(labelViewmap instanceof ModeledViewmap);
}
}
}
public void testChildNodeModeledViewmap() {
assertNotNull(actualGenerator);
GenDiagram diagram = actualGenerator.getDiagram();
assertNotNull(diagram);
EList<GenChildNode> nodes = diagram.getChildNodes();
for (GenChildNode node: nodes) {
Viewmap viewmap = node.getViewmap();
assertNotNull(viewmap);
assertTrue(viewmap instanceof ModeledViewmap);
for (GenNodeLabel label: node.getLabels()) {
Viewmap labelViewmap = label.getViewmap();
assertNotNull(labelViewmap);
assertTrue(labelViewmap instanceof ModeledViewmap);
}
}
}
public void testLinkModeledViewmap() {
assertNotNull(actualGenerator);
GenDiagram diagram = actualGenerator.getDiagram();
assertNotNull(diagram);
EList<GenLink> links = diagram.getLinks();
for (GenLink link: links) {
Viewmap viewmap = link.getViewmap();
assertNotNull(viewmap);
assertTrue(viewmap instanceof ModeledViewmap);
for (GenLinkLabel label: link.getLabels()) {
Viewmap labelViewmap = label.getViewmap();
assertNotNull(labelViewmap);
assertTrue(labelViewmap instanceof ModeledViewmap);
}
}
}
public void testCompartmentModeledViewmap() {
assertNotNull(actualGenerator);
GenDiagram diagram = actualGenerator.getDiagram();
assertNotNull(diagram);
EList<GenCompartment> compartments = diagram.getCompartments();
for (GenCompartment compartment: compartments) {
Viewmap viewmap = compartment.getViewmap();
assertNotNull(viewmap);
assertTrue(viewmap instanceof ModeledViewmap);
}
}
protected IProject createProject() {
String projectName = "TransformToGenModelOperationTest_" + String.valueOf(System.currentTimeMillis()); //$NON-NLS-1$
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
assertFalse("Project with this name already present in the workspace: " + projectName, project.exists());
try {
project.create(new NullProgressMonitor());
project.open(new NullProgressMonitor());
} catch (CoreException e) {
fail(e.getMessage());
}
assertTrue("Project was not created: " + projectName, project.exists());
return project;
}
protected void deleteProject() throws CoreException {
if (getProject() != null) {
if (getProject().isOpen()) {
getProject().close(new NullProgressMonitor());
}
if (getProject().exists()) {
getProject().delete(true, new NullProgressMonitor());
}
}
}
protected IProject getProject() {
return myProject;
}
}