Package com.puppycrawl.tools.checkstyle.comments

Source Code of com.puppycrawl.tools.checkstyle.comments.CommentsTest

////////////////////////////////////////////////////////////////////////////////
// checkstyle: Checks Java source code for adherence to a set of rules.
// Copyright (C) 2001-2014  Oliver Burn
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
////////////////////////////////////////////////////////////////////////////////
package com.puppycrawl.tools.checkstyle.comments;

import static com.puppycrawl.tools.checkstyle.api.TokenTypes.BLOCK_COMMENT_BEGIN;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.BLOCK_COMMENT_END;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.CLASS_DEF;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.COMMENT_CONTENT;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.IDENT;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.LCURLY;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.LITERAL_CLASS;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.LITERAL_PROTECTED;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.LITERAL_PUBLIC;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.LPAREN;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.METHOD_DEF;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.MODIFIERS;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.OBJBLOCK;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.PARAMETERS;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.RCURLY;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.RPAREN;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.SINGLE_LINE_COMMENT;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.SLIST;
import static com.puppycrawl.tools.checkstyle.api.TokenTypes.TYPE;

import java.io.File;

import org.junit.Test;

import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
import com.puppycrawl.tools.checkstyle.api.DetailAST;

public class CommentsTest extends BaseCheckTestSupport
{
   /*
    * +--CLASS_DEF [1,0]
    *     |
    *     +--MODIFIERS [1,0]
    *         |
    *         +--LITERAL_PUBLIC [1,0]
    *     +--LITERAL_CLASS [1,7]
    *     +--BLOCK_COMMENT_BEGIN [1,13]
    *         |
    *         +--COMMENT_CONTENT [1,15]
    *         +--BLOCK_COMMENT_END [3,4]
    *     +--IDENT [4,0]
    *     +--OBJBLOCK [5,0]
    *         |
    *         +--LCURLY [5,0]
    *             |
    *             +--SINGLE_LINE_COMMENT [5,2]
    *                 |
    *                 +--COMMENT_CONTENT [5,4]
    *         +--RCURLY [6,0]
    */
    private static DetailAST buildInput_1()
    {
        DetailAST classDef = new DetailAST();
        classDef.setType(CLASS_DEF);
        classDef.setText("CLASS_DEF");
        classDef.setLineNo(1);
        classDef.setColumnNo(0);

        DetailAST modifiers = new DetailAST();
        modifiers.setType(MODIFIERS);
        modifiers.setText("MODIFIERS");
        modifiers.setLineNo(1);
        modifiers.setColumnNo(0);

        DetailAST literalPublic = new DetailAST();
        literalPublic.setType(LITERAL_PUBLIC);
        literalPublic.setText("public");
        literalPublic.setLineNo(1);
        literalPublic.setColumnNo(0);

        DetailAST literalClass = new DetailAST();
        literalClass.setType(LITERAL_CLASS);
        literalClass.setText("class");
        literalClass.setLineNo(1);
        literalClass.setColumnNo(7);

        DetailAST blockCommentStart = new DetailAST();
        blockCommentStart.setType(BLOCK_COMMENT_BEGIN);
        blockCommentStart.setText("/*");
        blockCommentStart.setLineNo(1);
        blockCommentStart.setColumnNo(13);

        DetailAST blockCommentContent = new DetailAST();
        blockCommentContent.setType(COMMENT_CONTENT);
        blockCommentContent.setText("\n    i'mcomment567\n    ");
        blockCommentContent.setLineNo(1);
        blockCommentContent.setColumnNo(15);

        DetailAST blockCommentEnd = new DetailAST();
        blockCommentEnd.setType(BLOCK_COMMENT_END);
        blockCommentEnd.setText("*/");
        blockCommentEnd.setLineNo(3);
        blockCommentEnd.setColumnNo(4);

        DetailAST ident = new DetailAST();
        ident.setType(IDENT);
        ident.setText("InputCommentsTest");
        ident.setLineNo(4);
        ident.setColumnNo(0);

        DetailAST objBlock = new DetailAST();
        objBlock.setType(OBJBLOCK);
        objBlock.setText("OBJBLOCK");
        objBlock.setLineNo(5);
        objBlock.setColumnNo(0);

        DetailAST lcurly = new DetailAST();
        lcurly.setType(LCURLY);
        lcurly.setText("{");
        lcurly.setLineNo(5);
        lcurly.setColumnNo(0);

        DetailAST slComment = new DetailAST();
        slComment.setType(SINGLE_LINE_COMMENT);
        slComment.setText("//");
        slComment.setLineNo(5);
        slComment.setColumnNo(2);

        DetailAST slCommentContent = new DetailAST();
        slCommentContent.setType(COMMENT_CONTENT);
        slCommentContent.setText(" comment to left curly brace\n");
        slCommentContent.setLineNo(5);
        slCommentContent.setColumnNo(4);

        DetailAST rcurly = new DetailAST();
        rcurly.setType(RCURLY);
        rcurly.setText("}");
        rcurly.setLineNo(6);
        rcurly.setColumnNo(0);

        classDef.setFirstChild(modifiers);
        modifiers.setNextSibling(literalClass);
        literalClass.setNextSibling(blockCommentStart);
        blockCommentStart.setNextSibling(ident);
        ident.setNextSibling(objBlock);

        modifiers.setFirstChild(literalPublic);

        blockCommentStart.setFirstChild(blockCommentContent);
        blockCommentContent.setNextSibling(blockCommentEnd);

        objBlock.setFirstChild(lcurly);
        lcurly.setNextSibling(slComment);
        slComment.setNextSibling(rcurly);

        slComment.setFirstChild(slCommentContent);

        return classDef;
    }

