blob: 5e54ba7843a39d82c8f06dcd9977f4f533903370 [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.coding;
import static com.puppycrawl.tools.checkstyle.checks.coding.VariableDeclarationUsageDistanceCheck.MSG_KEY;
import static com.puppycrawl.tools.checkstyle.checks.coding.VariableDeclarationUsageDistanceCheck.MSG_KEY_EXT;
import org.junit.Assert;
import org.junit.Test;
import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
import com.puppycrawl.tools.checkstyle.utils.CommonUtils;
public class VariableDeclarationUsageDistanceCheckTest extends
AbstractModuleTestSupport {
@Override
protected String getPackageLocation() {
return "com/puppycrawl/tools/checkstyle/checks/coding/variabledeclarationusagedistance";
}
@Test
public void testGeneralLogic() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
checkConfig.addAttribute("allowedDistance", "1");
checkConfig.addAttribute("ignoreVariablePattern", "");
checkConfig.addAttribute("validateBetweenScopes", "true");
checkConfig.addAttribute("ignoreFinal", "false");
final String[] expected = {
"30: " + getCheckMessage(MSG_KEY, "a", 2, 1),
"38: " + getCheckMessage(MSG_KEY, "temp", 2, 1),
"44: " + getCheckMessage(MSG_KEY, "temp", 2, 1),
"57: " + getCheckMessage(MSG_KEY, "count", 2, 1),
"71: " + getCheckMessage(MSG_KEY, "count", 4, 1),
"96: " + getCheckMessage(MSG_KEY, "arg", 2, 1),
"144: " + getCheckMessage(MSG_KEY, "m", 3, 1),
"145: " + getCheckMessage(MSG_KEY, "n", 2, 1),
"184: " + getCheckMessage(MSG_KEY, "result", 2, 1),
"219: " + getCheckMessage(MSG_KEY, "t", 5, 1),
"222: " + getCheckMessage(MSG_KEY, "c", 3, 1),
"223: " + getCheckMessage(MSG_KEY, "d2", 3, 1),
"260: " + getCheckMessage(MSG_KEY, "selected", 2, 1),
"261: " + getCheckMessage(MSG_KEY, "model", 2, 1),
"287: " + getCheckMessage(MSG_KEY, "sw", 2, 1),
"300: " + getCheckMessage(MSG_KEY, "wh", 2, 1),
"343: " + getCheckMessage(MSG_KEY, "green", 2, 1),
"344: " + getCheckMessage(MSG_KEY, "blue", 3, 1),
"367: " + getCheckMessage(MSG_KEY, "intervalMs", 2, 1),
"454: " + getCheckMessage(MSG_KEY, "aOpt", 3, 1),
"455: " + getCheckMessage(MSG_KEY, "bOpt", 2, 1),
"471: " + getCheckMessage(MSG_KEY, "l1", 3, 1),
"471: " + getCheckMessage(MSG_KEY, "l2", 2, 1),
"479: " + getCheckMessage(MSG_KEY, "myOption", 7, 1),
"491: " + getCheckMessage(MSG_KEY, "myOption", 6, 1),
"504: " + getCheckMessage(MSG_KEY, "count", 4, 1),
"505: " + getCheckMessage(MSG_KEY, "files", 2, 1),
"540: " + getCheckMessage(MSG_KEY, "id", 2, 1),
"542: " + getCheckMessage(MSG_KEY, "parentId", 3, 1),
"891: " + getCheckMessage(MSG_KEY, "a", 4, 1),
"901: " + getCheckMessage(MSG_KEY, "a", 4, 1),
"967: " + getCheckMessage(MSG_KEY, "a", 4, 1),
"978: " + getCheckMessage(MSG_KEY, "a", 2, 1),
};
verify(checkConfig, getPath("InputVariableDeclarationUsageDistance.java"), expected);
}
@Test
public void testDistance() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
checkConfig.addAttribute("allowedDistance", "3");
checkConfig.addAttribute("ignoreVariablePattern", "");
checkConfig.addAttribute("validateBetweenScopes", "true");
checkConfig.addAttribute("ignoreFinal", "false");
final String[] expected = {
"71: " + getCheckMessage(MSG_KEY, "count", 4, 3),
"219: " + getCheckMessage(MSG_KEY, "t", 5, 3),
"479: " + getCheckMessage(MSG_KEY, "myOption", 7, 3),
"491: " + getCheckMessage(MSG_KEY, "myOption", 6, 3),
"504: " + getCheckMessage(MSG_KEY, "count", 4, 3),
"891: " + getCheckMessage(MSG_KEY, "a", 4, 3),
"901: " + getCheckMessage(MSG_KEY, "a", 4, 3),
"967: " + getCheckMessage(MSG_KEY, "a", 4, 3),
};
verify(checkConfig, getPath("InputVariableDeclarationUsageDistance.java"), expected);
}
@Test
public void testVariableRegExp() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
checkConfig.addAttribute("allowedDistance", "1");
checkConfig.addAttribute("ignoreVariablePattern",
"a|b|c|d|block|dist|t|m");
checkConfig.addAttribute("validateBetweenScopes", "true");
checkConfig.addAttribute("ignoreFinal", "false");
final String[] expected = {
"38: " + getCheckMessage(MSG_KEY, "temp", 2, 1),
"44: " + getCheckMessage(MSG_KEY, "temp", 2, 1),
"57: " + getCheckMessage(MSG_KEY, "count", 2, 1),
"71: " + getCheckMessage(MSG_KEY, "count", 4, 1),
"96: " + getCheckMessage(MSG_KEY, "arg", 2, 1),
"145: " + getCheckMessage(MSG_KEY, "n", 2, 1),
"184: " + getCheckMessage(MSG_KEY, "result", 2, 1),
"223: " + getCheckMessage(MSG_KEY, "d2", 3, 1),
"260: " + getCheckMessage(MSG_KEY, "selected", 2, 1),
"261: " + getCheckMessage(MSG_KEY, "model", 2, 1),
"287: " + getCheckMessage(MSG_KEY, "sw", 2, 1),
"300: " + getCheckMessage(MSG_KEY, "wh", 2, 1),
"343: " + getCheckMessage(MSG_KEY, "green", 2, 1),
"344: " + getCheckMessage(MSG_KEY, "blue", 3, 1),
"367: " + getCheckMessage(MSG_KEY, "intervalMs", 2, 1),
"454: " + getCheckMessage(MSG_KEY, "aOpt", 3, 1),
"455: " + getCheckMessage(MSG_KEY, "bOpt", 2, 1),
"471: " + getCheckMessage(MSG_KEY, "l1", 3, 1),
"471: " + getCheckMessage(MSG_KEY, "l2", 2, 1),
"479: " + getCheckMessage(MSG_KEY, "myOption", 7, 1),
"491: " + getCheckMessage(MSG_KEY, "myOption", 6, 1),
"504: " + getCheckMessage(MSG_KEY, "count", 4, 1),
"505: " + getCheckMessage(MSG_KEY, "files", 2, 1),
"540: " + getCheckMessage(MSG_KEY, "id", 2, 1),
"542: " + getCheckMessage(MSG_KEY, "parentId", 3, 1),
};
verify(checkConfig, getPath("InputVariableDeclarationUsageDistance.java"), expected);
}
@Test
public void testValidateBetweenScopesOption() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
checkConfig.addAttribute("allowedDistance", "1");
checkConfig.addAttribute("ignoreVariablePattern", "");
checkConfig.addAttribute("validateBetweenScopes", "false");
checkConfig.addAttribute("ignoreFinal", "false");
final String[] expected = {
"30: " + getCheckMessage(MSG_KEY, "a", 2, 1),
"38: " + getCheckMessage(MSG_KEY, "temp", 2, 1),
"44: " + getCheckMessage(MSG_KEY, "temp", 2, 1),
"71: " + getCheckMessage(MSG_KEY, "count", 4, 1),
"96: " + getCheckMessage(MSG_KEY, "arg", 2, 1),
"219: " + getCheckMessage(MSG_KEY, "t", 5, 1),
"222: " + getCheckMessage(MSG_KEY, "c", 3, 1),
"223: " + getCheckMessage(MSG_KEY, "d2", 3, 1),
"300: " + getCheckMessage(MSG_KEY, "wh", 2, 1),
"343: " + getCheckMessage(MSG_KEY, "green", 2, 1),
"344: " + getCheckMessage(MSG_KEY, "blue", 3, 1),
"367: " + getCheckMessage(MSG_KEY, "intervalMs", 2, 1),
"454: " + getCheckMessage(MSG_KEY, "aOpt", 3, 1),
"455: " + getCheckMessage(MSG_KEY, "bOpt", 2, 1),
"471: " + getCheckMessage(MSG_KEY, "l1", 3, 1),
"471: " + getCheckMessage(MSG_KEY, "l2", 2, 1),
"479: " + getCheckMessage(MSG_KEY, "myOption", 7, 1),
"491: " + getCheckMessage(MSG_KEY, "myOption", 6, 1),
"505: " + getCheckMessage(MSG_KEY, "files", 2, 1),
"540: " + getCheckMessage(MSG_KEY, "id", 2, 1),
"542: " + getCheckMessage(MSG_KEY, "parentId", 4, 1),
"978: " + getCheckMessage(MSG_KEY, "a", 2, 1),
};
verify(checkConfig, getPath("InputVariableDeclarationUsageDistance.java"), expected);
}
@Test
public void testIgnoreFinalOption() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
checkConfig.addAttribute("allowedDistance", "1");
checkConfig.addAttribute("ignoreVariablePattern", "");
checkConfig.addAttribute("validateBetweenScopes", "true");
checkConfig.addAttribute("ignoreFinal", "true");
final String[] expected = {
"30: " + getCheckMessage(MSG_KEY_EXT, "a", 2, 1),
"38: " + getCheckMessage(MSG_KEY_EXT, "temp", 2, 1),
"44: " + getCheckMessage(MSG_KEY_EXT, "temp", 2, 1),
"57: " + getCheckMessage(MSG_KEY_EXT, "count", 2, 1),
"71: " + getCheckMessage(MSG_KEY_EXT, "count", 4, 1),
"96: " + getCheckMessage(MSG_KEY_EXT, "arg", 2, 1),
"144: " + getCheckMessage(MSG_KEY_EXT, "m", 3, 1),
"145: " + getCheckMessage(MSG_KEY_EXT, "n", 2, 1),
"184: " + getCheckMessage(MSG_KEY_EXT, "result", 2, 1),
"219: " + getCheckMessage(MSG_KEY_EXT, "t", 5, 1),
"222: " + getCheckMessage(MSG_KEY_EXT, "c", 3, 1),
"223: " + getCheckMessage(MSG_KEY_EXT, "d2", 3, 1),
"260: " + getCheckMessage(MSG_KEY_EXT, "selected", 2, 1),
"261: " + getCheckMessage(MSG_KEY_EXT, "model", 2, 1),
"287: " + getCheckMessage(MSG_KEY_EXT, "sw", 2, 1),
"300: " + getCheckMessage(MSG_KEY_EXT, "wh", 2, 1),
"343: " + getCheckMessage(MSG_KEY_EXT, "green", 2, 1),
"344: " + getCheckMessage(MSG_KEY_EXT, "blue", 3, 1),
"454: " + getCheckMessage(MSG_KEY_EXT, "aOpt", 3, 1),
"455: " + getCheckMessage(MSG_KEY_EXT, "bOpt", 2, 1),
"471: " + getCheckMessage(MSG_KEY_EXT, "l1", 3, 1),
"471: " + getCheckMessage(MSG_KEY_EXT, "l2", 2, 1),
"479: " + getCheckMessage(MSG_KEY_EXT, "myOption", 7, 1),
"491: " + getCheckMessage(MSG_KEY_EXT, "myOption", 6, 1),
"504: " + getCheckMessage(MSG_KEY_EXT, "count", 4, 1),
"505: " + getCheckMessage(MSG_KEY_EXT, "files", 2, 1),
"540: " + getCheckMessage(MSG_KEY_EXT, "id", 2, 1),
"542: " + getCheckMessage(MSG_KEY_EXT, "parentId", 3, 1),
"891: " + getCheckMessage(MSG_KEY_EXT, "a", 4, 1),
"901: " + getCheckMessage(MSG_KEY_EXT, "a", 4, 1),
"967: " + getCheckMessage(MSG_KEY_EXT, "a", 4, 1),
};
verify(checkConfig, getPath("InputVariableDeclarationUsageDistance.java"), expected);
}
@Test
public void testTokensNotNull() {
final VariableDeclarationUsageDistanceCheck check =
new VariableDeclarationUsageDistanceCheck();
Assert.assertNotNull("Acceptable tokens should not be null", check.getAcceptableTokens());
Assert.assertNotNull("Default tokens should not be null", check.getDefaultTokens());
Assert.assertNotNull("Required tokens should not be null", check.getRequiredTokens());
}
@Test
public void testDefaultConfiguration() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
final String[] expected = {
"71: " + getCheckMessage(MSG_KEY_EXT, "count", 4, 3),
"219: " + getCheckMessage(MSG_KEY_EXT, "t", 5, 3),
"479: " + getCheckMessage(MSG_KEY_EXT, "myOption", 7, 3),
"491: " + getCheckMessage(MSG_KEY_EXT, "myOption", 6, 3),
"542: " + getCheckMessage(MSG_KEY_EXT, "parentId", 4, 3),
};
verify(checkConfig, getPath("InputVariableDeclarationUsageDistance.java"), expected);
}
@Test
public void testAnonymousClass() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
final String[] expected = {
"9: " + getCheckMessage(MSG_KEY_EXT, "prefs", 4, 3),
};
verify(checkConfig, getPath("InputVariableDeclarationUsageDistanceAnonymous.java"),
expected);
}
@Test
public void testLabels() throws Exception {
final DefaultConfiguration checkConfig =
createModuleConfig(VariableDeclarationUsageDistanceCheck.class);
final String[] expected = CommonUtils.EMPTY_STRING_ARRAY;
verify(checkConfig, getPath("InputVariableDeclarationUsageDistanceLabels.java"), expected);
}
}