blob: cc2b4c7de4db3b253246759bf1b0c4e6dae069a7 [file] [log] [blame]
/*
* Copyright (c) 2011-2013 Eike Stepper (Berlin, Germany) and others.
* 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:
* Martin Fluegge - initial API and implementation
*/
package org.eclipse.emf.cdo.dawn.tests.bugzillas;
import org.eclipse.emf.cdo.dawn.tests.AbstractDawnGEFTest;
import org.eclipse.emf.cdo.dawn.tests.ui.util.DawnEcoreTestUtil;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.impl.EDataTypeImpl;
import org.eclipse.emf.ecore.impl.EEnumImpl;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditPart;
import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditor;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.List;
/**
* @author Martin Fluegge
*/
@RunWith(SWTBotJunit4ClassRunner.class)
public class Bugzilla_333187_Test extends AbstractDawnGEFTest
{
private static final String DOMAIN_FILE_NAME = "Domain file name: ";
@Test
public void testCreateNewEcoreToolsDiagram() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select(DawnEcoreTestUtil.CREATION_WIZARD_NAME_GMF);
getBot().button("Next >").click();
sleep(1000);
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("default");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/default.ecore"));
assertEquals(true, resourceExists("/default.ecorediag"));
}
}
@Test
public void testCreateNewEcoreDiagramWrongResourceName() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select(DawnEcoreTestUtil.CREATION_WIZARD_NAME_GMF);
getBot().button("Next >").click();
sleep(6000);
shell = getBot().shell("New Ecore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(DOMAIN_FILE_NAME);
fileNameLabel.setText("");
fileNameLabel.setFocus();
fileNameLabel.typeText("x", 500);
assertEquals(false, getBot().button("Next >").isEnabled());
getBot().button("Cancel").click();
}
@Test
public void testCreateNewEcoreDiagramChangeResourceName() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select(DawnEcoreTestUtil.CREATION_WIZARD_NAME_GMF);
getBot().button("Next >").click();
sleep(6000);
shell = getBot().shell("New Ecore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(DOMAIN_FILE_NAME);
fileNameLabel.setText("");
fileNameLabel.setFocus();
fileNameLabel.typeText("default2.ecore", 50);
assertEquals(true, getBot().button("Finish").isEnabled());
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("default2");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/default2.ecore"));
assertEquals(true, resourceExists("/default2.ecorediag"));
}
}
@Test
public void testCreateNewEcoreDiagramSetResourceInDialog() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select(DawnEcoreTestUtil.CREATION_WIZARD_NAME_GMF);
getBot().button("Next >").click();
shell = getBot().shell("New Ecore Diagram");
shell.activate();
getBot().button("Browse...").click();
// activate the selection window
// shell = getBot().shells()[3];
// shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel("Resource name:");
fileNameLabel.setText("test.ecore");
getBot().button("OK").click();
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(DOMAIN_FILE_NAME);
assertEquals("test.ecore", fileSemanticNameLabel.getText());
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("test");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/test.ecore"));
assertEquals(true, resourceExists("/test.ecorediag"));
}
}
@Test
public void testCreateNewEcoreDiagramSetResourceInDialogAndSelectFolder() throws Exception
{
{
CDOSession session = openSession();
ResourceSet resourceSet = new ResourceSetImpl();
CDOTransaction transaction = session.openTransaction(resourceSet);
final URI uri = URI.createURI("cdo:/folder/dummy");
resourceSet.createResource(uri);
transaction.commit();
}
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select(DawnEcoreTestUtil.CREATION_WIZARD_NAME_GMF);
getBot().button("Next >").click();
shell = getBot().shell("New Ecore Diagram");
shell.activate();
getBot().button("Browse...").click();
SWTBotTree tree = getBot().tree(0);
selectFolder(tree.getAllItems(), "folder", false);
SWTBotText fileNameLabel = getBot().textWithLabel("Resource name:");
fileNameLabel.setText("test.ecore");
getBot().button("OK").click();
SWTBotText resourcePathLabel = getBot().text(0);
assertEquals("cdo://repo1/folder/", resourcePathLabel.getText());
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(DOMAIN_FILE_NAME);
assertEquals("test.ecore", fileSemanticNameLabel.getText());
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("test");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/folder/test.ecore"));
assertEquals(true, resourceExists("/folder/test.ecorediag"));
}
}
@Test
public void testCreateNewEcoreToolsDiagramAndAddElements() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 150, 250, "C", getBot(), editor);
editor.saveAndClose();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
assertEquals(3, epackage.getEClassifiers().size());
Character name = 'A';
for (EClassifier aClass : epackage.getEClassifiers())
{
assertEquals(name.toString(), aClass.getName());
name++;
}
}
}
@Test
public void testCreateNewDawnDiagramAndAddElementsWithEdges() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 150, 250, "C", getBot(), editor);
createEdge(DawnEcoreTestUtil.E_REFERENCE, 100, 100, 250, 100, editor);
createEdge(DawnEcoreTestUtil.E_REFERENCE, 100, 100, 150, 250, editor);
List<SWTBotGefEditPart> connectionEditParts = DawnEcoreTestUtil.getAllTargetConnections(editor);
assertEquals(2, connectionEditParts.size());
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
assertEquals(3, epackage.getEClassifiers().size());
Character name = 'A';
for (EClassifier aClass : epackage.getEClassifiers())
{
assertEquals(name.toString(), aClass.getName());
name++;
}
view.close();
}
}
@Test
public void testEClassChangeName() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 100, 100, "A", getBot(), editor);
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource semanticResource = view.getResource("/default.ecore");
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(1, epackage.getEClassifiers().size());
EClassifier eClassifier = epackage.getEClassifiers().get(0);
assertEquals("A", eClassifier.getName());
session.close();
}
typeTextToFocusedWidget("B", getBot(), true);
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource semanticResource = view.getResource("/default.ecore");
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(1, epackage.getEClassifiers().size());
EClassifier eClassifier = epackage.getEClassifiers().get(0);
assertEquals("B", eClassifier.getName());
session.close();
}
}
@Test
public void testEClassWithEAttributes() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 100, 100, "A", getBot(), editor);
editor.save();
editor.activateTool(DawnEcoreTestUtil.E_ATTRIBUTE);
editor.click(100, 100);
typeTextToFocusedWidget("name", getBot(), true);
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
EClass eClass = (EClass)epackage.getEClassifiers().get(0);
assertEquals("A", eClass.getName());
EList<EAttribute> eAttributes = eClass.getEAttributes();
assertEquals(1, eAttributes.size());
assertEquals("name", eAttributes.get(0).getName());
}
}
@Test
public void testEClassWithEOperation() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 100, 100, "A", getBot(), editor);
editor.save();
editor.activateTool(DawnEcoreTestUtil.E_OPERATION);
editor.click(100, 100);
typeTextToFocusedWidget("operation", getBot(), true);
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource semanticResource = view.getResource("/default.ecore");
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
EClass eClass = (EClass)epackage.getEClassifiers().get(0);
assertEquals("A", eClass.getName());
EList<EOperation> eOperations = eClass.getEOperations();
assertEquals(1, eOperations.size());
assertEquals("operation", eOperations.get(0).getName());
}
}
@Test
public void testDiagramWithInheritance() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 150, 250, "C", getBot(), editor);
createEdge(DawnEcoreTestUtil.INHERITANCE, 100, 100, 250, 100, editor);
createEdge(DawnEcoreTestUtil.INHERITANCE, 100, 100, 150, 250, editor);
List<SWTBotGefEditPart> connectionEditParts = DawnEcoreTestUtil.getAllTargetConnections(editor);
assertEquals(2, connectionEditParts.size());
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
assertEquals(3, epackage.getEClassifiers().size());
EClass eClass1 = (EClass)epackage.getEClassifiers().get(0);
EClass eClass2 = (EClass)epackage.getEClassifiers().get(1);
EClass eClass3 = (EClass)epackage.getEClassifiers().get(2);
assertEquals(eClass2, eClass1.getEAllSuperTypes().get(0));
assertEquals(eClass3, eClass1.getEAllSuperTypes().get(1));
view.close();
}
}
@Test
public void testEDataType() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_DATATYPE, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_DATATYPE, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_DATATYPE, 150, 250, "C", getBot(), editor);
editor.saveAndClose();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
assertEquals(3, epackage.getEClassifiers().size());
Character name = 'A';
for (EClassifier eType : epackage.getEClassifiers())
{
assertEquals(EDataTypeImpl.class, eType.getClass());
assertEquals(name.toString(), eType.getName());
name++;
}
}
}
@Test
public void testEAnnotation() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ANNOTATION, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ANNOTATION, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ANNOTATION, 150, 250, "C", getBot(), editor);
editor.saveAndClose();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
EList<EAnnotation> eAnnotations = epackage.getEAnnotations();
assertEquals(3, eAnnotations.size());
Character name = 'A';
for (EAnnotation eAnnotation : eAnnotations)
{
assertEquals(name.toString(), eAnnotation.getSource());
name++;
}
}
}
@Test
public void testEENum() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ENUM, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ENUM, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ENUM, 150, 250, "C", getBot(), editor);
editor.saveAndClose();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
assertEquals(3, epackage.getEClassifiers().size());
Character name = 'A';
for (EClassifier eEnum : epackage.getEClassifiers())
{
assertEquals(EEnumImpl.class, eEnum.getClass());
assertEquals(name.toString(), eEnum.getName());
name++;
}
}
}
@Test
public void testEPackage() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_PACKAGE, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_PACKAGE, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_PACKAGE, 150, 250, "C", getBot(), editor);
editor.saveAndClose();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
EList<EObject> contents = semanticResource.getContents();
assertEquals(1, contents.size());
EPackage ePackage = (EPackage)contents.get(0);
Character name = 'A';
for (EPackage eSubPackage : ePackage.getESubpackages())
{
assertEquals(name.toString(), eSubPackage.getName());
assertEquals(ePackage, eSubPackage.getESuperPackage());
name++;
}
}
}
@Test
public void testDiagramWithClassAndEAnnotations() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_CLASS, 100, 100, "A", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ANNOTATION, 250, 100, "B", getBot(), editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ANNOTATION, 150, 250, "C", getBot(), editor);
createEdge(DawnEcoreTestUtil.E_ANNOTATION_LINK, 250, 100, 100, 100, editor);
createEdge(DawnEcoreTestUtil.E_ANNOTATION_LINK, 150, 250, 100, 100, editor);
List<SWTBotGefEditPart> connectionEditParts = DawnEcoreTestUtil.getAllTargetConnections(editor);
assertEquals(2, connectionEditParts.size());
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
Diagram diagram = (Diagram)diagramResource.getContents().get(0);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
assertEquals(3, diagram.getChildren().size());
assertEquals(1, epackage.getEClassifiers().size());
// EClass eClass1 = (EClass)epackage.getEClassifiers().get(0);
// EList<EAnnotation> eAnnotations = eClass1.getEAnnotations();
// assertEquals(2, eAnnotations.size());
//
// Character name = 'B';
//
// for (EAnnotation annotation : eAnnotations)
// {
// assertEquals(name.toString(), annotation.getSource());
// assertEquals(eClass1, annotation.getEModelElement());
// name++;
// }
view.close();
}
}
@Test
public void testEAnnotationWithDetailEntry() throws Exception
{
SWTBotGefEditor editor = DawnEcoreTestUtil.openNewEcoreToolsEditor("default.ecore", getBot());
assertNotNull(editor);
createNodeWithLabel(DawnEcoreTestUtil.E_ANNOTATION, 100, 100, "A", getBot(), editor);
editor.activateTool(DawnEcoreTestUtil.DETAILS_ENTRY);
editor.click(100, 100);
typeTextToFocusedWidget("name", getBot(), true);
editor.save();
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource diagramResource = view.getResource("/default.ecorediag");
CDOResource semanticResource = view.getResource("/default.ecore");
assertNotNull(diagramResource);
assertNotNull(semanticResource);
EPackage epackage = (EPackage)semanticResource.getContents().get(0);
EAnnotation eAnnotation = epackage.getEAnnotations().get(0);
assertEquals("A", eAnnotation.getSource());
assertEquals(1, eAnnotation.getDetails().size());
view.close();
}
}
}