/******************************************************************************* * Copyright (c) 2007 Symbian Software Limited 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: * Bala Torati (Symbian) - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.tests.templateengine; import java.io.File; import java.util.Map; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.templateengine.TemplateCore; import org.eclipse.cdt.core.templateengine.TemplateEngine; import org.eclipse.cdt.core.testplugin.util.BaseTestCase; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Platform; public class TestProcesses extends BaseTestCase { private static final String workspaceLocation = ResourcesPlugin.getWorkspace().getRoot().getRawLocation().toOSString(); private static final String PROJECT_NAME = "TemplateEngineTestsProject"; //$NON-NLS-1$ private static final String SOURCE_FOLDER = "Source"; //$NON-NLS-1$ private static final String FILE_NAME = "File"; //$NON-NLS-1$ private static final String LINK = "Link"; //$NON-NLS-1$ private static final String CPP_EXT = ".cpp"; //$NON-NLS-1$ private static final String H_EXT = ".h"; //$NON-NLS-1$ private static final String PROJECT_TYPE = "org.eclipse.cdt.core.tests.projectType"; //$NON-NLS-1$ protected void setUp() throws Exception { TemplateEngineTestsHelper.turnOffAutoBuild(); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); IPath projectLocation = project.getRawLocation(); if (project.exists()) { project.delete(true, true, null); } IWorkspace workspace = ResourcesPlugin.getWorkspace(); IProjectDescription description = workspace.newProjectDescription(project.getName()); if ((projectLocation != null) && (!projectLocation.equals(Platform.getLocation()))) { description.setLocation(projectLocation); } CCorePlugin.getDefault().createCDTProject(description, project, null); if (!project.isOpen()) { project.open(null); } } public void testAddFile() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*AddFile"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("baseName", FILE_NAME); //$NON-NLS-1$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); IFile file = project.getFile(FILE_NAME + CPP_EXT); assertTrue(file.exists()); file = project.getFile(FILE_NAME + H_EXT); assertTrue(file.exists()); } public void testAddFiles() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*AddFiles"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("baseName", FILE_NAME); //$NON-NLS-1$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); IFile file = project.getFile(FILE_NAME + CPP_EXT); assertTrue(file.exists()); file = project.getFile(FILE_NAME + H_EXT); assertTrue(file.exists()); } public void testAddLink() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*AddLink"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("baseName", FILE_NAME); //$NON-NLS-1$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } try { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); project.refreshLocal(1, null); IFile file = project.getFile(FILE_NAME + CPP_EXT); assertTrue(file.exists()); file = project.getFile(FILE_NAME + LINK + CPP_EXT); assertTrue(file.exists()); } catch (CoreException e) { fail(e.getMessage()); } } public void testAppend() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*Append"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("baseName", FILE_NAME); //$NON-NLS-1$ valueStore.put("targetSourceName", workspaceLocation + File.separator + PROJECT_NAME + File.separator + FILE_NAME + CPP_EXT); //$NON-NLS-1$ valueStore.put("targetHeaderName", workspaceLocation + File.separator + PROJECT_NAME + File.separator + FILE_NAME + H_EXT); //$NON-NLS-1$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } try { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); project.refreshLocal(1, null); IFile file = project.getFile(FILE_NAME + CPP_EXT); assertTrue(file.exists()); file = project.getFile(FILE_NAME + H_EXT); assertTrue(file.exists()); } catch (CoreException e) { fail(e.getMessage()); } } public void testAppendCreate() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*AppendCreate"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("baseName", FILE_NAME); //$NON-NLS-1$ valueStore.put("targetSourceName", FILE_NAME + CPP_EXT); //$NON-NLS-1$ valueStore.put("targetHeaderName", FILE_NAME + H_EXT); //$NON-NLS-1$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); IFile file = project.getFile(FILE_NAME + CPP_EXT); assertTrue(file.exists()); file = project.getFile(FILE_NAME + H_EXT); assertTrue(file.exists()); } public void testCopy() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*Copy"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("baseName", FILE_NAME); //$NON-NLS-1$ valueStore.put("targetSourceName", workspaceLocation + File.separator + PROJECT_NAME + File.separator + FILE_NAME + CPP_EXT); //$NON-NLS-1$ valueStore.put("targetHeaderName", workspaceLocation + File.separator + PROJECT_NAME + File.separator + FILE_NAME + H_EXT); //$NON-NLS-1$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } try { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); project.refreshLocal(1, null); IFile file = project.getFile(FILE_NAME + CPP_EXT); assertTrue(file.exists()); file = project.getFile(FILE_NAME + H_EXT); assertTrue(file.exists()); } catch (CoreException e) { fail(e.getMessage()); } } public void testCreateResourceIdentifier() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*CreateResourceIdentifier"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("valueName1", "baseName1"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("appName1", "Hello"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("valueName2", "baseName2"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("appName2", "He"); //$NON-NLS-1$ //$NON-NLS-2$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); IFile file = project.getFile("HELL" + CPP_EXT); //$NON-NLS-1$ assertTrue(file.exists()); file = project.getFile("HEXX" + CPP_EXT); //$NON-NLS-1$ assertTrue(file.exists()); } public void testCreateSourceFolder() { TemplateCore template = TemplateEngine.getDefault().getFirstTemplate(PROJECT_TYPE, null, ".*CreateSourceFolder"); //$NON-NLS-1$ Map valueStore = template.getValueStore(); valueStore.put("projectName", PROJECT_NAME); //$NON-NLS-1$ valueStore.put("projectType", PROJECT_TYPE); //$NON-NLS-1$ valueStore.put("location", ""); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("isCProject", "false"); //$NON-NLS-1$ //$NON-NLS-2$ valueStore.put("sourceDir1", SOURCE_FOLDER + 1); //$NON-NLS-1$ valueStore.put("sourceDir2", SOURCE_FOLDER + 2); //$NON-NLS-1$ if (TemplateEngineTestsHelper.failIfErrorStatus(template.executeTemplateProcesses(null, false))) { return; } IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME); assertTrue(project.exists()); IFolder folder = project.getFolder(SOURCE_FOLDER + 1); assertTrue(folder.exists()); folder = project.getFolder(SOURCE_FOLDER + 2); assertTrue(folder.exists()); } }