|
- unit uutlObservableMapTests;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils, TestFramework,
- uutlGenerics, uutlObservable, uutlEvent;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TObservableIntStringMap = specialize TutlObservableMap<Integer, String>;
- TEventArgList = specialize TutlList<IutlEventArgs>;
- TutlObservableMapTests = class(TTestCase)
- private
- fCaptureEvents: Boolean;
- fMap: TObservableIntStringMap;
- 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
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlObservableMapTests////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableMapTests.EventHandler(constref aSender: TObject; constref aEventArgs: IutlEventArgs);
- begin
- if fCaptureEvents then
- fEventArgs.Add(aEventArgs);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableMapTests.SetUp;
- begin
- inherited SetUp;
- fCaptureEvents := false;
- fEventArgs := TEventArgList.Create(true);
- fMap := TObservableIntStringMap.Create(true, true);
- fMap.RegisterEventHandler(@EventHandler);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableMapTests.TearDown;
- begin
- FreeAndNil(fMap);
- FreeAndNil(fEventArgs);
- inherited TearDown;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableMapTests.Add;
- var
- ea: TObservableIntStringMap.TItemEventArgs;
- begin
- fCaptureEvents := true;
- fMap.Add(5, 'Test1');
- fMap.Add(7, 'Test2');
-
- AssertEquals(2, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TObservableIntStringMap.TItemEventArgs, ea));
- AssertTrue (oetAdd = ea.EventType);
- AssertEquals(0, ea.Index);
- AssertEquals(5, ea.Key);
- AssertEquals('Test1', ea.Item);
- AssertTrue (Supports(fEventArgs[1], TObservableIntStringMap.TItemEventArgs, ea));
- AssertTrue (oetAdd = ea.EventType);
- AssertEquals(1, ea.Index);
- AssertEquals(7, ea.Key);
- AssertEquals('Test2', ea.Item);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableMapTests.Delete;
- var
- ea: TObservableIntStringMap.TItemEventArgs;
- begin
- fMap.Add(5, 'Test1');
- fMap.Add(10, 'Test2');
- fMap.Add(15, 'Test3');
-
- fCaptureEvents := true;
-
- fMap.Delete(5);
- fMap.Delete(10);
-
- AssertEquals(2, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TObservableIntStringMap.TItemEventArgs, ea));
- AssertTrue (oetRemove = ea.EventType);
- AssertEquals(0, ea.Index);
- AssertEquals(5, ea.Key);
- AssertEquals('Test1', ea.Item);
- AssertTrue (Supports(fEventArgs[1], TObservableIntStringMap.TItemEventArgs, ea));
- AssertTrue (oetRemove = ea.EventType);
- AssertEquals(0, ea.Index);
- AssertEquals(10, ea.Key);
- AssertEquals('Test2', ea.Item);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableMapTests.ReplaceItem;
- var
- ea: TObservableIntStringMap.TReplaceEventArgs;
- begin
- fMap.Add(5, 'Test1');
- fMap.Add(10, 'Test2');
- fMap.Add(15, 'Test3');
-
- fCaptureEvents := true;
-
- fMap[ 5] := 'Replace1';
- fMap[10] := 'Replace2';
-
- AssertEquals(2, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TObservableIntStringMap.TReplaceEventArgs, ea));
- AssertTrue (oetReplace = ea.EventType);
- AssertEquals(0, ea.Index);
- AssertEquals(5, ea.Key);
- AssertEquals('Test1', ea.OldItem);
- AssertEquals('Replace1', ea.NewItem);
- AssertTrue (Supports(fEventArgs[1], TObservableIntStringMap.TReplaceEventArgs, ea));
- AssertTrue (oetReplace = ea.EventType);
- AssertEquals(1, ea.Index);
- AssertEquals(10, ea.Key);
- AssertEquals('Test2', ea.OldItem);
- AssertEquals('Replace2', ea.NewItem);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlObservableMapTests.Clear;
- var
- ea: TObservableIntStringMap.TReplaceEventArgs;
- begin
- fMap.Add(5, 'Test1');
- fMap.Add(10, 'Test2');
- fMap.Add(15, 'Test3');
-
- fCaptureEvents := true;
-
- fMap.Clear;
-
- AssertEquals(1, fEventArgs.Count);
- AssertTrue (Supports(fEventArgs[0], TutlObservableEventArgs, ea));
- AssertTrue (oetClear = ea.EventType);
- end;
-
- initialization
- RegisterTest(TutlObservableMapTests.Suite);
-
- end.
|