anchor.diff:    FReason := AReason;
   end;
   
  -class procedure Assert.AreEqual(const left, right: boolean; const message: string);
  -begin
  -  if left <> right then
  -    Fail(Format('left %s but got %s %s' ,[BoolToStr(left, true), BoolToStr(right, true), message]), ReturnAddress);
  +class procedure Assert.AreEqual(const expected, actual: boolean; const message: string);
  +begin
  +  if expected <> actual then
  +    Fail(Format('Expected %s but got %s %s' ,[BoolToStr(expected, true), BoolToStr(actual, true), message]), ReturnAddress);
   end;
   
   { TDUnitXOptions }
  
positive.code:     Result := '';
  end;
  
  class procedure Assert.AreEqual(const left, right: Integer; const message: string);
  begin
    if left <> right then
      Fail(Format('left %d but got %d %s' ,[left, right, message]), ReturnAddress);
  end;
  
  class procedure Assert.AreEqual(const left, right, tolerance: Double; const message: string);
  begin
    if not Math.SameValue(left,right,tolerance) then
      Fail(Format('left %g but got %g %s' ,[left,right,message]), ReturnAddress);
  end;
  
  class procedure Assert.AreEqual(const left, right: Double; const message: string);
  var
    tolerance : Double;
  begin
    tolerance := 0;
    AreEqual(left, right, tolerance, message);
  end;
  
  class procedure Assert.AreEqual(const left, right: Extended; const message: string);
  var
    tolerance : Extended;
  begin
    tolerance := 0;
    AreEqual(left, right, tolerance, message);
  end;
  
  class procedure Assert.AreEqualMemory(const left : Pointer; const right : Pointer; const size : Cardinal; const message : string);
  
negative.code:     class procedure Pass(const message : string = '');
      class procedure Fail(const message : string = ''; const errorAddrs : pointer = nil);
  
      class procedure AreEqual(const expected : string; const actual : string; const ignoreCase : boolean; const message : string = '');overload;
      class procedure AreEqual(const expected : string; const actual : string; const message : string = '');overload;
      class procedure AreEqual(const expected, actual : Double; const tolerance : Double; const message : string = '');overload;
      class procedure AreEqual(const expected, actual : Double; const message : string = '');overload;
      class procedure AreEqual(const expected, actual : Extended; const tolerance : Extended; const message : string = '');overload;
      class procedure AreEqual(const expected, actual : Extended; const message : string = '');overload;
      class procedure AreEqual(const expected, actual : TClass; const message : string = '');overload;
  {$IFDEF DELPHI_XE_UP}
      //Delphi 2010 compiler bug breaks this
      class procedure AreEqual<T>(const expected, actual : T; const message : string = '');overload;
  {$ENDIF}
      class procedure AreEqual(const expected, actual : Integer; const message : string = '');overload;
      class procedure AreEqual(const expected, actual : boolean; const message : string = '');overload;
  
      class procedure AreEqualMemory(const left : Pointer; const right : Pointer; const size : Cardinal; const message : string = '');
  
  