package org.projectusus.metrics.util;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.projectusus.metrics.util.TypeBindingMocker.createFile;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
import org.eclipse.jdt.core.dom.SimpleName;
import org.projectusus.core.filerelations.model.ASTNodeHelper;
import org.projectusus.core.metrics.MetricsCollector;
import org.projectusus.core.statistics.UsusModelProvider;
public class Setup {
public static <T extends AbstractTypeDeclaration> T setupCollectorAndMockFor( MetricsCollector collector, Class<T> type, String name ) {
setupCollector( collector );
return setupMockFor( type, name );
}
public static void setupCollector( MetricsCollector collector ) {
collector.setup( createFile(), UsusModelProvider.getMetricsWriter() );
}
public static <T extends AbstractTypeDeclaration> T setupMockFor( Class<T> type, String name ) {
T node = mock( type );
Setup.addNameTo( node, name );
return node;
}
public static void addNameTo( AbstractTypeDeclaration theNode, String nodename ) {
SimpleName name = mock( SimpleName.class );
when( name.toString() ).thenReturn( nodename );
when( theNode.getName() ).thenReturn( name );
}
public static <T extends AbstractTypeDeclaration> T setupMockWithStartPosition( Class<T> type, String name, int startPosition, ASTNodeHelper nodeHelper ) {
T node = setupMockFor( type, name );
when( Integer.valueOf( nodeHelper.getStartPositionFor( node ) ) ).thenReturn( Integer.valueOf( startPosition ) );
return node;
}
}