|
- unit uutlObservableListTests;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils, TestFramework,
- uutlGenerics, uutlObservable, uutlEvent;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TObservableIntList = specialize TutlObservableList<Integer>;
- TEventArgList = specialize TutlList<IutlEventArgs>;
- TutlObservableListTests = class(TTestCase)
- private
- fCaptureEvents: Boolean;
- fList: TObservableIntList;
- fEventArgs: TEventArgList;
-
- procedure EventHandler(constref aSender: TObject; constref aEventArgs: IutlEventArgs);
-
- public
- procedure SetUp; override;
- procedure TearDown; override;
-
- published
- procedure Add;
- procedure Delete;
- procedure ReplaceItem;
- procedure Clear;
- end;
-
- implementation
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlObservableListTests///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableListTests.EventHandler(constref aSender: TObject; constref aEventArgs: IutlEventArgs);
- begin
- if fCaptureEvents then
- fEventArgs.Add(aEventArgs);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableListTests.SetUp;
- begin
- inherited SetUp;
- fCaptureEvents := false;
- fEventArgs := TEventArgList.Create(true);
- fList := TObservableIntList.Create(true);
- fList.RegisterEventHandler(@EventHandler);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableListTests.TearDown;
- begin
- FreeAndNil(fList);
- FreeAndNil(fEventArgs);
- inherited TearDown;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableListTests.Add;
- var
- ea: TObservableIntList.TItemEventArgs;
- begin
- fCaptureEvents := true;
- fList.Add(5);
-
- AssertEquals(1, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TObservableIntList.TItemEventArgs, ea));
- AssertTrue (oetAdd = ea.EventType);
- AssertEquals(0, ea.Index);
- AssertEquals(5, ea.Item);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableListTests.Delete;
- var
- ea: TObservableIntList.TItemEventArgs;
- begin
- fList.Add(5);
- fList.Add(10);
- fList.Add(15);
-
- fCaptureEvents := true;
-
- fList.Delete(1);
-
- AssertEquals(1, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TObservableIntList.TItemEventArgs, ea));
- AssertTrue (oetRemove = ea.EventType);
- AssertEquals(1, ea.Index);
- AssertEquals(10, ea.Item);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableListTests.ReplaceItem;
- var
- ea: TObservableIntList.TReplaceEventArgs;
- begin
- fList.Add(5);
- fList.Add(10);
- fList.Add(15);
-
- fCaptureEvents := true;
-
- fList[1] := 99;
-
- AssertEquals(1, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TObservableIntList.TReplaceEventArgs, ea));
- AssertTrue (oetReplace = ea.EventType);
- AssertEquals(1, ea.Index);
- AssertEquals(10, ea.OldItem);
- AssertEquals(99, ea.NewItem);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableListTests.Clear;
- var
- ea: TutlObservableEventArgs;
- begin
- fList.Add(5);
- fList.Add(10);
- fList.Add(15);
-
- fCaptureEvents := true;
-
- fList.Clear;
-
- AssertEquals(1, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TutlObservableEventArgs, ea));
- AssertTrue (oetClear = ea.EventType);
- end;
-
- initialization
- RegisterTest(TutlObservableListTests.Suite);
- end.
|