Package junit.extensions.eclipse.quick

Source Code of junit.extensions.eclipse.quick.JavaTypes

package junit.extensions.eclipse.quick;

import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IImportDeclaration;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.ITypeHierarchy;
import org.eclipse.jdt.core.JavaModelException;

public class JavaTypes {
  private static final char ENCLOSING_TYPE_SEPARATOR = '.';
  public static final String TEST_INTERFACE_NAME= "junit.framework.Test"; //$NON-NLS-1$
  private static final String TEST_ANNOTATION_NAME = "Test"; //$NON-NLS-1$
  static final String TEST_ANNOTATION_FULL_NAME = "org.junit.Test"; //$NON-NLS-1$

    public static boolean isTest(IType type) throws JavaModelException {
    ITypeHierarchy typeHier= type.newSupertypeHierarchy(null);
    IType[] superInterfaces= typeHier.getAllInterfaces();
    for (int i= 0; i < superInterfaces.length; i++) {
      if (superInterfaces[i].getFullyQualifiedName(ENCLOSING_TYPE_SEPARATOR).equals(TEST_INTERFACE_NAME))
        return true;
    }
    IMethod[] methods = type.getMethods();
    for (int i = 0; i < methods.length; i++) {
      IMethod method = methods[i];
      IAnnotation[] annotations = method.getAnnotations();
      for (int j = 0; j < annotations.length; j++) {
        IAnnotation annotation = annotations[j];
        if(annotation.getElementName().equals(TEST_ANNOTATION_NAME) ||
            annotation.getElementName().equals(TEST_ANNOTATION_FULL_NAME)){
          return true;
        }
      }
    }
    ICompilationUnit compilationUnit = type.getCompilationUnit();
    IImportDeclaration importDeclaration = compilationUnit.getImport(TEST_ANNOTATION_FULL_NAME);
    return importDeclaration.exists();
  }
}
TOP

Related Classes of junit.extensions.eclipse.quick.JavaTypes

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.