diff options
Diffstat (limited to 'testplugins/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/wizardapi/NewJavaProjectWizardTest.java')
-rw-r--r-- | testplugins/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/wizardapi/NewJavaProjectWizardTest.java | 309 |
1 files changed, 309 insertions, 0 deletions
diff --git a/testplugins/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/wizardapi/NewJavaProjectWizardTest.java b/testplugins/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/wizardapi/NewJavaProjectWizardTest.java new file mode 100644 index 000000000..415adc1a8 --- /dev/null +++ b/testplugins/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/wizardapi/NewJavaProjectWizardTest.java @@ -0,0 +1,309 @@ +/******************************************************************************* + * Copyright (c) 2000, 2008 IBM Corporation 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.ui.tests.wizardapi; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.core.runtime.IPath; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.jface.operation.IRunnableWithProgress; + +import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation; + +import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; + +import org.eclipse.jdt.launching.JavaRuntime; + +import org.eclipse.jdt.ui.PreferenceConstants; +import org.eclipse.jdt.ui.wizards.NewJavaProjectWizardPage; + +public class NewJavaProjectWizardTest extends TestCase { + + + public static Test suite() { + return new TestSuite(NewJavaProjectWizardTest.class); + } + + private class TestNewJavaProjectWizardPage extends NewJavaProjectWizardPage { + + private IProject fNewProject; + + public TestNewJavaProjectWizardPage(IWorkspaceRoot root) { + super(root, null); + } + + public void setProjectHandle(IProject newProject) { + fNewProject= newProject; + } + + /** + * @see NewJavaProjectWizardPage#getLocationPath() + */ + protected IPath getLocationPath() { + return null; + } + + /** + * @see NewJavaProjectWizardPage#getProjectHandle() + */ + protected IProject getProjectHandle() { + return fNewProject; + } + + public void initBuildPath() { + super.initBuildPaths(); + } + + } + + + private static final String PROJECT_NAME = "DummyProject"; + private static final String OTHER_PROJECT_NAME = "OtherProject"; + + + private TestNewJavaProjectWizardPage fWizardPage; + + public NewJavaProjectWizardTest(String name) { + super(name); + } + + /** + * @see TestCase#setUp() + */ + protected void setUp() throws Exception { + super.setUp(); + + IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot(); + + IProject project= root.getProject(PROJECT_NAME); + + fWizardPage= new TestNewJavaProjectWizardPage(root); + fWizardPage.setProjectHandle(project); + } + + /** + * @see TestCase#tearDown() + */ + protected void tearDown() throws Exception { + IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot(); + IProject project= root.getProject(PROJECT_NAME); + if (project.exists()) { + project.delete(true, null); + } + + project= root.getProject(OTHER_PROJECT_NAME); + if (project.exists()) { + project.delete(true, null); + } + + super.tearDown(); + } + + private IPath getJREEntryPath() { + return JavaRuntime.getDefaultJREContainerEntry().getPath(); + } + + + private void assertBasicBuildPath(IProject project, IPath outputLocation, IClasspathEntry[] classpath) { + assertNotNull("a", outputLocation); + assertNotNull("b", classpath); + assertTrue("c", classpath.length == 2); + + if (PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.SRCBIN_FOLDERS_IN_NEWPROJ)) { + assertEquals("d", outputLocation, project.getFolder("bin").getFullPath()); + assertEquals("e", classpath[0].getPath(), project.getFolder("src").getFullPath()); + } else { + assertEquals("f", outputLocation, project.getFullPath()); + assertEquals("g", classpath[0].getPath(), project.getFullPath()); + } + assertEquals("h", classpath[1].getPath(), getJREEntryPath()); + } + + public void testBasicSet() throws Exception { + fWizardPage.initBuildPath(); + IProject project= fWizardPage.getProjectHandle(); + + IPath outputLocation= fWizardPage.getOutputLocation(); + IClasspathEntry[] classpath= fWizardPage.getRawClassPath(); + assertBasicBuildPath(project, outputLocation, classpath); + } + + + public void testBasicCreate() throws Exception { + IProject project= fWizardPage.getProjectHandle(); + + IRunnableWithProgress op= new WorkspaceModifyDelegatingOperation(fWizardPage.getRunnable()); + op.run(null); + + IJavaProject jproj= fWizardPage.getNewJavaProject(); + + assertEquals("a", jproj.getProject(), project); + + IPath outputLocation= jproj.getOutputLocation(); + IClasspathEntry[] classpath= jproj.getRawClasspath(); + assertBasicBuildPath(jproj.getProject(), outputLocation, classpath); + } + + public void testProjectChange() throws Exception { + fWizardPage.initBuildPath(); + IProject project= fWizardPage.getProjectHandle(); + + IPath outputLocation= fWizardPage.getOutputLocation(); + IClasspathEntry[] classpath= fWizardPage.getRawClassPath(); + assertBasicBuildPath(project, outputLocation, classpath); + + IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot(); + IProject otherProject= root.getProject(OTHER_PROJECT_NAME); + + // change the project before create + fWizardPage.setProjectHandle(otherProject); + + IRunnableWithProgress op= new WorkspaceModifyDelegatingOperation(fWizardPage.getRunnable()); + op.run(null); + + IJavaProject jproj= fWizardPage.getNewJavaProject(); + + assertEquals("a", jproj.getProject(), otherProject); + + IPath outputLocation1= fWizardPage.getOutputLocation(); + IClasspathEntry[] classpath1= fWizardPage.getRawClassPath(); + assertBasicBuildPath(otherProject, outputLocation1, classpath1); + } + + private void assertUserBuildPath(IProject project, IPath outputLocation, IClasspathEntry[] classpath) { + assertNotNull("a", outputLocation); + assertNotNull("b", classpath); + assertTrue("c", classpath.length == 3); + + assertEquals("d", outputLocation, project.getFolder("dbin").getFullPath()); + assertEquals("e", classpath[0].getPath(), project.getFolder("dsrc1").getFullPath()); + assertEquals("f", classpath[1].getPath(), project.getFolder("dsrc2").getFullPath()); + assertEquals("g", classpath[2].getPath(), getJREEntryPath()); + } + + public void testUserSet() throws Exception { + IProject project= fWizardPage.getProjectHandle(); + + IPath folderPath= project.getFolder("dbin").getFullPath(); + + IClasspathEntry[] entries= new IClasspathEntry[] { + JavaCore.newSourceEntry(project.getFolder("dsrc1").getFullPath()), + JavaCore.newSourceEntry(project.getFolder("dsrc2").getFullPath()) + }; + + fWizardPage.setDefaultOutputFolder(folderPath); + fWizardPage.setDefaultClassPath(entries, true); + fWizardPage.initBuildPath(); + + IPath outputLocation= fWizardPage.getOutputLocation(); + IClasspathEntry[] classpath= fWizardPage.getRawClassPath(); + assertUserBuildPath(project, outputLocation, classpath); + + fWizardPage.setDefaultOutputFolder(null); + fWizardPage.setDefaultClassPath(null, false); + fWizardPage.initBuildPath(); + + IPath outputLocation1= fWizardPage.getOutputLocation(); + IClasspathEntry[] classpath1= fWizardPage.getRawClassPath(); + assertBasicBuildPath(project, outputLocation1, classpath1); + } + + public void testUserCreate() throws Exception { + IProject project= fWizardPage.getProjectHandle(); + + IPath folderPath= project.getFolder("dbin").getFullPath(); + + IClasspathEntry[] entries= new IClasspathEntry[] { + JavaCore.newSourceEntry(project.getFolder("dsrc1").getFullPath()), + JavaCore.newSourceEntry(project.getFolder("dsrc2").getFullPath()) + }; + + fWizardPage.setDefaultOutputFolder(folderPath); + fWizardPage.setDefaultClassPath(entries, true); + + IRunnableWithProgress op= new WorkspaceModifyDelegatingOperation(fWizardPage.getRunnable()); + op.run(null); + + IJavaProject jproj= fWizardPage.getNewJavaProject(); + + assertEquals("a", jproj.getProject(), project); + + IPath outputLocation= jproj.getOutputLocation(); + IClasspathEntry[] classpath= jproj.getRawClasspath(); + assertUserBuildPath(jproj.getProject(), outputLocation, classpath); + } + + public void testReadExisting() throws Exception { + IProject project= fWizardPage.getProjectHandle(); + + IPath folderPath= project.getFolder("dbin").getFullPath(); + IClasspathEntry[] entries= new IClasspathEntry[] { + JavaCore.newSourceEntry(project.getFolder("dsrc1").getFullPath()), + JavaCore.newSourceEntry(project.getFolder("dsrc2").getFullPath()) + }; + + fWizardPage.setDefaultOutputFolder(folderPath); + fWizardPage.setDefaultClassPath(entries, true); + + IRunnableWithProgress op= new WorkspaceModifyDelegatingOperation(fWizardPage.getRunnable()); + op.run(null); + + IProject proj= fWizardPage.getNewJavaProject().getProject(); + + fWizardPage.setDefaultClassPath(null, false); + fWizardPage.setDefaultOutputFolder(null); + fWizardPage.setProjectHandle(proj); + + // reads from existing + fWizardPage.initBuildPath(); + + IPath outputLocation1= fWizardPage.getOutputLocation(); + IClasspathEntry[] classpath1= fWizardPage.getRawClassPath(); + assertUserBuildPath(project, outputLocation1, classpath1); + } + + public void testExistingOverwrite() throws Exception { + IProject project= fWizardPage.getProjectHandle(); + + IRunnableWithProgress op= new WorkspaceModifyDelegatingOperation(fWizardPage.getRunnable()); + op.run(null); + + IPath folderPath= project.getFolder("dbin").getFullPath(); + IClasspathEntry[] entries= new IClasspathEntry[] { + JavaCore.newSourceEntry(project.getFolder("dsrc1").getFullPath()), + JavaCore.newSourceEntry(project.getFolder("dsrc2").getFullPath()) + }; + + fWizardPage.setDefaultOutputFolder(folderPath); + fWizardPage.setDefaultClassPath(entries, true); + + // should overwrite existing + IRunnableWithProgress op1= new WorkspaceModifyDelegatingOperation(fWizardPage.getRunnable()); + op1.run(null); + + IJavaProject jproj= fWizardPage.getNewJavaProject(); + + IPath outputLocation1= jproj.getOutputLocation(); + IClasspathEntry[] classpath1= jproj.getRawClasspath(); + assertUserBuildPath(project, outputLocation1, classpath1); + } +} + + + |