blob: cdd1299bfb70c896bf4e3b0cd1534e5b59ef032f [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
// checkstyle: Checks Java source code for adherence to a set of rules.
// Copyright (C) 2001-2017 the original author or authors.
//
// 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.checks.whitespace;
import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.MSG_WS_FOLLOWED;
import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.MSG_WS_ILLEGAL_FOLLOW;
import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.MSG_WS_NOT_PRECEDED;
import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.MSG_WS_PRECEDED;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Test;
import antlr.CommonHiddenStreamToken;
import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
import com.puppycrawl.tools.checkstyle.utils.CommonUtils;
public class GenericWhitespaceCheckTest
extends AbstractModuleTestSupport {
@Override
protected String getPackageLocation() {
return "com/puppycrawl/tools/checkstyle/checks/whitespace/genericwhitespace";
}
@Test
public void testGetRequiredTokens() {
final GenericWhitespaceCheck checkObj = new GenericWhitespaceCheck();
final int[] expected = {
TokenTypes.GENERIC_START,
TokenTypes.GENERIC_END,
};
assertArrayEquals("Default required tokens are invalid",
expected, checkObj.getRequiredTokens());
}
@Test
public void testDefault() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = {
"16:13: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
"16:15: " + getCheckMessage(MSG_WS_FOLLOWED, "<"),
"16:23: " + getCheckMessage(MSG_WS_PRECEDED, ">"),
"16:43: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
"16:45: " + getCheckMessage(MSG_WS_FOLLOWED, "<"),
"16:53: " + getCheckMessage(MSG_WS_PRECEDED, ">"),
"17:13: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
"17:15: " + getCheckMessage(MSG_WS_FOLLOWED, "<"),
"17:20: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
"17:22: " + getCheckMessage(MSG_WS_FOLLOWED, "<"),
"17:30: " + getCheckMessage(MSG_WS_PRECEDED, ">"),
"17:32: " + getCheckMessage(MSG_WS_FOLLOWED, ">"),
"17:32: " + getCheckMessage(MSG_WS_PRECEDED, ">"),
"17:52: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
"17:54: " + getCheckMessage(MSG_WS_FOLLOWED, "<"),
"17:59: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
"17:61: " + getCheckMessage(MSG_WS_FOLLOWED, "<"),
"17:69: " + getCheckMessage(MSG_WS_PRECEDED, ">"),
"17:71: " + getCheckMessage(MSG_WS_FOLLOWED, ">"),
"17:71: " + getCheckMessage(MSG_WS_PRECEDED, ">"),
"30:17: " + getCheckMessage(MSG_WS_NOT_PRECEDED, "<"),
"30:21: " + getCheckMessage(MSG_WS_ILLEGAL_FOLLOW, ">"),
"42:21: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
"42:30: " + getCheckMessage(MSG_WS_FOLLOWED, ">"),
"60:60: " + getCheckMessage(MSG_WS_NOT_PRECEDED, "&"),
"63:60: " + getCheckMessage(MSG_WS_FOLLOWED, ">"),
};
verify(checkConfig, getPath("InputGenericWhitespaceDefault.java"), expected);
}
@Test
public void testAtTheStartOfTheLine() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = {
"10:1: " + getCheckMessage(MSG_WS_PRECEDED, ">"),
"12:1: " + getCheckMessage(MSG_WS_PRECEDED, "<"),
};
verify(checkConfig, getPath("InputGenericWhitespaceAtStartOfTheLine.java"), expected);
}
@Test
public void testNestedGeneric() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = {
"11:2: " + getCheckMessage(MSG_WS_NOT_PRECEDED, "&"),
};
verify(checkConfig, getPath("InputGenericWhitespaceNested.java"), expected);
}
@Test
public void testList() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = CommonUtils.EMPTY_STRING_ARRAY;
verify(checkConfig, getPath("InputGenericWhitespaceList.java"), expected);
}
@Test
public void testInnerClass() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = CommonUtils.EMPTY_STRING_ARRAY;
verify(checkConfig, getPath("InputGenericWhitespaceInnerClass.java"), expected);
}
@Test
public void testMethodReferences() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = CommonUtils.EMPTY_STRING_ARRAY;
verify(checkConfig, getPath("InputGenericWhitespaceMethodRef1.java"), expected);
}
@Test
public void testMethodReferences2() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = {
"10:70: " + getCheckMessage(MSG_WS_FOLLOWED, ">"),
};
verify(checkConfig, getPath("InputGenericWhitespaceMethodRef2.java"), expected);
}
@Test
public void testGenericEndsTheLine() throws Exception {
final DefaultConfiguration checkConfig = createModuleConfig(GenericWhitespaceCheck.class);
final String[] expected = CommonUtils.EMPTY_STRING_ARRAY;
verify(checkConfig, getPath("InputGenericWhitespaceEndsTheLine.java"), expected);
}
@Test
public void testGetAcceptableTokens() {
final GenericWhitespaceCheck genericWhitespaceCheckObj = new GenericWhitespaceCheck();
final int[] actual = genericWhitespaceCheckObj.getAcceptableTokens();
final int[] expected = {
TokenTypes.GENERIC_START,
TokenTypes.GENERIC_END,
};
assertArrayEquals("Default acceptable tokens are invalid", expected, actual);
}
@Test
public void testWrongTokenType() {
final GenericWhitespaceCheck genericWhitespaceCheckObj = new GenericWhitespaceCheck();
final DetailAST ast = new DetailAST();
ast.initialize(new CommonHiddenStreamToken(TokenTypes.INTERFACE_DEF, "interface"));
try {
genericWhitespaceCheckObj.visitToken(ast);
fail("exception expected");
}
catch (IllegalArgumentException ex) {
assertEquals("Invalid exception message",
"Unknown type interface[0x-1]", ex.getMessage());
}
}
}