@Test
  public void analyseTest() {
    DebugSensorContext debugContext = new DebugSensorContext();
    sensor.analyse(project, debugContext);

    RuleData ruleData[] = // all expected rule violations and their lines
        {
      new RuleData("Class Name Rule", 7),
      new RuleData("No Semi After Overload Rule", 9),
      new RuleData("Public Fields Rule", 10),
      new RuleData("Type Alias Rule", 13),
      new RuleData("Type Alias Rule", 14),
      new RuleData("One Class Per File Rule", 19),
      new RuleData("Empty Interface Rule", 25),
      new RuleData("Interface Name Rule", 25),
      new RuleData("No Guid Rule", 29),
      new RuleData("Record Name Rule", 34),
      new RuleData("Inherited Method With No Code Rule", 45),
      new RuleData("Then Try Rule", 51),
      new RuleData("Empty Except Block Rule", 54),
      new RuleData("Too Many Arguments Rule", 58),
      new RuleData("Too Long Method Rule", 58),
      new RuleData("Too Many Variables Rule", 59),
      new RuleData("Uppercase Reserved Keywords Rule", 63),
      new RuleData("No Function Return Type Rule", 97),
      new RuleData("Avoid Out Parameter Rule", 98),
      new RuleData("Catching General Exception Rule", 103),
      new RuleData("Empty Begin Statement Rule", 104),
      new RuleData("If True Rule", 109),
      new RuleData("If True Rule", 110),
      new RuleData("Raising General Exception Rule", 111),
      new RuleData("If Not False Rule", 113),
      new RuleData("Unused Arguments Rule", 117),
      new RuleData("Assigned And Free Rule", 125),
      new RuleData("Assigned And Free Rule", 126),
      new RuleData("Empty Else Statement Rule", 135),
      new RuleData("Assigned And Free Rule", 147),
      new RuleData("Mixed Names Rule", 163),
      new RuleData("Mixed Names Rule", 169),
      new RuleData("Mixed Names Rule", 175),
      new RuleData("Constructor Without Inherited Statement Rule", 190),
      new RuleData("Destructor Without Inherited Statement Rule", 196),
      new RuleData("No 'begin' after 'do' Rule", 228),
      new RuleData("With After Do/Then Rule", 248),
      new RuleData("No Semicolon Rule", 290),
      new RuleData("No Semicolon Rule", 291),
      new RuleData("No Semicolon Rule", 294),
      new RuleData("Too Long Method Rule", 243),
      new RuleData("With After Do/Then Rule", 262),
      new RuleData("Cast And Free Rule", 302),
      new RuleData("Cast And Free Rule", 303)
    };

    Arrays.sort(
        ruleData,
        RuleData.getComparator()); // we don't have to add violations in line order, so we sort them
    assertEquals(
        "Number of found violations don't match",
        ruleData.length,
        debugContext.getViolationsCount());

    for (int i = 0; i < debugContext.getViolationsCount(); ++i) {
      Violation violation = debugContext.getViolation(i); // violation
      assertEquals(ruleData[i].getName(), violation.getRule().getName()); // rule name
      assertEquals(
          "LINE AT " + ruleData[i].getName(),
          ruleData[i].getLine(),
          violation.getLineId().intValue()); // rule line
      // System.out.println((i+1) + ": " + violation.getRule().getName() + ", line " +
      // violation.getLineId() );
    }
  }
 @Test
 public void shouldExecuteOnProjectTest() {
   assertTrue(sensor.shouldExecuteOnProject(project));
 }