// Path: src/main/java/com/pablissimo/sonar/model/TsLintIssue.java
// public class TsLintIssue {
//     private String name;
//     private TsLintPosition startPosition;
//     private TsLintPosition endPosition;
//     private String failure;
//     private String ruleName;
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public TsLintPosition getStartPosition() {
//         return startPosition;
//     }
// 
//     public void setStartPosition(TsLintPosition startPosition) {
//         this.startPosition = startPosition;
//     }
// 
//     public TsLintPosition getEndPosition() {
//         return endPosition;
//     }
// 
//     public void setEndPosition(TsLintPosition endPosition) {
//         this.endPosition = endPosition;
//     }
// 
//     public String getFailure() {
//         return failure;
//     }
// 
//     public void setFailure(String failure) {
//         this.failure = failure;
//     }
// 
//     public String getRuleName() {
//         return ruleName;
//     }
// 
//     public void setRuleName(String ruleName) {
//         this.ruleName = ruleName;
//     }
// }
// 
// Path: src/main/java/com/pablissimo/sonar/model/TsLintPosition.java
// public class TsLintPosition {
//     private int position;
//     private int line;
//     private int character;
// 
//     public int getPosition() {
//         return position;
//     }
// 
//     public void setPosition(int position) {
//         this.position = position;
//     }
// 
//     public int getLine() {
//         return line;
//     }
// 
//     public void setLine(int line) {
//         this.line = line;
//     }
// 
//     public int getCharacter() {
//         return character;
//     }
// 
//     public void setCharacter(int character) {
//         this.character = character;
//     }
// }


import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.rule.internal.ActiveRulesBuilder;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor;
import org.sonar.api.batch.sensor.internal.SensorContextTester;
import org.sonar.api.config.Settings;
import com.pablissimo.sonar.model.TsLintIssue;
import com.pablissimo.sonar.model.TsLintPosition;
import org.sonar.api.rule.RuleKey;
        Answer<String> lookUpFakePath = new Answer<String>() {
            @Override
            public String answer(InvocationOnMock invocation) throws Throwable {
                return fakePathResolutions.get(invocation.<String>getArgument(1));
            }
        };

        doAnswer(lookUpFakePath).when(this.resolver).getPath(any(SensorContext.class), any(String.class), (String) any());

        this.configCaptor = ArgumentCaptor.forClass(TsLintExecutorConfig.class);
    }

    @Test
    public void describe_setsName() {
        DefaultSensorDescriptor desc = new DefaultSensorDescriptor();
        this.sensor.describe(desc);

        assertNotNull(desc.name());
    }

    @Test
    public void describe_setsLanguage() {
        DefaultSensorDescriptor desc = new DefaultSensorDescriptor();
        this.sensor.describe(desc);

        assertEquals(TypeScriptLanguage.LANGUAGE_KEY, desc.languages().iterator().next());
    }

    @Test
    public void execute_addsIssues() {
// Path: src/main/java/com/pablissimo/sonar/model/TsLintIssue.java
// public class TsLintIssue {
//     private String name;
//     private TsLintPosition startPosition;
//     private TsLintPosition endPosition;
//     private String failure;
//     private String ruleName;
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public TsLintPosition getStartPosition() {
//         return startPosition;
//     }
// 
//     public void setStartPosition(TsLintPosition startPosition) {
//         this.startPosition = startPosition;
//     }
// 
//     public TsLintPosition getEndPosition() {
//         return endPosition;
//     }
// 
//     public void setEndPosition(TsLintPosition endPosition) {
//         this.endPosition = endPosition;
//     }
// 
//     public String getFailure() {
//         return failure;
//     }
// 
//     public void setFailure(String failure) {
//         this.failure = failure;
//     }
// 
//     public String getRuleName() {
//         return ruleName;
//     }
// 
//     public void setRuleName(String ruleName) {
//         this.ruleName = ruleName;
//     }
// }
// 
// Path: src/main/java/com/pablissimo/sonar/model/TsLintPosition.java
// public class TsLintPosition {
//     private int position;
//     private int line;
//     private int character;
// 
//     public int getPosition() {
//         return position;
//     }
// 
//     public void setPosition(int position) {
//         this.position = position;
//     }
// 
//     public int getLine() {
//         return line;
//     }
// 
//     public void setLine(int line) {
//         this.line = line;
//     }
// 
//     public int getCharacter() {
//         return character;
//     }
// 
//     public void setCharacter(int character) {
//         this.character = character;
//     }
// }


// Path: src/test/java/com/pablissimo/sonar/TsLintSensorTest.java
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.rule.internal.ActiveRulesBuilder;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor;
import org.sonar.api.batch.sensor.internal.SensorContextTester;
import org.sonar.api.config.Settings;
import com.pablissimo.sonar.model.TsLintIssue;
import com.pablissimo.sonar.model.TsLintPosition;
import org.sonar.api.rule.RuleKey;

        Answer<String> lookUpFakePath = new Answer<String>() {
            @Override
            public String answer(InvocationOnMock invocation) throws Throwable {
                return fakePathResolutions.get(invocation.<String>getArgument(1));
            }
        };

        doAnswer(lookUpFakePath).when(this.resolver).getPath(any(SensorContext.class), any(String.class), (String) any());

        this.configCaptor = ArgumentCaptor.forClass(TsLintExecutorConfig.class);
    }

    @Test
    public void describe_setsName() {
        DefaultSensorDescriptor desc = new DefaultSensorDescriptor();
        this.sensor.describe(desc);

        assertNotNull(desc.name());
    }

    @Test
    public void describe_setsLanguage() {
        DefaultSensorDescriptor desc = new DefaultSensorDescriptor();
        this.sensor.describe(desc);

        assertEquals(TypeScriptLanguage.LANGUAGE_KEY, desc.languages().iterator().next());
    }

    @Test
    public void execute_addsIssues() {
        TsLintIssue issue = new TsLintIssue();