// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.core.internal.project; import static java.util.Arrays.asList; import static org.eclipse.core.resources.ResourcesPlugin.getWorkspace; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.junit.Rule; import org.junit.Test; import org.projectusus.core.internal.JavaProject; import org.projectusus.core.internal.Workspace; import org.projectusus.core.project.FindUsusProjects; import org.projectusus.core.project2.IUSUSProject; public class FindUsusProjectsPDETest { @Rule public Workspace workspace = new Workspace(); @Rule public JavaProject project1 = new JavaProject(); @Rule public JavaProject project2 = new JavaProject(); @Test public void empty() { List<IProject> result = new FindUsusProjects( new IProject[0] ).compute(); assertTrue( result.isEmpty() ); } @Test public void singleUsusProject() { assertEquals( 2, computeWithAllProjects().size() ); } @Test public void singleNonUsusProject() throws CoreException { project1.disableUsus(); workspace.buildFullyAndWait(); assertEquals( 1, computeWithAllProjects().size() ); project2.disableUsus(); workspace.buildFullyAndWait(); assertEquals( 0, computeWithAllProjects().size() ); } @Test public void noProjects() throws CoreException { project1.delete(); workspace.buildFullyAndWait(); assertEquals( 1, computeWithAllProjects().size() ); project2.delete(); workspace.buildFullyAndWait(); assertEquals( 0, computeWithAllProjects().size() ); } @Test public void multipleProjectsMixed() throws CoreException { IProject bla = createAdditionalProject( "bla", true ); //$NON-NLS-1$ IProject blubb = createAdditionalProject( "blubb", false ); //$NON-NLS-1$ List<IProject> result = computeWithAllProjects(); assertEquals( 3, result.size() ); assertTrue( result.contains( project1.get() ) ); assertTrue( result.contains( bla ) ); bla.delete( true, new NullProgressMonitor() ); blubb.delete( true, new NullProgressMonitor() ); } @Test public void mixedCandidates() { Object[] candidates = new Object[] { new Object(), project1.get() }; List<IProject> result = new FindUsusProjects( candidates ).compute(); assertEquals( 1, result.size() ); assertEquals( project1.get(), result.get( 0 ) ); } private List<IProject> computeWithAllProjects() { return new FindUsusProjects( getAllProjectsFromWS() ).compute(); } private List<IProject> getAllProjectsFromWS() { return asList( getWorkspace().getRoot().getProjects() ); } private IProject createAdditionalProject( String name, boolean makeUsusProject ) throws CoreException { IProject result = getWorkspace().getRoot().getProject( name ); result.create( new NullProgressMonitor() ); result.open( new NullProgressMonitor() ); IUSUSProject ususProject = (IUSUSProject)result.getAdapter( IUSUSProject.class ); ususProject.setUsusProject( makeUsusProject ); workspace.buildFullyAndWait(); return result; } }