package org.projectusus.autotestsuite.core.internal;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaModelException;
abstract class TestsWithProjectDependencies {
private final Map<IJavaProject, Set<String>> projects = new HashMap<IJavaProject, Set<String>>();
IAllJavaProjects projects() {
return new IAllJavaProjects() {
public IJavaProject[] find() {
Set<IJavaProject> all = projects.keySet();
return all.toArray( new IJavaProject[all.size()] );
}
};
}
IJavaProject addProject( String name ) throws JavaModelException {
IJavaProject project = mock( IJavaProject.class );
when( project.getElementName() ).thenReturn( name );
when( project.toString() ).thenReturn( "Mock project: " + name );
projects.put( project, new HashSet<String>() );
wireMockDependencies( project );
return project;
}
void addDependency( IJavaProject project, IJavaProject dependency ) throws JavaModelException {
projects.get( project ).add( dependency.getElementName() );
wireMockDependencies( project );
}
void wireMockDependencies( IJavaProject project ) throws JavaModelException {
when( project.getRequiredProjectNames() ).thenReturn( allDependencyNamesFor( project ) );
}
String[] allDependencyNamesFor( IJavaProject project ) {
Set<String> dependencies = projects.get( project );
return dependencies.toArray( new String[dependencies.size()] );
}
}