anchor.diff:       FFileName : String;
   
     protected
  -     startTime : Cardinal;
  -     dtStartTime : TDateTime;
  -     dtEndTime : TDateTime;
  -
  -     testStart : TDateTime;
  -     FSuiteStack : TStringList;
  -     FInfoList   : TStringList;
  -     FWarningList : TStringList;
  -
  -     procedure writeReport(str: String);
  -
  -     function GetCurrentSuiteName : string;
  +    FStartTime : Cardinal;
  +    FStartDateTime : TDateTime;
  +    FEndDateTime : TDateTime;
  +
  +    FSuiteStack : TStringList;
  +    FInfoList   : TStringList;
  +    FWarningList : TStringList;
  +    procedure writeReport(str: String);
  +
  +    function GetCurrentSuiteName : string;
       function  PrintErrors(r: TTestResult): string; virtual;
       function  PrintFailures(r: TTestResult): string; virtual;
       function  PrintHeader(r: TTestResult): string; virtual;
  
positive.code:    writeReport('</results>');
     writeReport('</test-suite>');
  
     runtime := (GetTickCount - startTime) / 1000;
     if testResult.RunCount > 0 then
       successRate :=  Trunc(
          ((testResult.runCount - testResult.failureCount - testResult.errorCount)
  
negative.code:                   '<stat name="failures" value="'+intToStr(testResult.failureCount)+'" />'+CRLF+
                    '<stat name="errors" value="'+intToStr(testResult.errorCount)+'" />'+CRLF+
                    '<stat name="success-rate" value="'+intToStr(successRate)+'%" />'+CRLF+
                    '<stat name="started-at" value="'+DateTimeToStr(FStartDateTime)+'" />'+CRLF+
                    '<stat name="finished-at" value="'+DateTimeToStr(now)+'" />'+CRLF+
                    Format('<stat name="runtime" value="%1.3f"/>', [runtime])+CRLF+
                    '</statistics>'+CRLF+
  