Package cn.shenyanchao.ut.receiver

Source Code of cn.shenyanchao.ut.receiver.ExistTestReceiver

package cn.shenyanchao.ut.receiver;

import cn.shenyanchao.ut.builder.ClassTypeBuilder;
import cn.shenyanchao.ut.builder.CompilationUnitBuilder;
import cn.shenyanchao.ut.common.Consts;
import cn.shenyanchao.ut.common.FileComments;
import cn.shenyanchao.ut.utils.FileChecker;
import cn.shenyanchao.ut.utils.JavaParserUtils;
import cn.shenyanchao.ut.utils.MembersFilter;
import japa.parser.ast.Comment;
import japa.parser.ast.CompilationUnit;
import japa.parser.ast.ImportDeclaration;
import japa.parser.ast.PackageDeclaration;
import japa.parser.ast.body.MethodDeclaration;
import japa.parser.ast.body.TypeDeclaration;

import java.io.File;
import java.util.List;

/**
* @author shenyanchao
*         <p/>
*         Date:  6/20/13
*         Time:  7:15 PM
*/
public class ExistTestReceiver extends AbstractReceiver {

    private CompilationUnit sourceCU;

    private CompilationUnit testCU;

    private File javaFile;

    public ExistTestReceiver(CompilationUnit sourceCU, File javaFile, CompilationUnit testCU) {
        this.sourceCU = sourceCU;
        this.javaFile = javaFile;
        this.testCU = testCU;
    }

    @Override
    public CompilationUnitBuilder createCU() {
        CompilationUnitBuilder compilationUnitBuilder = new CompilationUnitBuilder();
        compilationUnitBuilder.buildComment(FileComments.GENERATOR_COMMENT);
        TypeDeclaration typeDeclaration = JavaParserUtils.findTargetTypeDeclaration(sourceCU, javaFile);
        List<MethodDeclaration> methodDeclarations = MembersFilter.findMethodsFrom(typeDeclaration);
        String className = typeDeclaration.getName();
        ClassTypeBuilder classTypeBuilder = new ClassTypeBuilder(className + Consts.TEST_SUFFIX);

        List<Comment> existComments = testCU.getComments();
        compilationUnitBuilder.addComments(existComments);
        PackageDeclaration existPackageDeclaration = testCU.getPackage();
        compilationUnitBuilder.addPackage(existPackageDeclaration);
        //process import
        List<ImportDeclaration> existImports = testCU.getImports();
        compilationUnitBuilder.addImports(existImports);
        //process methods
        for (MethodDeclaration methodDeclaration : methodDeclarations) {
            String methodName = methodDeclaration.getName();
            MethodDeclaration testMethodDeclaration = FileChecker.isTestCaseExist(testCU,
                    methodDeclaration);
            boolean methodExist = (testMethodDeclaration == null ? false : true);
            if (!methodExist) {
                classTypeBuilder.buildMethod(methodName + Consts.TEST_SUFFIX, methodDeclaration);
            } else if (methodExist) {
                classTypeBuilder.addMethod(testMethodDeclaration);
            }
        }
        compilationUnitBuilder.buildClass(classTypeBuilder.build());
        return compilationUnitBuilder;
    }
}
TOP

Related Classes of cn.shenyanchao.ut.receiver.ExistTestReceiver

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.