sleekbyte/tailor

View on GitHub
src/test/java/com/sleekbyte/tailor/functional/CommaWhitespaceTest.java

Summary

Maintainability
A
3 hrs
Test Coverage
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));
    }
}