package org.projectusus.metrics.test; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.projectusus.metrics.util.TypeBindingMocker.createTypeBinding; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.projectusus.core.filerelations.model.ASTNodeHelper; import org.projectusus.metrics.util.ClassValueVisitor; import org.projectusus.metrics.util.MethodValueVisitor; public class CollectorTestHelper { protected ClassValueVisitor classVisitor; protected MethodValueVisitor methodVisitor; protected ASTNodeHelper nodeHelper; protected ASTNodeHelper setupNodeHelperForMethod( String classname ) throws JavaModelException { ASTNodeHelper helper = setupNodeHelperForClass(); TypeDeclaration parent = setupMockFor( TypeDeclaration.class, classname ); when( helper.findEnclosingClassOf( org.mockito.Matchers.any( MethodDeclaration.class ) ) ).thenReturn( parent ); when( Integer.valueOf( helper.getStartPositionFor( org.mockito.Matchers.any( ASTNode.class ) ) ) ).thenReturn( Integer.valueOf( 1 ) ); return helper; } protected ASTNodeHelper setupNodeHelperForClass() throws JavaModelException { return setupNodeHelperForClass( "Classname", "packagename" ); } protected ASTNodeHelper setupNodeHelperForClass( String classname, String packagename ) throws JavaModelException { ASTNodeHelper helper = mock( ASTNodeHelper.class ); ITypeBinding typeBinding = createTypeBinding( classname, packagename ); when( helper.resolveBindingOf( org.mockito.Matchers.any( AbstractTypeDeclaration.class ) ) ).thenReturn( typeBinding ); return helper; } protected <T extends AbstractTypeDeclaration> T setupMockFor( Class<T> type, String name ) { T node = mock( type ); SimpleName nodename = createSimpleNameMockWithName( name ); when( node.getName() ).thenReturn( nodename ); return node; } protected MethodDeclaration setupMethodDeclMock( String name ) { MethodDeclaration node = mock( MethodDeclaration.class ); SimpleName nodename = createSimpleNameMockWithName( name ); when( node.getName() ).thenReturn( nodename ); return node; } private SimpleName createSimpleNameMockWithName( String nodename ) { SimpleName name = mock( SimpleName.class ); when( name.toString() ).thenReturn( nodename ); return name; } }