anchor.diff:    Msg: string;
     Severity: TLogMsgSeverity;
   begin
  -  // TODO: Setup method call parameters
  -  Severity := Default(TLogMsgSeverity);
  +  Msg := 'TestLog';
  +  Severity := SEVERITY_MIN;
  +
  +  { Case #1 }
  +
     SUT.Log(Severity, Msg);
  -  // TODO: Validate method results
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #1>');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(Msg), 'CheckTrue::LastWrittenLine.Contains(Msg)');
  +
  +  { Case #2 }
  +
  +  SUT.SeverityThreshold := SEVERITY_MAX;
  +  SUT.Log(Severity, Msg);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #2>');
  +
  +  { Case #3 }
  +
  +  SUT.SeverityThreshold := SEVERITY_NONE;
  +  SUT.Log(Severity, Msg);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #3>');
   end;
   
   procedure TestTLogger.TestLog1;
  -//var
  -//  Vals: $17;
  -//  Severity: TLogMsgSeverity;
  -begin
  -  // TODO: Setup method call parameters
  -  //FAbstractLogger.Log(Severity, Vals);
  -  // TODO: Validate method results
  +const
  +  STR_VAL = String('<TestLog1>');
  +  INT_VAL = Integer(777);
  +var
  +  Severity: TLogMsgSeverity;
  +begin
  +  Severity := SEVERITY_MIN;
  +
  +  { Case #1 }
  +
  +  SUT.Log(Severity, [STR_VAL, INT_VAL]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #1>');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(INT_VAL.ToString), 'CheckTrue::LastWrittenLine.Contains(INT_VAL)');
  +
  +  { Case #2 }
  +
  +  SUT.SeverityThreshold := SEVERITY_MAX;
  +  SUT.Log(Severity, [STR_VAL, INT_VAL]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #2>');
  +
  +  { Case #3 }
  +
  +  SUT.SeverityThreshold := SEVERITY_NONE;
  +  SUT.Log(Severity, [STR_VAL, INT_VAL]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #3>');
   end;
   
   procedure TestTLogger.TestLogFmt;
  -//var
  -//  Args: $19;
  -//  Msg: string;
  -//  Severity: TLogMsgSeverity;
  -begin
  -  // TODO: Setup method call parameters
  -  //FAbstractLogger.LogFmt(Severity, Msg, Args);
  -  // TODO: Validate method results
  +const
  +  FMT_MSG = 'Message with string arg "%s" and integer arg "%d".';
  +  STR_VAL = String('<TestLogFmt>');
  +  INT_VAL = Integer(777);
  +var
  +  Msg: String;
  +  Severity: TLogMsgSeverity;
  +begin
  +  Msg := FMT_MSG;
  +  Severity := SEVERITY_MIN;
  +
  +  { Case #1 }
  +
  +  SUT.LogFmt(Severity, Msg, [STR_VAL, INT_VAL]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #1>');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(INT_VAL.ToString), 'CheckTrue::LastWrittenLine.Contains(INT_VAL)');
  +
  +  { Case #2 }
  +
  +  SUT.SeverityThreshold := SEVERITY_MAX;
  +  SUT.LogFmt(Severity, Msg, [STR_VAL, INT_VAL]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #2>');
  +
  +  { Case #3 }
  +
  +  SUT.SeverityThreshold := SEVERITY_NONE;
  +  SUT.LogFmt(Severity, Msg, [STR_VAL, INT_VAL]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #3>');
   end;
   
   procedure TestTLogger.TestLogVal;
  -//var
  -//  Vals: $21;
  -//  Severity: TLogMsgSeverity;
  -begin
  -  // TODO: Setup method call parameters
  -  //FAbstractLogger.LogVal(Severity, Vals);
  -  // TODO: Validate method results
  +const
  +  STR_VAL = String('<TestLogVal>');
  +  INT_VAL = Integer(777);
  +var
  +  Severity: TLogMsgSeverity;
  +begin
  +  Severity := SEVERITY_MIN;
  +
  +  { Case #1 }
  +
  +  SUT.LogVal(Severity, [STR_VAL, INT_VAL, Self]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #1>');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(INT_VAL.ToString), 'CheckTrue::LastWrittenLine.Contains(INT_VAL)');
  +  CheckTrue(FOutput.LastWrittenLine.Contains(Self.ToString), 'CheckTrue::LastWrittenLine.Contains(Self)');
  +
  +  { Case #2 }
  +
  +  SUT.SeverityThreshold := SEVERITY_MAX;
  +  SUT.LogVal(Severity, [STR_VAL, INT_VAL, Self]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #2>');
  +
  +  { Case #3 }
  +
  +  SUT.SeverityThreshold := SEVERITY_NONE;
  +  SUT.LogVal(Severity, [STR_VAL, INT_VAL, Self]);
  +
  +  CheckEquals(1, FOutput.WrittenLinesCount, '(WrittenLinesCount = 1)::<Case #3>');
   end;
   
   procedure TestTLogger.TestDebug;
  
positive.code:     function  MakeSUT : ILogger; override;
    published
      procedure TestAddOutput;
      procedure TestEnterSection;
      procedure TestEnterSection1;
      procedure TestEnterSectionFmt;
  
negative.code:   CheckTrue(FOutput.LastWrittenLine.Contains(STR_VAL), 'CheckTrue::LastWrittenLine.Contains(STR_VAL)');
    CheckTrue(FOutput.LastWrittenLine.Contains(INT_VAL.ToString), 'CheckTrue::LastWrittenLine.Contains(INT_VAL)');
    CheckTrue(FOutput.LastWrittenLine.Contains(Self.ToString), 'CheckTrue::LastWrittenLine.Contains(Self)');
  end;
  
  procedure TestTLogger.TestEnabled;
  begin
    CheckTrue(SUT.Enabled, 'CheckTrue::Enabled<after set up>');
  
    SUT.SeverityThreshold := SEVERITY_NONE;
    CheckFalse(SUT.Enabled, 'CheckFalse::Enabled<after SEVERITY_NONE>');
  
    SUT.SeverityThreshold := SEVERITY_MAX;
    CheckTrue(SUT.Enabled, 'CheckTrue::Enabled<after SEVERITY_MAX');
  end;
  
  procedure TestTLogger.TestEnterMethod;
  