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; @RunWith(MockitoJUnitRunner.class) public class CommaWhitespaceTest extends RuleTest { @Override protected String[] getCommandArgs() { return new String[]{ "--only=comma-whitespace" }; } @Override protected void addAllExpectedMsgs() { // Type inheritance commas int start = 9; addExpectedCommaMessage(start, 24, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 4, 23, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 8, 23, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 16, 33, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 29, 22, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 37, 17, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 42, 53, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 46, 22, Messages.NO_SPACE_BEFORE); // Generic list commas start = 63; addExpectedCommaMessage(start, 31, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 4, 31, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 8, 32, Messages.NO_SPACE_BEFORE); // Requirement list commas start = 83; addExpectedCommaMessage(start, 37, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 3, 43, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 3, 43, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 7, 1, Messages.NO_SPACE_BEFORE); // Condition clause/list commas start = 103; addExpectedCommaMessage(start, 10, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 4, 34, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 8, 27, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 16, 28, Messages.NO_SPACE_BEFORE); // Optional binding list start = 131; addExpectedCommaMessage(start, 49, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 4, 50, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 9, 24, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 9, 47, Messages.SPACE_AFTER); // Availability conditions and Generic Arguments start = 148; addExpectedCommaMessage(start, 31, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 4, 21, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 12, 33, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 14, 32, Messages.SPACE_AFTER); // Pattern initializer list and parameter list start = 166; addExpectedCommaMessage(start, 14, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 2, 13, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 8, 23, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 10, 23, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 10, 30, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 12, 30, Messages.NO_SPACE_BEFORE); // Enum case lists start = 189; addExpectedCommaMessage(start, 17, Messages.SPACE_AFTER); addExpectedCommaMessage(start, 36, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 4, 47, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 13, 21, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 18, 20, Messages.SPACE_AFTER); // Tuple patterns start = 213; addExpectedCommaMessage(start, 7, Messages.SPACE_AFTER); addExpectedCommaMessage(start, 17, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 2, 11, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 2, 11, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 2, 20, Messages.SPACE_AFTER); // Array literals start = 221; addExpectedCommaMessage(start, 37, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start, 47, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 2, 36, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 6, 57, Messages.NO_SPACE_BEFORE); // Dictionary literals start = 234; addExpectedCommaMessage(start, 60, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 2, 59, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 4, 59, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 8, 77, Messages.NO_SPACE_BEFORE); // Capture lists start = 250; addExpectedCommaMessage(start, 18, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 5, 19, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 10, 18, Messages.SPACE_AFTER); // Parenthesized Expressions start = 271; addExpectedCommaMessage(start, 15, Messages.SPACE_AFTER); addExpectedCommaMessage(start, 26, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 1, 18, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 8, 23, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 15, 22, Messages.SPACE_AFTER); // Identifier List start = 290; addExpectedCommaMessage(start, 28, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 1, 29, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 3, 28, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start + 3, 32, Messages.SPACE_AFTER); // Case Item List start = 301; addExpectedCommaMessage(start, 10, Messages.NO_SPACE_BEFORE); addExpectedCommaMessage(start, 15, Messages.SPACE_AFTER); addExpectedCommaMessage(start, 21, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 6, 6, Messages.SPACE_AFTER); // Closure Parameter List start = 312; addExpectedCommaMessage(start, 28, Messages.SPACE_AFTER); addExpectedCommaMessage(start + 1, 29, Messages.NO_SPACE_BEFORE); } private void addExpectedCommaMessage(int line, int column, String msg) { addExpectedMsg(Rules.COMMA_WHITESPACE, line, column, Messages.COMMA + Messages.AT_COLUMN + column + " " + msg); } private void addExpectedMsg(Rules rule, int line, int column, String msg) { this.expectedMessages.add(Printer.genOutputStringForTest(rule, inputFile.getName(), line, column, Severity.WARNING, msg)); } }