mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-29 00:28:34 +02:00
191 lines
4.6 KiB
ObjectPascal
191 lines
4.6 KiB
ObjectPascal
unit utcImagelist;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, fpcunit, testutils, testregistry, system.imagelist;
|
|
|
|
type
|
|
|
|
{ TMyImageList }
|
|
|
|
TMyImageList = class(TBaseImageList)
|
|
private
|
|
FDidChange: Boolean;
|
|
protected
|
|
procedure DoChange; override;
|
|
function GetCount: Integer; override;
|
|
Property DidChange : Boolean Read FDidChange;
|
|
property LinkCount;
|
|
property Links;
|
|
end;
|
|
|
|
{ TestBaseImageList }
|
|
|
|
TestBaseImageList= class(TTestCase)
|
|
private
|
|
FLink1: TImageLink;
|
|
FLink2: TImageLink;
|
|
FList1: TBaseImageList;
|
|
FList2: TBaseImageList;
|
|
FLink1Change : TObject;
|
|
procedure FreeLink1;
|
|
procedure FreeLink2;
|
|
procedure Link1Changed(Sender: TObject);
|
|
protected
|
|
procedure SetUp; override;
|
|
procedure TearDown; override;
|
|
Property List1 : TBaseImageList Read FList1;
|
|
Property List2 : TBaseImageList Read FList2;
|
|
Property Link1 : TImageLink Read FLink1;
|
|
Property Link2 : TImageLink Read FLink2;
|
|
published
|
|
procedure TestHookUp;
|
|
procedure TestSetLink;
|
|
procedure TestChangeLink;
|
|
procedure TestSetLinkIgnoreChange;
|
|
procedure TestFreeList;
|
|
procedure TestFreeLink;
|
|
procedure TestSetImageIndex;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TMyImageList }
|
|
|
|
procedure TMyImageList.DoChange;
|
|
begin
|
|
FDidchange:=True;
|
|
end;
|
|
|
|
function TMyImageList.GetCount: Integer;
|
|
begin
|
|
Result:=0;
|
|
end;
|
|
|
|
procedure TestBaseImageList.TestHookUp;
|
|
|
|
begin
|
|
AssertNull('No change in link 1',FLink1Change);
|
|
AssertNotNull('Link 1',Link1);
|
|
AssertNotNull('Link 2',Link2);
|
|
AssertNotNull('List 1',List1);
|
|
AssertNotNull('List 2',List1);
|
|
end;
|
|
|
|
procedure TestBaseImageList.TestSetLink;
|
|
begin
|
|
Link1.Images:=List1;
|
|
AssertSame('Assigned link 1', List1,Link1.Images);
|
|
AssertEquals('Count list 1', 1, TMyImageList(List1).LinkCount);
|
|
AssertFalse('changed list 1', TMyImageList(List1).DidChange);
|
|
AssertSame('Link 1 changed',List1,FLink1Change);
|
|
Link2.Images:=List2;
|
|
AssertSame('Assigned link 2', List2,Link2.Images);
|
|
AssertEquals('Count list 2', 1, TMyImageList(List2).LinkCount);
|
|
AssertFalse('changed list 2', TMyImageList(List2).DidChange);
|
|
end;
|
|
|
|
procedure TestBaseImageList.TestChangeLink;
|
|
begin
|
|
Link1.Images:=List1;
|
|
AssertSame('Assigned link 1', List1,Link1.Images);
|
|
AssertEquals('Count list 1', 1, TMyImageList(List1).LinkCount);
|
|
AssertFalse('changed list 1', TMyImageList(List1).DidChange);
|
|
Link2.Images:=List2;
|
|
AssertSame('Assigned link 2', List2,Link2.Images);
|
|
AssertEquals('Count list 2', 1, TMyImageList(List2).LinkCount);
|
|
AssertFalse('changed list 2', TMyImageList(List2).DidChange);
|
|
Link2.Images:=List1;
|
|
AssertSame('Assigned link 1', List1,Link1.Images);
|
|
AssertEquals('Count list 1', 2, TMyImageList(List1).LinkCount);
|
|
AssertFalse('changed list 1', TMyImageList(List1).DidChange);
|
|
AssertEquals('Count list 2', 0, TMyImageList(List2).LinkCount);
|
|
AssertFalse('changed list 2', TMyImageList(List2).DidChange);
|
|
end;
|
|
|
|
procedure TestBaseImageList.TestSetLinkIgnoreChange;
|
|
begin
|
|
Link1.IgnoreImages:=True;
|
|
Link1.Images:=List1;
|
|
AssertSame('Assigned link 1', List1,Link1.Images);
|
|
AssertEquals('Count list 1', 1, TMyImageList(List1).LinkCount);
|
|
AssertFalse('changed list 1', TMyImageList(List1).DidChange);
|
|
AssertNull('Link 1 not changed',FLink1Change);
|
|
end;
|
|
|
|
procedure TestBaseImageList.TestFreeList;
|
|
begin
|
|
Link1.Images:=List1;
|
|
Link2.Images:=List1;
|
|
FreeAndNil(Flist1);
|
|
AssertNull('Link 1 no images',Link1.Images);
|
|
AssertNull('Link 2 no images',Link2.Images);
|
|
end;
|
|
|
|
procedure TestBaseImageList.TestFreeLink;
|
|
begin
|
|
Link1.Images:=List1;
|
|
Link2.Images:=List1;
|
|
FreeLink1;
|
|
AssertEquals('Link 1 image count',1,TMyImageList(List1).LinkCount);
|
|
end;
|
|
|
|
procedure TestBaseImageList.TestSetImageIndex;
|
|
begin
|
|
Link1.Images:=List1;
|
|
Link1.ImageIndex:=1;
|
|
AssertSame('Changed',List1,FLink1Change);
|
|
FLink1Change:=Nil;
|
|
Link1.ImageIndex:=1;
|
|
AssertNull('Not Changed',FLink1Change);
|
|
Link1.IgnoreIndex:=True;
|
|
Link1.ImageIndex:=2;
|
|
AssertNull('Not Changed',FLink1Change);
|
|
end;
|
|
|
|
procedure TestBaseImageList.SetUp;
|
|
begin
|
|
FList1:=TMyImageList.Create(Nil);
|
|
FList2:=TMyImageList.Create(Nil);
|
|
FLink1:=TImageLink.Create;
|
|
FLink1.OnChange:=@Link1Changed;
|
|
FLink2:=TImageLink.Create;
|
|
FLink1Change:=Nil;
|
|
end;
|
|
|
|
procedure TestBaseImageList.FreeLink1;
|
|
|
|
begin
|
|
FreeAndNil(FLink1);
|
|
end;
|
|
|
|
procedure TestBaseImageList.FreeLink2;
|
|
|
|
begin
|
|
FreeAndNil(FLink2);
|
|
end;
|
|
|
|
procedure TestBaseImageList.Link1Changed(Sender: TObject);
|
|
begin
|
|
FLink1Change:=Sender;
|
|
end;
|
|
|
|
procedure TestBaseImageList.TearDown;
|
|
begin
|
|
FreeLink1;
|
|
FreeLink2;
|
|
FreeAndNil(FList1);
|
|
FreeAndNil(FList2);
|
|
inherited TearDown;
|
|
end;
|
|
|
|
|
|
initialization
|
|
|
|
RegisterTest(TestBaseImageList);
|
|
end.
|
|
|