@Test
  public void test() {
    String filename = "metrics/lines_of_code.php";
    File file = new File(filename);
    Map<File, Integer> numberOfLinesOfCode = new HashMap<>();

    FileLinesContext fileLinesContext = mock(FileLinesContext.class);
    FileMeasures fileMeasures =
        new MetricsVisitor()
            .getFileMeasures(file, parse(filename), fileLinesContext, numberOfLinesOfCode, true);

    assertThat(fileMeasures.getFileComplexity()).isEqualTo(1);
    assertThat(fileMeasures.getClassComplexity()).isEqualTo(1);
    assertThat(fileMeasures.getFunctionComplexity()).isEqualTo(1);

    assertThat(fileMeasures.getFileComplexityDistribution().build())
        .isEqualTo("0=1;5=0;10=0;20=0;30=0;60=0;90=0");
    assertThat(fileMeasures.getFunctionComplexityDistribution().build())
        .isEqualTo("1=1;2=0;4=0;6=0;8=0;10=0;12=0");

    assertThat(fileMeasures.getFunctionNumber()).isEqualTo(1);
    assertThat(fileMeasures.getStatementNumber()).isEqualTo(2);
    assertThat(fileMeasures.getClassNumber()).isEqualTo(1);

    assertThat(fileMeasures.getLinesNumber()).isEqualTo(29);
    assertThat(fileMeasures.getLinesOfCodeNumber()).isEqualTo(7);

    assertThat(fileMeasures.getNoSonarLines()).containsOnly(18);
    assertThat(fileMeasures.getCommentLinesNumber()).isEqualTo(5);

    assertThat(numberOfLinesOfCode.values().iterator().next())
        .as("number of lines of code in the file")
        .isEqualTo(7);

    verify(fileLinesContext).setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, 1, 0);
    verify(fileLinesContext).setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, 13, 1);
  }