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