package org.projectusus.autotestsuite.core.internal;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.hasItem;
import org.eclipse.jdt.core.IJavaProject;
import org.junit.Test;
public class RequiredJavaProjectsTest extends TestsWithProjectDependencies {
private final RequiredJavaProjects finder = new RequiredJavaProjects( projects() );
@Test
public void dependencyLessProjectFindsNothing() throws Exception {
IJavaProject project = addProject( "p1" );
assertThat( finder.findFor( project ).size(), is( 1 ) );
assertThat( finder.findFor( project ), hasItem( project ) );
}
@Test
public void singleDependencyIsFound() throws Exception {
IJavaProject project = addProject( "p1" );
IJavaProject dependency = addProject( "p2" );
addDependency( project, dependency );
assertThat( finder.findFor( project ).size(), is( 2 ) );
assertThat( finder.findFor( project ), hasItem( project ) );
assertThat( finder.findFor( project ), hasItem( dependency ) );
}
@Test
public void multipleDependenciesAreFound() throws Exception {
IJavaProject project = addProject( "p1" );
IJavaProject dependencyLeft = addProject( "p2" );
addDependency( project, dependencyLeft );
IJavaProject dependencyRight = addProject( "p3" );
addDependency( project, dependencyRight );
assertThat( finder.findFor( project ).size(), is( 3 ) );
assertThat( finder.findFor( project ), hasItem( project ) );
assertThat( finder.findFor( project ), hasItem( dependencyLeft ) );
assertThat( finder.findFor( project ), hasItem( dependencyRight ) );
}
@Test
public void indirectDependencyIsFound() throws Exception {
IJavaProject project = addProject( "p1" );
IJavaProject directDependency = addProject( "p2" );
addDependency( project, directDependency );
IJavaProject indirectDependency = addProject( "p3" );
addDependency( directDependency, indirectDependency );
assertThat( finder.findFor( project ).size(), is( 3 ) );
assertThat( finder.findFor( project ), hasItem( project ) );
assertThat( finder.findFor( project ), hasItem( directDependency ) );
assertThat( finder.findFor( project ), hasItem( indirectDependency ) );
}
}