@Test
  public void testResultsHtml() throws Exception {
    TestSystem fitMock = mock(TestSystem.class);
    when(fitMock.getName()).thenReturn("Fit:laughing.fit");
    TestSystem slimMock = mock(TestSystem.class);
    when(slimMock.getName()).thenReturn("Slim:very.slim");

    formatter.testSystemStarted(fitMock);
    formatter.announceNumberTestsToRun(2);
    formatter.announceStartNewTest("RelativeName", "FullName");
    formatter.testOutputChunk("starting");
    formatter.testOutputChunk(" output");
    formatter.processTestResults("RelativeName", new TestSummary(1, 0, 0, 0));
    formatter.testSystemStarted(slimMock);
    formatter.announceStartNewTest("NewRelativeName", "NewFullName");
    formatter.testOutputChunk("second");
    formatter.testOutputChunk(" test");
    formatter.processTestResults("NewRelativeName", new TestSummary(0, 1, 0, 0));
    formatter.finishWritingOutput();

    String results = pageBuffer.toString();

    assertSubString("<h2>Test System: Slim:very.slim</h2>", results);

    assertSubString("<div class=\"test_output_name\">", results);
    assertSubString(
        "<a href=\"FullName\" id=\"RelativeName1\" class=\"test_name\">RelativeName</a>", results);
    assertSubString("<div class=\"alternating_block\">starting output</div>", results);

    assertSubString(
        "<a href=\"NewFullName\" id=\"NewRelativeName2\" class=\"test_name\">NewRelativeName</a>",
        results);
    assertSubString("<div class=\"alternating_block\">second test</div>", results);
  }
  private void testSuiteMetaTestSummaryWithoutTestResults(String pageName) throws Exception {
    formatter.processTestResults(pageName, new TestSummary(0, 0, 0, 0));
    formatter.finishWritingOutput();

    assertSubString(
        "<span class=\\\"results pass\\\">0 right, 0 wrong, 0 ignored, 0 exceptions</span>",
        pageBuffer.toString());
    assertSubString(
        "<strong>Test Pages:</strong> 1 right, 0 wrong, 0 ignored, 0 exceptions",
        pageBuffer.toString());
    assertSubString(
        "<strong>Assertions:</strong> 0 right, 0 wrong, 0 ignored, 0 exceptions",
        pageBuffer.toString());
  }
  @Test
  public void testTestSummary() throws Exception {
    formatter.processTestResults("TestName", new TestSummary(49, 0, 0, 0));
    formatter.processTestResults("TestName2", new TestSummary(1, 0, 2, 0));
    formatter.processTestResults("TestName3", new TestSummary(1, 1, 0, 0));
    formatter.finishWritingOutput();

    assertSubString(
        "<strong>Test Pages:</strong> 2 right, 1 wrong, 0 ignored, 0 exceptions",
        pageBuffer.toString());
    assertSubString(
        "<strong>Assertions:</strong> 51 right, 1 wrong, 2 ignored, 0 exceptions",
        pageBuffer.toString());
  }