package net.sf.eclipsefp.haskell.core.internal.project;
import java.io.IOException;
import net.sf.eclipsefp.haskell.core.test.TestCaseWithPreferences;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
public class ProjectCreationOperationPDETestCase extends TestCaseWithPreferences {
protected static final String PROJECT_NAME = "hello.haskell.world";
private IWorkspaceRoot fWorkspaceRoot;
private ProjectCreationOperation fOperation;
public ProjectCreationOperationPDETestCase() {
super();
}
@Override
protected void setUp() throws Exception {
super.setUp();
fWorkspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
fOperation = createOperation();
fOperation.setProjectName(PROJECT_NAME);
}
protected ProjectCreationOperation createOperation() {
ProjectCreationOperation result = new ProjectCreationOperation();
ProjectModelFilesOp modelFiles=new ProjectModelFilesOp() ;
modelFiles.setExecutable( true );
result.setExtraOperation( modelFiles);
return result;
}
protected ProjectCreationOperation getOperation() {
return fOperation;
}
protected IWorkspaceRoot getWorkspaceRoot() {
return fWorkspaceRoot;
}
protected void runOperation() {
fOperation.run(new NullProgressMonitor());
}
protected static void assertValid(final IProject prj) {
assertTrue("Project was not created", prj.exists());
assertTrue("Project is closed", prj.isOpen());
}
protected String defaultLocation() {
return Platform.getLocation().toString() + '/' + PROJECT_NAME;
}
protected void assertSameLocation(final String expected, final String actual) throws IOException {
String expectedPath = new Path(expected).toFile().getCanonicalPath();
String actualPath = new Path(actual).toFile().getCanonicalPath();
assertEquals(expectedPath, actualPath);
}
@Override
protected void tearDown() throws Exception {
deleteCreatedProject();
super.tearDown();
}
private void deleteCreatedProject() throws CoreException {
IProject prj = fWorkspaceRoot.getProject(PROJECT_NAME);
prj.delete(true, true, null);
}
}