unit uutlHashSetTests; {$mode objfpc}{$H+} interface uses Classes, SysUtils, TestFramework, uutlGenerics; type //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TIntSet = specialize TutlHashSet; TutlHastSetTests = class(TTestCase) private fIntSet: TIntSet; protected procedure SetUp; override; procedure TearDown; override; published procedure Prop_Count; procedure Meth_Add; procedure Meth_Contains; procedure Meth_IndexOf; procedure Meth_Remove; procedure Meth_Delete; end; implementation //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TutlHastSetTests////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.SetUp; begin fIntSet := TIntSet.Create(true); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.TearDown; begin FreeAndNil(fIntSet); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.Prop_Count; begin AssertEquals(0, fIntSet.Count); fIntSet.Add(123); AssertEquals(1, fIntSet.Count); fIntSet.Add(234); AssertEquals(2, fIntSet.Count); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.Meth_Add; begin AssertTrue (fIntSet.Add(123)); AssertFalse(fIntSet.Add(123)); AssertTrue (fIntSet.Add(234)); AssertFalse(fIntSet.Add(234)); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.Meth_Contains; begin AssertFalse(fIntSet.Contains(123)); fIntSet.Add(123); AssertTrue (fIntSet.Contains(123)); AssertFalse(fIntSet.Contains(234)); fIntSet.Add(234); AssertTrue (fIntSet.Contains(234)); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.Meth_IndexOf; begin AssertEquals(-1, fIntSet.IndexOf(234)); fIntSet.Add(234); AssertEquals(0, fIntSet.IndexOf(234)); AssertEquals(-1, fIntSet.IndexOf(345)); fIntSet.Add(345); AssertEquals(0, fIntSet.IndexOf(234)); AssertEquals(1, fIntSet.IndexOf(345)); AssertEquals(-1, fIntSet.IndexOf(123)); fIntSet.Add(123); AssertEquals(0, fIntSet.IndexOf(123)); AssertEquals(1, fIntSet.IndexOf(234)); AssertEquals(2, fIntSet.IndexOf(345)); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.Meth_Remove; begin AssertFalse(fIntSet.Remove(123)); fIntSet.Add(123); AssertTrue(fIntSet.Remove(123)); AssertFalse(fIntSet.Remove(234)); fIntSet.Add(234); AssertTrue(fIntSet.Remove(234)); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlHastSetTests.Meth_Delete; begin fIntSet.Add(123); fIntSet.Delete(0); AssertTrue(fIntSet.IsEmpty); end; initialization RegisterTest(TutlHastSetTests.Suite); end.