|
- unit uutlHandleManagerTests;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils, TestFramework,
- uutlGenerics;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TStringHandleManager = specialize TutlHandleManager<String>;
- TutlHandleManagerTests = class(TTestCase)
- private
- fManager: TStringHandleManager;
-
- public
- procedure SetUp; override;
- procedure TearDown; override;
-
- published
- procedure Add;
- procedure GetValue;
- procedure SetValue;
- procedure ComplexAddAndRemove;
- procedure Enumerate;
- end;
-
- implementation
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlHandleManagerTests////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlHandleManagerTests.SetUp;
- begin
- inherited SetUp;
- fManager := TStringHandleManager.Create(true);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlHandleManagerTests.TearDown;
- begin
- FreeAndNil(fManager);
- inherited TearDown;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlHandleManagerTests.Add;
- var
- h: TutlHandle;
- begin
- h := fManager.Add(0, 0, 'test');
- AssertEquals($0000000100000000, h);
-
- h := fManager.Add(1, 0, 'test');
- AssertEquals($0001000100000001, h);
-
- h := fManager.Add(2, 0, 'test');
- AssertEquals($0002000100000002, h);
-
- h := fManager.Add(0, 1, 'test');
- AssertEquals($0100000100000000, h);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlHandleManagerTests.GetValue;
- var
- h: TutlHandle;
- s: String;
- b: Boolean;
- begin
- h := fManager.Add(0, 0, 'test');
- b := fManager.TryGetValue(h, s);
- AssertTrue (b);
- AssertEquals('test', s);
-
- b := fManager.TryGetValue(123, s);
- AssertFalse(b);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlHandleManagerTests.SetValue;
- var
- b: Boolean;
- s: String;
- begin
- b := fManager.TrySetValue($0000000100000010, 'test');
- AssertTrue(b);
-
- b := fManager.TryGetValue($0000000100000010, s);
- AssertTrue (b);
- AssertEquals('test', s);
-
- b := fManager.TrySetValue($0000000100000010, 'hello');
- AssertTrue(b);
-
- b := fManager.TryGetValue($0000000100000010, s);
- AssertTrue (b);
- AssertEquals('hello', s);
-
- b := fManager.TrySetValue($0000000200000010, 'blubb');
- AssertFalse(b);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlHandleManagerTests.ComplexAddAndRemove;
- var
- h1, h2, h3, h4, h5: TutlHandle;
- b: Boolean;
- begin
- h1 := fManager.Add(0, 0, '1');
- AssertEquals($0000000100000000, h1);
-
- h2 := fManager.Add(0, 0, '2');
- AssertEquals($0000000100000001, h2);
-
- h3 := fManager.Add(0, 0, '3');
- AssertEquals($0000000100000002, h3);
-
- h4 := fManager.Add(0, 0, '4');
- AssertEquals($0000000100000003, h4);
-
- h5 := fManager.Add(0, 0, '5');
- AssertEquals($0000000100000004, h5);
-
- b := fManager.Remove(h2);
- AssertTrue(b);
-
- h2 := fManager.Add(0, 0, '12');
- AssertEquals($0000000200000001, h2);
-
- b := fManager.Remove(h4);
- AssertTrue(b);
-
- b := fManager.Remove(h3);
- AssertTrue(b);
-
- h3 := fManager.Add(0, 0, '13');
- AssertEquals($0000000200000002, h3);
-
- h4 := fManager.Add(0, 0, '14');
- AssertEquals($0000000200000003, h4);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlHandleManagerTests.Enumerate;
- var
- h, h1, h2, h3: TutlHandle;
- b: Boolean;
- e: TStringHandleManager.IEnumerator;
- begin
- e := fManager.GetEnumerator;
-
- h1 := fManager.Add(0, 0, '1');
- h2 := fManager.Add(0, 0, '2');
- h3 := fManager.Add(0, 0, '3');
-
- b := e.MoveNext;
- AssertTrue(b);
- h := e.Current;
- AssertTrue(h1 = h);
-
- b := e.MoveNext;
- AssertTrue(b);
- h := e.Current;
- AssertTrue(h2 = h);
-
- b := e.MoveNext;
- AssertTrue(b);
- h := e.Current;
- AssertTrue(h3 = h);
-
- b := e.MoveNext;
- AssertFalse(b);
- end;
-
- initialization
- RegisterTest(TutlHandleManagerTests.Suite);
- end.
|