blob: 0b31de06ed7b1a8a4001aee184d25501215a8f66 [file] [log] [blame]
/*
* Copyright (c) 2010-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.ui.gmf;
import org.eclipse.emf.cdo.dawn.tests.AbstractDawnGEFTest;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditor;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.keyboard.Keyboard;
import org.eclipse.swtbot.swt.finder.keyboard.KeyboardFactory;
import org.eclipse.swtbot.swt.finder.keyboard.Keystrokes;
import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
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;
/**
* @author Martin Fluegge
*/
@RunWith(SWTBotJunit4ClassRunner.class)
public class DawnCreationWizardSWTBotTest extends AbstractDawnGEFTest
{
private String resourceFieldLabel = org.eclipse.emf.cdo.dawn.ui.messages.Messages.DawnCreateNewResourceWizardPage_6;
@Test
public void testCreateNewDawnDiagram() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
getBot().button("Next >").click();
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("default.acore_diagram");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/default.acore"));
assertEquals(true, resourceExists("/default.acore_diagram"));
}
}
@Test
public void testCreateNewDawnDiagramBothPages() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
getBot().button("Next >").click();
getBot().button("Next >").click();
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("default.acore_diagram");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/default.acore"));
assertEquals(true, resourceExists("/default.acore_diagram"));
}
}
@Test
public void testCreateNewDawnDiagramBothPagesSetName() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
getBot().button("Next >").click();
shell = getBot().shell("New Acore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileNameLabel.setText("test.acore_diagram");
getBot().button("Next >").click();
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
assertEquals("test.acore", fileSemanticNameLabel.getText());
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("test.acore_diagram");
assertNotNull(editor);
editor.close();
}
@Test
public void testCreateNewDawnDiagramBothPagesSetDifferenNames() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
getBot().button("Next >").click();
shell = getBot().shell("New Acore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileNameLabel.setText("notational.acore_diagram");
getBot().button("Next >").click();
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
assertEquals("notational.acore", fileSemanticNameLabel.getText());
fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileSemanticNameLabel.setText("semantic.acore");
fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
assertEquals("semantic.acore", fileSemanticNameLabel.getText());
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("notational.acore_diagram");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/semantic.acore"));
assertEquals(true, resourceExists("/notational.acore_diagram"));
}
}
@Test
public void testCreateNewDawnDiagramEmptyNotationalResourceName() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
getBot().button("Next >").click();
shell = getBot().shell("New Acore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileNameLabel.setText("");
Keyboard keyboard = KeyboardFactory.getDefaultKeyboard(fileNameLabel.widget, null);
fileNameLabel.setFocus();
fileNameLabel.typeText("x", 500);
keyboard.pressShortcut(Keystrokes.BS);
assertEquals(false, getBot().button("Next >").isEnabled());
getBot().button("Cancel").click();
}
@Test
public void testCreateNewDawnDiagramEmptySemanticResourceName() throws Exception
{
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
getBot().button("Next >").click();
shell = getBot().shell("New Acore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileNameLabel.setText("notational.acore_diagram");
getBot().button("Next >").click();
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
Keyboard keyboard = KeyboardFactory.getDefaultKeyboard(fileSemanticNameLabel.widget, null);
fileSemanticNameLabel.setFocus();
fileSemanticNameLabel.typeText("x", 500);
keyboard.pressShortcut(Keystrokes.BS);
assertEquals(false, getBot().button("Next >").isEnabled());
getBot().button("Cancel").click();
}
@Test
public void testCreateNewDawnDiagramSelectFolder() 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("Dawn Acore Diagram");
getBot().button("Next >").click();
shell = getBot().shell("New Acore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileNameLabel.setText("test.acore_diagram");
SWTBotTree tree = getBot().tree(0);
selectFolder(tree.getAllItems(), "folder", false);
getBot().button("Next >").click();
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
assertEquals("test.acore", fileSemanticNameLabel.getText());
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("test.acore_diagram");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/folder/test.acore"));
assertEquals(true, resourceExists("/folder/test.acore_diagram"));
}
}
@Test
public void testCreateNewDawnDiagramTypeFolder() 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("Dawn Acore Diagram");
getBot().button("Next >").click();
shell = getBot().shell("New Acore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileNameLabel.setText("test.acore_diagram");
SWTBotText folder = getBot().textWithLabel("Enter or select the parent folder: ");
folder.setText("/folder");
SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
getBot().button("Next >").click();
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
assertEquals("test.acore", fileSemanticNameLabel.getText());
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("test.acore_diagram");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/folder/test.acore"));
assertEquals(true, resourceExists("/folder/test.acore_diagram"));
}
}
@Test
public void testCreateNewDawnDiagramSelectDifferentFolders() throws Exception
{
{
CDOSession session = openSession();
ResourceSet resourceSet = new ResourceSetImpl();
CDOTransaction transaction = session.openTransaction(resourceSet);
resourceSet.createResource(URI.createURI("cdo:/folder1/dummy"));
resourceSet.createResource(URI.createURI("cdo:/folder2/dummy"));
transaction.commit();
}
getBot().menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = getBot().shell("New");
shell.activate();
getBot().tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
getBot().button("Next >").click();
shell = getBot().shell("New Acore Diagram");
shell.activate();
SWTBotText fileNameLabel = getBot().textWithLabel(resourceFieldLabel);
fileNameLabel.setText("test.acore_diagram");
SWTBotTree tree = getBot().tree(0);
selectFolder(tree.getAllItems(), "folder1", false);
getBot().button("Next >").click();
SWTBotText fileSemanticNameLabel = getBot().textWithLabel(resourceFieldLabel);
assertEquals("test.acore", fileSemanticNameLabel.getText());
tree = getBot().tree(0);
selectFolder(tree.getAllItems(), "folder2", false);
getBot().button("Finish").click();
SWTBotGefEditor editor = getBot().gefEditor("test.acore_diagram");
assertNotNull(editor);
editor.close();
{
assertEquals(true, resourceExists("/folder1/test.acore_diagram"));
assertEquals(true, resourceExists("/folder2/test.acore"));
}
}
}