    /*
     * +--CLASS_DEF [2,0]
     *     |
     *     +--MODIFIERS [2,0]
     *     +--SINGLE_LINE_COMMENT [1,0]
     *         |
     *         +--COMMENT_CONTENT [1,2]
     *     +--LITERAL_CLASS [2,0]
     *     +--IDENT [2,6]
     *     +--OBJBLOCK [3,0]
     *         |
     *         +--LCURLY [3,0]
     *         +--METHOD_DEF [9,4]
     *                 |
     *                 +--MODIFIERS [9,4]
     *                     |
     *                     +--BLOCK_COMMENT_BEGIN [4,4]
     *                         |
     *                         +--COMMENT_CONTENT [4,6]
     *                         +--BLOCK_COMMENT_END [8,5]
     *                     +--LITERAL_PROTECTED [9,4]
     *                 +--TYPE [9,14]
     *                     |
     *                     +--IDENT [9,14]
     *                 +--IDENT [9,21]
     *                 +--LPAREN [9,25]
     *                 +--PARAMETERS [9,26]
     *                 +--RPAREN [9,26]
     *                 +--SLIST [10,4]
     *                     |
     *                     +--RCURLY [11,4]
     *         +--RCURLY [12,0]
     */
    private static DetailAST buildInput_2()
    {
        DetailAST classDef = new DetailAST();
        classDef.setType(CLASS_DEF);
        classDef.setText("CLASS_DEF");
        classDef.setLineNo(2);
        classDef.setColumnNo(0);

        DetailAST modifiers = new DetailAST();
        modifiers.setType(MODIFIERS);
        modifiers.setText("MODIFIERS");
        modifiers.setLineNo(2);
        modifiers.setColumnNo(0);

        classDef.setFirstChild(modifiers);

        DetailAST slComment = new DetailAST();
        slComment.setType(SINGLE_LINE_COMMENT);
        slComment.setText("//");
        slComment.setLineNo(1);
        slComment.setColumnNo(0);

        DetailAST slCommentContent = new DetailAST();
        slCommentContent.setType(COMMENT_CONTENT);
        slCommentContent.setText(" my class\n");
        slCommentContent.setLineNo(1);
        slCommentContent.setColumnNo(2);

        slComment.setFirstChild(slCommentContent);
        modifiers.setNextSibling(slComment);

        DetailAST literalClass = new DetailAST();
        literalClass.setType(LITERAL_CLASS);
        literalClass.setText("class");
        literalClass.setLineNo(2);
        literalClass.setColumnNo(0);

        slComment.setNextSibling(literalClass);

        DetailAST identClassName = new DetailAST();
        identClassName.setType(IDENT);
        identClassName.setText("A");
        identClassName.setLineNo(2);
        identClassName.setColumnNo(6);

        literalClass.setNextSibling(identClassName);

        DetailAST objBlock = new DetailAST();
        objBlock.setType(OBJBLOCK);
        objBlock.setText("OBJBLOCK");
        objBlock.setLineNo(3);
        objBlock.setColumnNo(0);

        identClassName.setNextSibling(objBlock);

        DetailAST lcurly = new DetailAST();
        lcurly.setType(LCURLY);
        lcurly.setText("{");
        lcurly.setLineNo(3);
        lcurly.setColumnNo(0);

        objBlock.setFirstChild(lcurly);

        DetailAST methodDef = new DetailAST();
        methodDef.setType(METHOD_DEF);
        methodDef.setText("METHOD_DEF");
        methodDef.setLineNo(9);
        methodDef.setColumnNo(4);

        lcurly.setNextSibling(methodDef);

        DetailAST rcurly = new DetailAST();
        rcurly.setType(RCURLY);
        rcurly.setText("}");
        rcurly.setLineNo(12);
        rcurly.setColumnNo(0);

        methodDef.setNextSibling(rcurly);

        DetailAST methodModifiers = new DetailAST();
        methodModifiers.setType(MODIFIERS);
        methodModifiers.setText("MODIFIERS");
        methodModifiers.setLineNo(9);
        methodModifiers.setColumnNo(4);

        methodDef.setFirstChild(methodModifiers);

        DetailAST methodType = new DetailAST();
        methodType.setType(TYPE);
        methodType.setText("TYPE");
        methodType.setLineNo(9);
        methodType.setColumnNo(14);

        methodModifiers.setNextSibling(methodType);

        DetailAST identMethodType = new DetailAST();
        identMethodType.setType(IDENT);
        identMethodType.setText("String");
        identMethodType.setLineNo(9);
        identMethodType.setColumnNo(14);

        methodType.setFirstChild(identMethodType);

        DetailAST identMethodName = new DetailAST();
        identMethodName.setType(IDENT);
        identMethodName.setText("line");
        identMethodName.setLineNo(9);
        identMethodName.setColumnNo(21);

        methodType.setNextSibling(identMethodName);

        DetailAST lparen = new DetailAST();
        lparen.setType(LPAREN);
        lparen.setText("(");
        lparen.setLineNo(9);
        lparen.setColumnNo(25);

        identMethodName.setNextSibling(lparen);

        DetailAST parameters = new DetailAST();
        parameters.setType(PARAMETERS);
        parameters.setText("PARAMETERS");
        parameters.setLineNo(9);
        parameters.setColumnNo(26);

        lparen.setNextSibling(parameters);

        DetailAST rparen = new DetailAST();
        rparen.setType(RPAREN);
        rparen.setText(")");
        rparen.setLineNo(9);
        rparen.setColumnNo(26);

        parameters.setNextSibling(rparen);

        DetailAST slist = new DetailAST();
        slist.setType(SLIST);
        slist.setText("{");
        slist.setLineNo(10);
        slist.setColumnNo(4);

        rparen.setNextSibling(slist);

        DetailAST methodRcurly = new DetailAST();
        methodRcurly.setType(RCURLY);
        methodRcurly.setText("}");
        methodRcurly.setLineNo(11);
        methodRcurly.setColumnNo(4);

        slist.setFirstChild(methodRcurly);

        DetailAST blockCommentStart = new DetailAST();
        blockCommentStart.setType(BLOCK_COMMENT_BEGIN);
        blockCommentStart.setText("/*");
        blockCommentStart.setLineNo(4);
        blockCommentStart.setColumnNo(4);

        DetailAST blockCommentContent = new DetailAST();
        blockCommentContent.setType(COMMENT_CONTENT);
        blockCommentContent.setText("*\n"
                + "     * Lines <b>method</b>.\n"
                + "     * \n"
                + "     * @return string.\n"
                + "     ");
        blockCommentContent.setLineNo(4);
        blockCommentContent.setColumnNo(6);

        blockCommentStart.setFirstChild(blockCommentContent);

        DetailAST blockCommentEnd = new DetailAST();
        blockCommentEnd.setType(BLOCK_COMMENT_END);
        blockCommentEnd.setText("*/");
        blockCommentEnd.setLineNo(8);
        blockCommentEnd.setColumnNo(5);

        blockCommentContent.setNextSibling(blockCommentEnd);
        methodModifiers.setFirstChild(blockCommentStart);

        DetailAST literalProtected = new DetailAST();
        literalProtected.setType(LITERAL_PROTECTED);
        literalProtected.setText("protected");
        literalProtected.setLineNo(9);
        literalProtected.setColumnNo(4);

        blockCommentStart.setNextSibling(literalProtected);

        return classDef;
    }

    @Test
    public void testCompareExpectedTreeWithInput_1() throws Exception
    {
        DefaultConfiguration checkConfig = createCheckConfig(CompareTreesWithComments.class);
        CompareTreesWithComments.expectedTree = buildInput_1();
        final String[] expected = {};
        verify(checkConfig, getPath("comments" + File.separator
                + "InputCommentsTest_1.java"), expected);
    }

    @Test
    public void testCompareExpectedTreeWithInput_2() throws Exception
    {
        DefaultConfiguration checkConfig = createCheckConfig(CompareTreesWithComments.class);
        CompareTreesWithComments.expectedTree = buildInput_2();
        final String[] expected = {};
        verify(checkConfig, getPath("comments" + File.separator
                + "InputCommentsTest_2.java"), expected);
    }
}
TOP

Related Classes of com.puppycrawl.tools.checkstyle.comments.CommentsTest

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.