// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de
package net.sf.eclipsefp.haskell.core.project;
import java.lang.reflect.InvocationTargetException;
import net.sf.eclipsefp.haskell.core.internal.project.ProjectCreationOperation;
import net.sf.eclipsefp.haskell.core.internal.project.ProjectCreationOperationPDETestCase;
import net.sf.eclipsefp.haskell.core.internal.project.ProjectModelFilesOp;
import net.sf.eclipsefp.haskell.core.preferences.ICorePreferenceNames;
import net.sf.eclipsefp.haskell.util.FileUtil;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
public class HaskellProjectCreationOperation_PDETest extends
ProjectCreationOperationPDETestCase {
@Override
protected ProjectCreationOperation createOperation() {
getCorePrefs().putBoolean( ICorePreferenceNames.FOLDERS_IN_NEW_PROJECT, true );
HaskellProjectCreationOperation result
= new HaskellProjectCreationOperation( );
ProjectModelFilesOp op=new ProjectModelFilesOp();
op.setExecutable( true );
result.setExtraOperation( op );
return result;
}
public void testAddsHaskellNature() throws InvocationTargetException,
InterruptedException, CoreException {
runOperation();
IProject prj = getWorkspaceRoot().getProject( PROJECT_NAME );
assertNotNull( prj.getNature( HaskellNature.NATURE_ID ) );
}
public void testCreatesDirectoriesFromPreferences()
throws InvocationTargetException, InterruptedException {
getCorePrefs().put( ICorePreferenceNames.FOLDERS_SRC, "customSrc" );
// getCorePrefs().put( ICorePreferenceNames.FOLDERS_OUT, "customOut" );
runOperation();
IProject prj = getWorkspaceRoot().getProject( PROJECT_NAME );
assertValid( prj.getFolder( "customSrc" ) );
assertValid( prj.getFile( "customSrc/Main.hs" ) );
// assertValid( prj.getFolder( "customOut" ) );
}
public void testCreatesDescriptorFile() throws InvocationTargetException,
InterruptedException {
getCorePrefs().put( ICorePreferenceNames.FOLDERS_SRC, FileUtil.DEFAULT_FOLDER_SRC );
runOperation();
IProject prj = getWorkspaceRoot().getProject( PROJECT_NAME );
// IFile f = prj.getFile( HaskellProjectManager.HASKELL_PROJECT_DESCRIPTOR );
// assertValid( f );
assertValid( prj.getFile( prj.getName() + ".cabal" ) );
assertValid( prj.getFile( "Setup.hs" ) );
assertValid( prj.getFile( "src/Main.hs" ) );
}
// public void testSetsUpProjectFoldersFromPreferences() throws Exception {
// getCorePrefs().put( ICorePreferenceNames.FOLDERS_SRC, "mySrc" );
// getCorePrefs().put( ICorePreferenceNames.FOLDERS_OUT, "myOut" );
// getCorePrefs().put( ICorePreferenceNames.TARGET_BINARY, "myBinary" );
// getCorePrefs().put( ICorePreferenceNames.SELECTED_COMPILER, "null" );
// runOperation();
// IProject prj = getWorkspaceRoot().getProject( PROJECT_NAME );
// IFile f = prj.getFile( HaskellProjectManager.HASKELL_PROJECT_DESCRIPTOR );
// final String expectedContents = HaskellProjectManager
// .createDescriptorContent( "mySrc", "null" );
// assertEquals( expectedContents, readContents( f ) );
// }
public void testDoNotCreateFoldersWhenPreferenceDisabled() throws Exception {
getCorePrefs().putBoolean( ICorePreferenceNames.FOLDERS_IN_NEW_PROJECT, false );
runOperation();
IProject prj = getWorkspaceRoot().getProject( PROJECT_NAME );
assertValid( prj.getFile( prj.getName() + ".cabal" ) );
assertValid( prj.getFile( "Setup.hs" ) );
assertValid( prj.getFile( "Main.hs" ) );
assertNotValid( prj.getFolder( "src" ) );
}
// helping methods
//////////////////
// private String readContents( final IFile file ) throws Exception {
// StringBuffer buf = new StringBuffer( 1024 );
// InputStream input = file.getContents();
// BufferedReader reader = new BufferedReader( new InputStreamReader( input ) );
// String line;
// while( null != ( line = reader.readLine() ) ) {
// buf.append( line );
// buf.append( '\n' );
// }
// input.close();
// return buf.toString();
// }
private void assertValid( final IResource res ) {
assertNotNull( res );
assertTrue( "Resource does not exist", res.exists() );
}
private void assertNotValid( final IResource res ) {
assertNotNull( res );
assertFalse( "Resource does exist", res.exists() );
}
}