123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- 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.
|