Gracias seoane,... si no fuera por tí... no se me hubiera ocurrido ver lo de CompareMem.
Recordé que la clase abstracta TTestCase de Dunit tiene implementado una función CheckEqualsMem. Me fijé en el código y noto que hace uso de CompareMem... y bueno se me prendió la lamparita.
Esto es la prueba correspondiente para determinar si dos imagenes son iguales con DUnit:
Código Delphi
[-]
unit UTest;
interface
uses QExtCtrls, Graphics, TestFramework;
type
TCasodePrueba = class(TTestCase)
private
Img1, Img2: TPicture;
protected
procedure SetUp; override;
procedure TearDown; override;
published
procedure PruebaIguales;
end;
implementation
procedure TCasodePrueba.SetUp;
begin
Img1 := TPicture.Create;
img1.LoadFromFile('Directorio de la imagen 1');
Img2 := TPicture.Create;
img2.LoadFromFile('Directorio de la imagen 2');
end;
procedure TCasodePrueba.TearDown;
begin
Img1.Free;
img2.Free;
end;
procedure TCasodePrueba.PruebaIguales;
var
i,j: integer;
begin
check((Img1.Bitmap.Width = Img2.Bitmap.Width) AND (img1.Height =
Img2.Bitmap.Height),'No tienen igual tamaño');
case Img1.Bitmap.PixelFormat of
pf16bit: j:= (img1.Bitmap.Width*2) -1;
pf24bit: j:= (img1.Bitmap.Width*3) -1;
pf32bit: j:= (img1.Bitmap.Width*4) -1;
else j:= img1.Bitmap.Width -1;
end;
for i := 0 to img1.Bitmap.Height - 1 do
CheckEqualsMem(Img1.Bitmap.ScanLine[i],Img2.Bitmap.ScanLine[i],j,'No son iguales');
end;
initialization
TestFramework.RegisterTest(TCasodePrueba.Suite);
end.
Espero que a mas de uno le sirva.
Saudos,