blob: 23f28d463bc4f963a82a0148cdf6805af1a38200 [file] [log] [blame]
/*
* Copyright (c) 2011-2013, 2015 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;
import org.eclipse.emf.cdo.dawn.tests.AbstractDawnUITest;
import org.eclipse.emf.cdo.dawn.tests.ui.util.DawnCodeGenerationTestUtil;
import org.eclipse.emf.cdo.dawn.tests.ui.util.DawnSWTBotUtil;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* @author Martin Fluegge
*/
@RunWith(SWTBotJunit4ClassRunner.class)
public class DawnCodeGenerationTest extends AbstractDawnUITest<SWTWorkbenchBot>
{
private SWTBotView packageExplorer;
@Override
@Before
public void setUp() throws Exception
{
super.setUp();
prepare();
}
@Override
@After
public void tearDown() throws Exception
{
cleanup();
super.tearDown();
}
private void cleanup()
{
deleteProject("org.eclipse.emf.cdo.dawn.examples.acore");
}
@Test
public void testCodeGenerationGMF() throws Exception
{
SWTBotView packageExplorer = DawnSWTBotUtil.openView(getBot(), "Java", "Package Explorer");
packageExplorer.setFocus();
SWTBotTreeItem modelFolder = getBot().tree().expandNode("org.eclipse.emf.cdo.dawn.examples.acore", "model");
SWTBotTreeItem gmfgen = modelFolder.expandNode("acore.gmfgen");
gmfgen.contextMenu("Generate Dawn GenModel").click();
sleep(5000);
assertNotNull(modelFolder.getNode("acore.dawngenmodel"));
SWTBotTreeItem dawngenmodel_gmf = modelFolder.getNode("acore.dawngenmodel_gmf");
assertNotNull(dawngenmodel_gmf);
dawngenmodel_gmf.contextMenu("Generate Dawn GMF Fragment").click();
sleep(10000);
IProject fragment = ResourcesPlugin.getWorkspace().getRoot()
.getProject("org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn");
assertNotNull(fragment);
String diagramFolder = "src/org/eclipse/emf/cdo/dawn/examples/acore/diagram";
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, "META-INF/MANIFEST.MF"));
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, "/fragment.xml"));
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, "/build.properties"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/edit/parts/DawnAcoreEditPartFactory.java"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/edit/parts/DawnACoreRootEditPart.java"));
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment,
diagramFolder + "/edit/policies/DawnACoreRootCanonicalEditPolicy.java"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/part/DawnAcoreCreationWizard.java"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/part/DawnAcoreDiagramEditor.java"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/part/DawnAcoreDiagramEditorUtil.java"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/part/DawnAcoreDocumentProvider.java"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/providers/DawnAcoreEditPartProvider.java"));
assertEquals(true,
DawnCodeGenerationTestUtil.exists(fragment, diagramFolder + "/providers/DawnAcoreEditPolicyProvider.java"));
deleteProject("org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn");
sleep(2000);
}
@Test
public void testCodeGenerationEMF() throws Exception
{
packageExplorer = DawnSWTBotUtil.openView(getBot(), "Java", "Package Explorer");
packageExplorer.setFocus();
SWTBotTreeItem modelFolder = getBot().tree().expandNode("org.eclipse.emf.cdo.dawn.examples.acore", "model");
SWTBotTreeItem gmfgen = modelFolder.expandNode("acore.genmodel");
gmfgen.contextMenu("Generate Dawn GenModel").click();
IProject rootProject = ResourcesPlugin.getWorkspace().getRoot()
.getProject("org.eclipse.emf.cdo.dawn.examples.acore");
waitUntilExists(rootProject, "model/acore.dawngenmodel", 10000);
assertEquals(true, DawnCodeGenerationTestUtil.exists(rootProject, "model/acore.dawngenmodel_emf"));
modelFolder.setFocus();
SWTBotTreeItem dawngenmodel_emf = modelFolder.getNode("acore.dawngenmodel_emf");
assertNotNull(dawngenmodel_emf);
dawngenmodel_emf.contextMenu("Generate Dawn EMF Fragment").click();
sleep(10000);
assertNotNull(modelFolder.getNode("acore.dawngenmodel"));
assertNotNull(modelFolder.getNode("acore.dawngenmodel_emf"));
IProject fragment = ResourcesPlugin.getWorkspace().getRoot()
.getProject("org.eclipse.emf.cdo.dawn.examples.acore.editor.dawn");
assertNotNull(fragment);
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, "META-INF/MANIFEST.MF"));
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, "/fragment.xml"));
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, "/build.properties"));
String folder = "src/org/eclipse/emf/cdo/dawn/examples/acore/presentation/";
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, folder + "DawnAcoreEditor.java"));
assertEquals(true, DawnCodeGenerationTestUtil.exists(fragment, folder + "DawnAcoreModelWizard.java"));
deleteProject("org.eclipse.emf.cdo.dawn.examples.acore.editor.dawn");
sleep(2000);
}
private void waitUntilExists(IProject project, String path, int timeout)
{
while (timeout > 0)
{
if (DawnCodeGenerationTestUtil.exists(project, "model/acore.dawngenmodel"))
{
return;
}
sleep(1000);
timeout -= 1000;
}
throw new RuntimeException("Could not find " + path + " within " + timeout + " ms.");
}
private SWTWorkbenchBot prepare()
{
SWTWorkbenchBot bot = getBot();
SWTBotView pluginsView = DawnSWTBotUtil.openView(bot, "Plug-in Development", "Plug-ins");
pluginsView.setFocus();
final SWTBotTree tree = bot.tree();
final SWTBotTree plugin = tree.select("org.eclipse.emf.cdo.dawn.examples.acore (1.0.0.qualifier)");
DawnSWTBotUtil.findContextMenu(plugin, "Import As", "Source Project").click();
// wait here until the import has finished
sleep(10000);
return bot;
}
private void deleteProject(String projectName)
{
SWTWorkbenchBot bot = getBot();
SWTBotTreeItem project = bot.tree().expandNode(projectName);
project.contextMenu("Delete").click();
bot.shell("Delete Resources").activate();
bot.checkBox().select();
bot.button("OK").click();
sleep(2000);
}
}