package com.sleekbyte.tailor.functional; import com.sleekbyte.tailor.common.Messages; import com.sleekbyte.tailor.common.Rules; import com.sleekbyte.tailor.common.Severity; import com.sleekbyte.tailor.output.Printer; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; /** * Functional tests for min name length rule. */ @RunWith(MockitoJUnitRunner.class) public class MinNameLengthTest extends RuleTest { private static final int NAME_LENGTH_LIMIT = 3; @Override protected String[] getCommandArgs() { return new String[] { "--min-name-length", String.valueOf(NAME_LENGTH_LIMIT), "--only=min-name-length" }; } @Override protected void addAllExpectedMsgs() { addExpectedNameMsg(1, 7, Messages.CLASS + Messages.NAME, 2); addExpectedNameMsg(7, 54, Messages.ENUM_CASE + Messages.NAME, 1); addExpectedNameMsg(10, 6, Messages.FUNCTION + Messages.NAME, 1); addExpectedNameMsg(10, 9, Messages.CONSTANT + Messages.NAME, 2); addExpectedNameMsg(10, 12, Messages.CONSTANT + Messages.NAME, 2); addExpectedNameMsg(15, 1, Messages.LABEL + Messages.NAME, 2); addExpectedNameMsg(24, 10, Messages.PROTOCOL + Messages.NAME, 1); addExpectedNameMsg(27, 8, Messages.STRUCT + Messages.NAME, 1); addExpectedNameMsg(38, 11, Messages.TYPEALIAS + Messages.NAME, 2); addExpectedNameMsg(41, 9, Messages.VARIABLE + Messages.NAME, 1); addExpectedNameMsg(48, 82, Messages.TYPE + Messages.NAME, 2); addExpectedNameMsg(52, 5, Messages.CONSTANT + Messages.NAME, 1); addExpectedNameMsg(56, 10, Messages.ENUM_CASE + Messages.NAME, 1); } private void addExpectedNameMsg(int line, int column, String msg, int length) { String lengthVersusLimit = " (" + length + "/" + NAME_LENGTH_LIMIT + ")"; msg += Messages.VIOLATES_MINIMUM_CHARACTER_LIMIT + lengthVersusLimit; expectedMessages.add(Printer.genOutputStringForTest(Rules.MIN_NAME_LENGTH, inputFile.getName(), line, column, Severity.WARNING, msg)); } }