|
- unit uutlAlgorithmTests;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils, TestFramework,
- uutlComparer;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TutlAlgorithmTest = class(TTestCase)
- published
- procedure BinarySearch;
- procedure QuickSort;
- end;
-
- implementation
-
- uses
- uutlTypes, uutlGenerics, uutlAlgorithm;
-
- type
- TIntArray = specialize TutlArray<Integer>;
- TQuickSort = specialize TutlQuickSort<Integer>;
- TBinarySearch = specialize TutlBinarySearch<Integer>;
- TIntComparer = specialize TutlComparer<Integer>;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlAlgorithmTest/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlAlgorithmTest.BinarySearch;
- var
- arr: TIntArray;
- index: Integer;
- ret: Boolean;
- begin
- SetLength(arr, 10);
- arr[0] := 1;
- arr[1] := 4;
- arr[2] := 5;
- arr[3] := 6;
- arr[4] := 10;
- arr[5] := 11;
- arr[6] := 13;
- arr[7] := 20;
- arr[8] := 21;
- arr[9] := 22;
-
- ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 4, index);
- AssertTrue (ret);
- AssertEquals(1, index);
-
- ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 7, index);
- AssertFalse (ret);
- AssertEquals(4, index);
-
- ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 13, index);
- AssertTrue (ret);
- AssertEquals(6, index);
-
- ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 19, index);
- AssertFalse (ret);
- AssertEquals(7, index);
-
- ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 25, index);
- AssertFalse (ret);
- AssertEquals(10, index);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlAlgorithmTest.QuickSort;
- var
- arr: TIntArray;
- begin
- SetLength(arr, 20);
- arr[ 0] := 134;
- arr[ 1] := 314;
- arr[ 2] := 721;
- arr[ 3] := 672;
- arr[ 4] := 831;
- arr[ 5] := 163;
- arr[ 6] := 126;
- arr[ 7] := 732;
- arr[ 8] := 175;
- arr[ 9] := 274;
- arr[10] := 462;
- arr[11] := 627;
- arr[12] := 633;
- arr[13] := 672;
- arr[14] := 752;
- arr[15] := 367;
- arr[16] := 263;
- arr[17] := 456;
- arr[18] := 678;
- arr[19] := 832;
- TQuickSort.Sort(arr[0], Length(arr), TIntComparer.Create);
- AssertEquals(126, arr[ 0]);
- AssertEquals(134, arr[ 1]);
- AssertEquals(163, arr[ 2]);
- AssertEquals(175, arr[ 3]);
- AssertEquals(263, arr[ 4]);
- AssertEquals(274, arr[ 5]);
- AssertEquals(314, arr[ 6]);
- AssertEquals(367, arr[ 7]);
- AssertEquals(456, arr[ 8]);
- AssertEquals(462, arr[ 9]);
- AssertEquals(627, arr[10]);
- AssertEquals(633, arr[11]);
- AssertEquals(672, arr[12]);
- AssertEquals(672, arr[13]);
- AssertEquals(678, arr[14]);
- AssertEquals(721, arr[15]);
- AssertEquals(732, arr[16]);
- AssertEquals(752, arr[17]);
- AssertEquals(831, arr[18]);
- AssertEquals(832, arr[19]);
- end;
-
- initialization
- RegisterTest(TutlAlgorithmTest.Suite);
- end.
|